Hallo zusammen,
ich habe heute meine 2. Waage endlich mal finalisiert und unterm Volk in Betrieb genommen. Eigentlich läuft der Knoten schon seit 3 Tagen, aber ich habe mit @Andreas (Danke) den Code noch Hiveeyes-kompatibel gemacht, um die Daten auch hier auf die Plattform schicken zu können. Zusätzlich zu diesem Artikel könnt Ihr mehr Details auch bei mir unter ESP8266 Stockwaage – erste Eindrücke nachlesen.
Hier sind die Daten zu sehen:
Die Hardware ist sehr ähnlich zu Clemens Huzzah basiertem Setup, (ESP8266, HX711, DS18B20) jedoch gibt es zwei wesentliche Unterschiede.
1. Firmware auf Basis von Homie-esp8266
Die Firmware basiert auf dem Homie-esp8266 Framework, dass einen sehr durchdachten Ansatz für allerlei IOT-Anbindung und Management der Sensorknoten mitbringt, so dass ich dies auch schon in der Heim-Automatisierung einsetze, unter anderem habe ich mir damit eine Automatisierung/Überwachung meines Honigauftau-Schranks realisiert.
Ihr findet sie im Hiveeyes GitHub Repository unter node-wifi-mqtt-homie (für die Variante mit Stromanschluss) und unter node-wifi-mqtt-homie-battery als Ultra-Low Power Variante für den Akku-/Batteriebetrieb. Unter node-wifi-mqtt-homie README findet Ihr noch eine entsprechende Dokumentation dazu.
Weitere Vorteile des Homie-Frameworks sind u.a.:
- Telemetrie via MQTT
- Over the Air Updates der Firmware via MQTT
- Over the Air Updates der Konfiguration via MQTT
- HandyApp/WebApp und config-File als Konfigurationsmöglichkeit
- Existierende Management Anwendungen Homie-OTA, openHAB und check_mk aus dem Open Source Umfeld:
Screenshot Homie-OTA
Screenshots der openHAB Einbindung
Screenshot der openHAB Einbindung des Honigauftauschranks
Screenshots der check_
mk Einbindung
2. ESP-07 statt Feather Huzzah
Die Entscheidung für den ESP-07 liegt vor allem am externen Antennenanschluss der eine deutlich bessere Reichweite ermöglicht. Selbst bei meinen 10m die ich im Garten zu überbrücken habe, durfte ich schon Erfahrungen bei meiner ersten Stockwaage machen.
Ihr könnt Euch das Platinenlayout herunterladen. Die Platine an sich ist kein Muss, mit minimalen Code-Anpassungen (GPIO-PINs) wird es auch auf dem Board von Clemens laufen oder auf einem Wemos D1 mini.
3. Anbindung an Hiveeyes
Die Homie MQTT-Topic Logik ist bzw. war nicht ganz kompatibel mit den Hiveeyes/Kotori Anforderungen.
Hiveeyes/Kotori erwartet als Topic folgendes Schema:
hiveeyes/<ziemlich lange UID>/<standort>/<node>/data.json
Dies führt zu zwei Problemen:
- Die ESP Libraries sind auf Größe optimiert. Die lange UID bläht den Base Topic über die von Homie und der async-mqtt Library vorgesehene Größe auf. Lösung: Keine lange UID verwenden.
- Homie erwartet einen Topic-Aufbau im Format:
<base>/<node>/<sensor>/<sensorvalue>
Also nach <node>
(Im Sinne eines IP Hosts/ESPs) noch 2 Subtopics <sensor>/<sensorvalue>.
Daher hat Andreas einen Workaround geschaffen, dass der Topic im Format:
hiveeyes/<kurze UID>/<standort>/<node>/data/__json__
angegeben werden kann.
Somit ist die Firmware voll Hiveeyes-komptibel, als Broker kann direkt swarm.hiveeyes.org angegeben werden.
3.1 Indirekte Anbindung an Hiveeyes
3.1.1 Übersetzung mit mqttwarn
Da das Base-Topic homie/
bei mir schon zigfach in der Heimautomatisierung genutzt wird, wollte ich meine Stockwaagen nicht auf hiveeyes/
umstellen, da ich insbesondere die Homie-OTA Funktionalität verloren hätte.
Daher habe ich mir einen Übersetzer auf Basis von mqttwarn gebaut, der auf den entsprechenden Topic unterhalb von homie/
reagiert und nach hiveeyes/
übersetzt:
[config:mqtt]
hostname = 'localhost'
port = 1883
qos = 0
retain = False
username = "user"
password = "passt"
targets = {
'hiveeyes-beute-2' : [ 'hiveeyes/666/garten/beute-2/data/__json__' ],
'hiveeyes-beute-3' : [ 'hiveeyes/666/garten/beute-3/data/__json__' ],
}
[beute-2]
topic = homie/beute-2/data/__json__
targets = mqtt:hiveeyes-beute-2, http:http-beute-2
[beute-3]
topic = homie/beute-3/data/__json__
targets = mqtt:hiveeyes-beute-3, http:http-beute-3
Zusätzlich überträgt http:http-beute-3
die Werte auch noch in ein lokales dygraphs.
3.1.2 Übertragung via mosquitto Bridge
Das in 3.1.1 übersetzte Topic könnte man statt an localhost
natürlich auch direkt an swarm.hiveeyes.org übertragen, jedoch habe ich den Weg über den lokalen MQTT Broker gewählt, um auch die übersetzten Daten lokal vorrätig zu haben. Zur finalen Übertragung an swarm.hiveeys.org habe ich daher eine Mosquitoo MQTT Bridge gewählt.
Diese ist simpel zu realisieren, hier finden sich die entsprechenden Konfigurationsdirektiven für die /etc/mosquitto/conf.d/bridge.conf
:
connection hiveeyes
address swarm.hiveeyes.org:8883
bridge_cafile /etc/letsencrypt/RootCA-lets-encrypt
topic hiveeyes/# in
topic hiveeyes/UID/+/+/data/__json__ out
clientid finanzamt
start_type automatic
try_private true
remote_user user@email.com
remote_password very_secure_password