Mit der neuen Firmware 2.3.1(150) können nun auch LoRaWan, NB-IOT und andere externe Sensoren eingebunden werden.
Voraussetzung ist jedoch, dass diese an einen MQTT-Broker ihre Sensordaten übergeben, OpenSprinkler kann diese dann als Sensordaten abonnieren.
Der Sensor wird dabei mit seinem “Topic” und einem Text/JSON Filter eingebunden. Die Bewässerungssteuerung kann diesen Wert dann verwenden.
So funktioniert es:
- LoRa WAN Sensoren werden im Umkreis eines LoRa WAN Hubs platziert, je nach Ausführung bis zu 10 km Reichweite. Der LoRa WAN Hub, auch Gateway genannt, betreiben Sie selber und verbinden diesen mit Ihrem Netzwerk
- NB-IoT Sensoren werden über das Anbieterportal eingebunden. Da NB-IoT über das Mobilfunknetz geht, kann der Sensor an einem beliebigen Ort stehen – Empfang vorausgesetzt.
- Im Gateway oder Anbieterportal aktivieren Sie die MQTT Funktion und exportieren damit die Sensordaten. Je nach Ausführung ist eventuell eine weitere Umsetzung mit einem IoT Verwaltungstool wie z.B. ChirpStack notwendig, welcher die “nackten” Sensordaten in auswertbare Daten konvertiert.
- In OpenSprinkler verbinden Sie diesen über die MQTT Optionen und erstellen dann einen neuen Sensor vom Typ “MQTT Subscription”.
- Im Sensor tragen Sie die Subscription Informationen sowie den Datenfilter ein.
- Fertig! Sobald Daten empfangen werden, werden die Werte dargestellt und gespeichert.
Sensorkonfiguration im Detail
Rot markiert sind die beiden MQTT Sensoren. Die anderen Sensoren sind über das Analog Sensorboard eingebunden
Sensor bearbeiten
Mit dem Klick auf “Sensor hinzufügen” bzw auf den Namen eines bestehenden Sensors kommt man folgenden Editor:
Dieses Beispiel zeigt eine CHIRPSTACK Integration der MQTT Daten. Der Aufbau ist wie folgt definiert:
application/<application-id>/device/<deviceid>/event/up
Am besten schaut man sich mit einem Tool, z.B. dem MQTT Explorer, die möglichen Werte an. Gerade für Anfänger ist es oft verwirrend, dass erst mal nichts im MQTT Explorer angezeigt wird. Dadurch, dass die Sensordaten nur alle 10 Minuten (je nach Konfiguration) eintreffen, muss man den MQTT Explorer einfach mal eine Weile stehen lassen.
Für das Feld MQTT Filter geben Sie den Namen des Feldes an, welches ausgelesen werden soll. Im CHIRPSTACK kann man unter “Device Profiles” / “Measurements” die ausgelesenen Felder erkennen. Falls hier nichts erscheint, müssen Sie zuerst ein Script im Reiter “CODEC” hinterlegen, hier helfen die Vorlagen oder man fragt den Hersteller des Sensors.
Warum LoRaWAN bzw. NB-IoT und nicht W-LAN oder Bluetooth?
Das größte Problem mit den Sensoren ist, sie benötigen Strom. Wenn man ein Stromkabel verlegen kann, dann kann man in der Regel auch ein Datenkabel verlegen. Aber wenn dies nicht möglich ist, wie verbindet man diese Sensoren?
Um diese Frage zu beantworten, haben wir einige Versuche unternommen und stellen hier die Ergebnisse vor.
- Bluetooth fällt aus, die Reichweite ist einfach zu gering (außer natürlich die Pflanzen stehen innerhalb 10m Umkreis. Siehe hier)
- W-LAN kann zwar verwendet werden, aber der Stromverbrauch ist so groß, dass man entweder alle 4 Wochen die Batterien wechseln muss oder man riesige Akkus braucht. Zwar kann man mit Fotovoltaik dies ebenfalls verbessern, aber dann hat man pro Sensor bereits hohe Investitionskosten. Dazu kommt noch, dass bei Installationen im Freien ein gewisses Risiko für Sachbeschädigung gibt.
- LoRaWAN ist hier besser geeignet, da die Akkus langlebig sind und oft bis zu 10 Jahre durchhalten. Die Reichweite im Freien kann bis zu 10 km (freies Feld, urbane Gegenden ca. 2 km) betragen. Da LoRaWAN lizenzfrei betrieben werden kann, entstehen nur Einmalkosten.
- NB-IoT ist ebenfalls sehr gut geeignet, wenn eine entsprechende Mobilfunkabdeckung besteht. Dadurch ist die Reichweite quasi “unendlich”, da die Sensordaten an einen Cloud-Dienst geliefert werden. Hierbei entstehen jedoch laufende Kosten
Realisierung und Test
Für unseren Test haben wir einen Milesight UG65-868M als LoRaWAN Gateway, sowie einen Dragino LSE01 und einen Milesight EM-500 SMTC Bodenfeuchtesensoren verwendet. Da der UG65 mit dem neuesten Update auch einen MQTT Broker aktivieren kann (es muss ChirpStack-common aktiviert werden), kann dieser als eigenständiger MQTT Server verbunden werden.
Beide Sensoren können nicht nur die Bodenfeuchtigkeit, sondern auch die Bodentemperatur sowie die dielektrische Leitfähigkeit (Permittivität). Gerade der letzte Wert ist für den Agrarbereich sehr wichtig, da man damit auch den Düngergehalt des Bodens bestimmen kann.
Der Milesight UG65 hat die Stromanschlüsse hinten und kann über POE betrieben werden. Außerdem verfügt er über WLAN und kann sogar als Accesspoint dienen. Optional sind auch andere Antennen und ein LTE Modul verfügbar.
Der Milesight EM-500 SMTC ist mehr als nur ein Bodenfeuchtigkeitssensor. Er kann die Bodentemperatur und die Permittivität messen. Er besteht aus zwei Komponenten, die mit einem Kabel verbunden sind. Die Oberirdische ist der Sender, die Unterirdische der eigentliche Sensor. Eine Masthalterung ist dabei.
Der Dragino LSE01 ist ähnlich dem EM500, auch er kann Bodenfeuchtigkeit, Temperatur und Permittivität messen. Sämtliche Dragino Sensoren scheinen sich hierbei ähnlich zu sein, alle Produkte haben denselben Sender.
ChirpStack
Bei der Einrichtung von Chirpstack ist es wichtig, dass man erst einmal Profile für die Sensoren einrichtet (Punkt “Device Profiles”). Hier erfasst man die Sensoren mit ihren allgemeinen Gerätedaten. Mit der Funktion “Select device-profile template” kann man die Vorgaben auswählen. Diese ganze Konfiguration ist notwendig, damit eben die binären Sensordaten in lesbare Werte umgewandelt werden können. Daher ist die Funktion “Codec” auch die wichtigste Funktion hier.
Allerdings habe ich etwas gebraucht um zu erkennen, dass diese Codec-Vorgaben veraltet waren. Die aktuellen Codecs findet man hier:
Milesight: https://github.com/Milesight-IoT/SensorDecoders
Dragino: https://github.com/dragino/dragino-end-node-decoder
Dazu einfach den richtigen Sensor wählen, die Datei für ChirpStack herunterladen, mit einem Editor öffnen und ins Codec-Feld einfügen.
Als nächstes erstellt man eine “Application” und trägt die Sensoren unter “Devices” ein. Hier ist nun auch wichtig, die JOIN-Daten der Sensoren zu kennen, diese befinden sich meistens auf den Geräten aufgedruckt, auf dem Typenschild, im Geräte selber oder in den Begleitpapieren.
Wenn jetzt alles eingerichtet ist, so muss man das JOIN an den Sensoren auslösen. Dieser Vorgang verbindet erst den Sensor mit ihrem Gateway – sonst könnte ja jeder ihre Sensoren steuern. Entweder geht das mit einer APP (bei Milesight gibt es die “Toolbox” APP) oder man öffnet das Gerät und drückt eine spezielle JOIN Taste. Manchmal muss auch nur die Batterie kurz abziehen und anstecken, dann wird auch der JOIN Vorgang ausgelöst.
Jetzt sollten in ChirpStack auch die Daten ankommen. Aber bitte Geduld, die Sensoren senden nur alle 10 Minuten ein Signal, das kann also dauern.
MQTT
Chirpstack hat einen eigenen MQTT Broker, alternativ kann man aber auch einen eigenen MQTT verwenden. Damit dieser die Daten des Chirpstack MQTT broker erhält, habe ich eine MQTT bridge eingerichtet und alles weitergeleitet. Das notwendige Programm dafür hat den Namen “Mosquitto”
Die forwarder.conf im /etc/mosquitto/conf.d Ordner sieht bei mir so aus:
connection bridge-01
address 192.168.0.50:1884
topic # out 0
topic # in 0
wobei 192.168.0.50:1884 die IP und Port des Chirpstack MQTT brokers sind
Wenn nun alles eingerichtet, sollte wie oben dargestellt die Werte automatisch im OpenSprinkler erscheinen. Konfigurieren Sie nun eine Programmanpassung für diesen Sensor, z.B. so:
Damit wird die Bewässerung zwischen 10% bis 20% Bodenfeuchtigkeit gehalten. Die Bewässerungsanpassung ist dabei von 0 bis 200%
Leider fehlt bei der Firmware 2.3.1 (164) bei Auswahl von “MQTT Subscription” die Felder MQTT Topic/MQTT Filter/Unit 🙁
Auch der Wechsel des Browsers hat daran nichts geändert. Ist das ein bekannter Bug?
Ja, das passiert, wenn man die “original” Webseite des Herstellers verwendet, diese hinkt der Entwicklung leider hinterher. Daher wie in der Anleitung beschrieben /su entsprechende anpassen.
Im Browser dann mehrfach Strg+F5 drücken (bzw neu laden), damit die Seite aktualisiert wird. Hier nochmal der Link:
Danke! Funktioniert super und so ist eine Einbindung meiner Ecowitt Wetterstation über Homeassistant => Mosquitto möglich.