Nachdem sich der aus dem Powerline-Disaster entstandene Blutdruck wieder normalisiert hat, kommen wir zur Mosquitto-Server. MQTT ist ein offenes Protokoll, das sehr gut für M2M geeignet ist. Auch bei hohen Latenzen können Telemetriedaten vernünftig übertragen werden.
Der Mosquitto ist relativ einfach aufzusetzen. Hier ist ein vernünftiges Howto. Worauf zu achten ist, ist die Verwendung von Logins und die Absicherung via TLS. Es ist ratsam, hierfür die Zertifikate von Letsencrypt zu verwenden. Ist alles aufgesetzt, lässt sich die Funktion prüfen, indem man einfach mal alle Topics abonniert:
mosquitto_sub -u <user> -P <secret> -t "#"
Mit Hilfe von mosquitto_pub lässt sich eine Meldung publizieren. Man gibt in einer zweiten shell ein:
mosquitto_pub -h 127.0.0.1 -p 8883 -u <user> -P <secret> -t home/garage/sonoff_kanal1 -m ein
mosquitto_sub sollte nun ein einfaches „ein“ in einer neuen Zeile ausgeben. Damit wissen wir, dass der Server wie gewünscht funktioniert. Jetzt muss er noch mit Standortdaten gefüttert werden, damit HA bestimmen kann, wer sich wo befindet.
Hierzu verwende ich Owntracks. Die App ist sowohl für Android als auch für IOS erhältlich und open source – was bei personenbezogenen Daten wie Standorten ein wichtiges Merkmal ist.
Die Einrichtung verläuft relativ einfach. Unter „Einstellungen“ erstellt man eine „MQTT Privat“ Verbindung, verwendet das im Server hinterlegte Login und aktiviert TLS. Erfahrungsgemäß sind in der Standortbestimmung Verzögerungen von ein paar Minuten möglich. Das lässt sich per Einstellung in Owntracks tweaken – aber da wir jetzt keine sehr schnelle Reaktion brauchen und auch die Batterie des Telefons schonen wollen, bleiben wir da sehr zurückhaltend.
Jetzt bringen wir HA noch bei, diese Daten zu verwenden. Zum Einen müssen wir HA den Mosquitto bekannt machen:
mqtt: broker: 127.0.0.1 port: 8883 username: <user> password: <secret>
Zum Anderen muss HA wissen, wie er mit den Daten umzugehen hat:
device_tracker: - platform: owntracks mqtt_topic: "owntracks/#" max_gps_accuracy: 200 waypoints: True
Um nun festzustellen, ob sich jemand vom Haus entfernt, verwendet man Zoning. Praktischerweise hat HA die Heimzone schon fertig eingerichtet. Die ist aber in der Grundkonfiguration schon recht groß und schließt in meinem Fall den Supermarkt mit ein – den man aufgrund von Großeinkäufen von SWMBO auch öfters mal mit dem Auto besucht. Das ist unpraktisch, weil dieser Punkt schon als „nicht daheim“ registriert werden soll. Also macht man die Zone manuell etwas kleiner.
zone: - name: work latitude: <lat> longitude: <lon> radius: 150 icon: mdi:worker - name: Home latitude: <lat> longitude: <lon> radius: 150 icon: mdi:account-multiple
Wird die Heimzone manuell konfiguriert, überschreibt sie die automatisch angelegte. Jetzt haben wir eine Standortplattform, auf deren Basis Bewegungen als Trigger oder Conditions verwendet werden können.
Im nächsten Kapitel schauen wir uns die Sonoff-Relais an. Sie brauchen eine alternative Software, die mqtt spricht.