Nachdem wir uns im letzten Teil mit TasmoAdmin auseinandergesetzt haben, ist es nun an der Zeit, eine Steuerungsmöglichkeit für die Tasmota-Geräte zu implementieren. Hierfür bietet sich das Message Queuing Telemetry Transport Protokoll, kurz MQTT, an. Dabei handelt es sich um ein Protokoll zur Übermittlung von Nachrichten. In die Tiefen dieses Protokolls bin ich noch nicht vorgedrungen, aber für eine einfache An-Aus-Schaltung dürfte es genügen.
Die Idee beim MQTT ist vereinfacht ausgedrückt folgende: Es gibt einen Server (bei MQTT wird der „Broker“ genannt) und mehrere Clients. Die Clients senden Nachrichten mit einem sogenannten Topic an den Server. Diese Topics sind hierarchisch eingestuft, z.B. /home/Esszimmer/Licht/Decke/Power; die Nachricht könnte dann beispielsweise „ON“ sein. Clients, die dieses Topic abonniert haben, reagieren auf die Nachricht – im hier gezeigten Fall würde also die Deckenlampe im Esszimmer angehen.
Für die Nachrichten gibt es verschiedene Quality of Service-Stufen:
- At most Once: Die Nachricht wird einmal gesendet; hat ein Client in dem Moment (aus welchen Gründen auch immer) keine Verbindung, erhält er sie nicht.
- At least Once: Die Nachricht wird solange gesendet, bis der Empfang bestätigt wird; evtl. kommt sie auch öfter als einmal an.
- Exactly Once: Es wird sichergestellt, dass die Nachricht – auch bei Verbindungsabbrüchen – genau einmal ankommt.
Zusätzlich kann noch ein Retain-Flag gesetzt werden. Dann speichert der Broker die Nachricht, und Clients, die das Topic neu abonnieren, erhalten sie.
So viel zur Theorie, nun zum Home Assistant: Es gibt einen MQTT-Broker als AddOn: Mosquitto. Den installieren wir uns jetzt.
[singlepic id=424]
Wir erhalten eine Nachricht, dass es neue Geräte gibt – da gucken wir gleich mal nach:
[singlepic id=425]
Da ist ein MQTT-Broker aufgetaucht, den wir jetzt konfigurieren:
[singlepic id=426]
Vor dem Absenden setzen wir den Haken.
So einfach ist das aber leider doch nicht: Der Broker hat die Einstellung, dass anonyme Logins nicht zulässig sind. Ein Blick in die Doku verrät uns aber, was wir machen können: Home Assistant bietet eine Benutzerverwaltung. Die lässt sich nutzen, um verschiedenen Benutzern unterschiedliche Steuerungsmöglichkeiten zu geben (die Kinder sollen zum Beispiel in ihren Zimmern das Licht an- und ausschalten, aber nicht im Schlafzimmer die Heizung aufdrehen), ist für Anwesenheitserkennung interessant (wenn die Frau nach Hause kommt, soll das Licht angehen, wenn der Mann nach Hause kommt, das Bier serviert werden oder für die Gestaltung der Weboberfläche. Mit diesen Themen werde ich mich aber später genauer befassen. Die in Home Assistant vorhandenen Benutzer können ohne weitere Umstände in Mosquitto verwendet werden.
Wir gehen in die Einstellungen auf den Punkt Benutzer und klicken rechts unten auf den orangefarbenen Kreis mit dem Plus-Zeichen:
[singlepic id=427]
Ich wähle als Benutzernamen tasmota und ein supergeheimes Kennwort. Dieser Benutzer soll definitiv kein Administrator sein. Abschließend klicke ich auf BENUTZERKONTO ANLEGEN.
Dann geht’s in die Konfiguration von Mosquitto. Hier muss der logins-Block etwas angepasst werden:
[singlepic id=428]
Wenn wir das jetzt speichern und den Broker neu starten, sollten wir keine Probleme bekommen.
Dass wir schon irgendwelche Geräte finden, ist aber unwahrscheinlich: Es genügt nicht, einen Broker im Netz zu haben, die Geräte müssen ihn auch kennen. Dafür öffnen wir TasmoAdmin und gehen in die Geräteübersicht:
[singlepic id=429]
Hier klicken wir bei dem Gerät, das wir konfigurieren wollen, rechts auf das Symbol mit den Zahnrädern; in der daraufhin angezeigten Seite wechseln wir auf den Reiter MQTT und tragen die IP-Adresse unseres MQTT-Brokers sowie den Benutzernamen und das Passwort ein:
[singlepic id=430]
Dann scrollen wir ganz nach unten und klicken auf Speichern.
In der Übersichtsliste geben wir noch einen Befehl ein; dafür klicken wir auf die Schaltfläche Befehl im unteren Bereich:
[singlepic id=431]
setoption19 On
Der sorgt dafür, dass das Gerät automatisch von Home Assistant erkannt wird. Bevor wir ihn absenden, setzen wir noch den Haken bei den Geräten, für die er ausgeführt werden soll.
Wenn wir nun auf die Integrationsübersicht gehen, sollten wir feststellen, dass sich beim MQTT-Broker etwas getan hat:
[singlepic id=432]
Neugierig wie ich bin, sehe ich mir diese eine Entität an:
[singlepic id=433]
Läuft! An der Namensgebung muss ich noch arbeiten, aber es funktioniert schonmal. Wenn wir die Entität jetzt anklicken, erhalten wir einen kleinen Schalter, über den wir das Gerät ein- und ausschalten können:
[singlepic id=434]
Das reicht für den ersten Test – ich habe noch ein paar Geräte, die ich hinzufügen muss. Im nächsten Teil binde ich ein Smart Lock ein.