die-eggerts@SmartHome – Teil 15: Mosquitto

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.

15-01_mosquitto

Wir erhalten eine Nachricht, dass es neue Geräte gibt – da gucken wir gleich mal nach:

15-02_newdevice

Da ist ein MQTT-Broker aufgetaucht, den wir jetzt konfigurieren:

15-03_ok

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:

15-04_benutzer

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:

15-05_configuration

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:

15-06_tasmoadmin

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:

15-07_configtasmoadmin

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:

15-08_command

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:

15-09_integrations

Neugierig wie ich bin, sehe ich mir diese eine Entität an:

15-10_entity

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:

15-11_entityswitch

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.

Copyright © 2020. Powered by WordPress & Romangie Theme.