Die Sondenhardware läuft auf Arduino-kompatiblen Mikrocontrollern. Die Firmware, meist Sketch genannt, liest die Sensoren in festen Abständen aus, formatiert die Ergebnisse als JSON und stellt sie im Netzwerk bereit, damit die Website und andere Clients Live-Daten ohne serielles Kabel abrufen können.
Aufgaben des Sketches
- Sensorbusse und das lokale 16×2-LCD für die Anzeige vor Ort initialisieren.
- Jede DHT22-Sonde auslesen, mit Wiederholversuchen bei vorübergehenden Busfehlern.
- Einen Mittelwert über alle funktionierenden Sonden als schnellen Übersichtswert im JSON berechnen.
- HTTP-Anfragen über das Ethernet-Shield mit einem kompakten JSON-Dokument beantworten.
- Optional Fehler seriell protokollieren, um vor Ort zu debuggen.
Typischer JSON-Aufbau
Clients erwarten auf oberster Ebene ein temp-Objekt mit numerischen Schlüsseln für jede Sonde sowie avg. Die Luftfeuchtigkeit steht bei jeder Sonde neben der Temperatur. Stabile Schlüssel sind wichtiger als hübsche Formatierung: Die Zuordnungen im Dashboard verweisen direkt auf diese Schlüssel.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 },
"1": { "f": 36.8, "c": 2.7, "h": 43.5 },
"avg": { "f": 37.5, "c": 3.1, "h": 42.2 }
}
} Für Push-Ingest lässt sich dasselbe Sondenobjekt an /api/ingest/<key> senden. Die optionalen Felder battery (oder battery_pct) und rssi auf oberster Ebene aktualisieren den Gerätezustand auf der Devices-Seite, ohne dass zusätzliche Sensorschlüssel nötig sind.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 }
},
"battery": 87,
"rssi": -62
} Push-Ingest vom Ethernet-Shield
Der W5100-Stack auf einem Uno beherrscht kein TLS und kann daher nicht direkt an https://probeharbor.dev POSTen. Nutze ethernet_dht22_ingest, um das klassische temp-JSON per HTTP zu senden (DHT22 an A4/A5, optional JSON auf Port 80 zum Abrufen im LAN). Lass push_https_forward.py auf einem Pi, NAS oder Laptop laufen, damit diese POSTs ProbeHarbor über HTTPS erreichen. ESP32-Beispiele mit WLAN und TLS findest du in sketches/.
Verdrahtungsanleitungen
Der Aufbau besteht aus einem Arduino Uno, einem W5100-Ethernet-Shield, einem Steckbrett, einem Kontrastpotentiometer, einem 16×2-LCD und zwei DHT22-Sensoren. Drei begleitende Seiten beschreiben Schaltpläne und Pinbelegung im Detail:
Arduino-Verdrahtung im Überblick
Wie USB-Versorgung, Breadboard, Kontrastpoti, LCD, Sensoren und Ethernet-Shield zusammenspielen.
Arduino-Verdrahtung auf Pin-Ebene
Pin-für-Pin-Plan passend zum LiquidCrystal-Konstruktor und den Sensor-Datenleitungen in der Firmware.
DHT22-Sensoren und LCD-Anzeige
Warum das LCD beide Fühler getrennt anzeigt, während die JSON-Feeds beide an die Website liefern.
Wahl des Netzwerk-Stacks
Diese Revision nutzt ein Ethernet-Shield über SPI. Der Sketch übernimmt DHCP, Wiederverbindungsschleifen und die JSON-Ausgabe, während das LCD weiter die Live-Werte der Sonden zeigt. Ist TLS für den MCU zu schwer, kann ein Python-Relay HTTPS terminieren: siehe Python-Skripte und Feeds. Für Push-Ingest vom selben Shield siehe ethernet_dht22_ingest.
Entwicklungsablauf
Sketches werden in der Arduino IDE oder in PlatformIO bearbeitet, per USB geflasht und dann anhand der seriellen Ausgabe geprüft, bevor die Platine im überwachten Raum montiert wird. Prüfe den JSON-Aufbau mit curl, bevor du die Feed-URL im Dashboard der Website einträgst.
Anpassbare Beispiele für DS18B20, MAX31855, MAX6675 und Uno + Ethernet liegen in diesem Repo unter sketches/. Der Raspberry Pi Pico W / Pico 2 W nutzt dasselbe Ingest-JSON mit CircuitPython oder MicroPython. Vollständige Ethernet-+-DHT-+-LCD-Firmware: arduino-network-json-temperature-sever.
Tipps für einen zuverlässigen Betrieb
- Watchdog-Resets beheben seltene Netzwerkhänger, ohne dass du auf die Leiter musst.
- Trenne bei langen Kabelwegen das Störrauschen der Sensorversorgung von der MCU-Versorgung.
- Versioniere dein JSON-Schema in der Dokumentation, wenn du Felder hinzufügst.
- Dokumentiere, welche GPIO-Pins zu welchen Sondenbeschriftungen gehören; siehe die Anleitung zur Pinbelegung.
Häufige Fragen
Wo finde ich Beispiel-Sketches für Arduino?
Im GitHub-Repo von probeharbor unter sketches/ sowie in den Arduino-Anleitungen unter About. Die ESP32-Beispiele senden direkt per HTTPS-POST. Uno + W5100-Ethernet nutzt ethernet_dht22_ingest (klassisches temp-JSON an A4/A5) plus ein HTTP→HTTPS-Relay im LAN: Das Shield kann keine TLS-Verbindung zu probeharbor.dev aufbauen.