Schlagwort: Smart-Home

  • MQTT und Mosquitto

    In meinem letzten Beitrag zum PiNAS hatte hatte ich kurz vor Ende berichtet, dass ich mich noch um den MQTT Broker Mosquitto kümmern möchte.

    Was ist den MQTT?

    MQTT oder auch Message Queueing Telemetry Transport ist ein Netzwerk Protokoll (also die Art und Weise wie Geräte im Netzwerk miteinander sprechen) welches dafür gemacht wurde, dass Sensoren und Aktoren Daten austauschen können.

    Und dieser MQTT-Broker ist wie eine Art Öffentlicher Briefkasten. Nachrichten mit einem Bestimmten Betreff, dies wird in diesem Kontext Topic genannt, landen in diesem Briefkasten. Geräte die einem bestimmten Topic zuhören, können nun aus diesen Nachrichten Sensordaten (z.B. eine Temperatur) oder Aktor Befehle (z.B. Schalte Lampe ein) Entgegennehmen bzw. geben.

    Der Wikipedia Artikel hierzu ist ganz gut gemacht und bei weiteren Interesse, kannst du dir den zu Gemüte führen.

    Und wofür brauche ich diesen Broker nun genau?

    Ich hatte das ja schon angedeutet, dass es hier um Sensor Daten oder Aktor Befehle geht 😄. Also dürfte das im Kontext eines Smart Home schon irgendwie klar sein.

    Konkret brauch ich es für eine Hand voll Steckdosen die bei mir im WLAN hängen. Genauer gesagt geht es um diese hier
    https://www.reichelt.de/de/de/shop/produkt/wlan_steckdosen_schalter-258857

    Das coole an diesen WLAN-Steckdosen ist, es wird keine spezielle APP bzw. proprietärer Dienst benötigt um diese anzusprechen. Für mich ein wichtiges Kriterium. Außerdem sind diese Steckdosen irre einfach zu bedienen.

    Im zweifel sogar über einen einfachen Webbrowser 😁
    und da diese easy als MQTT Gerät eingerichtet werden können, sind diese auch ganz einfach in Home Assitant zu integrieren.

    Der MQTT Broker

    Um einen Broker – also der Briefkasten – auf zu setzten, habe ich bisher einfach den Mosquitto als Add On in Home Assitant installiert. Da ich HA aber als Docker Container laufen lasse, fehlt nun der Add On Store.

    Alles kein Problem, denn Mosquitto kann auch einfach so unter Debian/DietPi installiert werden.

    apt-get install mosquitto

    Der ist sogar in den Debian Standard Paketen enthalten.

    Nachdem dieser dann installiert wurde, muss er noch konfiguriert werden.
    Das hat tatsächlich ein Moment gedauert, bis ich das begriffen hatte, wie das zu machen ist, aber im Endeffekt ganz einfach.

    Unter /etc/mosquitto ist sind Config Files für den Broker zu finden. Da ist schon das wichtigste korrekt eingetragen. Wenn der Broker allerdings auf etwas anderes als localhost:1883 hören soll, muss zwingend ein Benutzer mit Passwort angelegt werden.

    Hierfür gibt es das Hilfsprogramm ‚mosquitto_passwd‘.

    $ mosquitto_passwd -b -c /etc/mosquitto/passwd.txt michael SuperG3h31me§P4§§w0rt

    Diese txt File sieht von innen dann so aus

    michael:$7$101$0ea9RlPY9kE9Ekgq$ptVCyI29XuEWjZtAuoXlebvY2+cGEwu1YVZC5c66OtVxKHngzNOee/C951hS8GeX/SDByaKMkjnAaXYWI0994w==

    Das Passwort steht da nicht im Klartext sondern als Hash-Wert.

    Den Pfad zu dieser Datei muss dann noch in der mosquitto.conf eingetragen werden. Einfach an mitten rein diesen Eintrag machen

    password_file /etc/mosquitto/passwd.txt

    Was an dieser Stelle noch zu beachten ist, dass dieses File dem System user gehören muss, der Dienst ausführt. In der Regel heißt dieser user einfach mosquitto.

    $ chown mosquitto:mosquitto /etc/mosquitto/passwd.txt

    Zuletzt den Dienst neu starten und schon erkennt Home Assistant den Broker 😋

    $ systemctl restart mosquitto.service

    War’s das?

    Die WLAN Steckdose muss noch konfiguriert werden. Hierfür muss man sich mit dem WLAN Netzwerk der Steckdose verbinden und gibt dann in einem Webbrowser http://192.168.4.1 ein.

    Über die Weboberfläche wird dann der Zugang zum heimischen WLAN eingerichtet. Nachdem sich die Steckdose dann neu gestartet hat, muss man herausfinden, welche IP-Adresse sie bekommen hat. Das geht zum Beispiel über den Router oder man verwendet nmap

    nmap -sn 192.168.178.0/24

    Die IP-Adresse muss ggf. angepasst werden, wenn die bei dir anders ist.

    Unter Sonstige Konfiguration muss MQTT aktiviert werden und die WEMO BELKON Emulation deaktivert werden.
    Unter Konfiguration MQTT muss

    • die IP-Adresse vom MQTT-Broker
    • dann der Benutzername plus das Supergeheimepasswort und zuletzt
    • noch ein Topic

    vergeben werden. Hierbei ist zu beachten, dass nicht alle Steckdosen das selbe Topic bekommen. Esseiden du möchtest, dass mit einem Knopfdruck alle auf einmal angehen 😁

    Integration in Home Assistant

    Der Broker wird für gewöhnlich vom Home Assistant direkt erkannt. Wenn dieser als Gerät hinzugefügt wurde, taucht jede Steckdose, welche sich erfolgreich mit dem Broker verbunden hat, als Gerät unter MQTT auf.

    Was kann sonst noch damit gemacht werden?

    Ja, ne menge ^^
    Ich hab vor Monaten einmal damit begonnen ein Python Skript zu schrieben, welches die CPU, RAM und Festplatten Nutzung eines beliebigen Rechners als Sensordaten bereit zu stellen. Das soll noch erweitert werden z.B. hatte ich mir gedacht, es wäre vielleicht ganz nice, wenn sich damit ein Rechner herunterfahren ließ.

    Das ist aber noch in der „ich probier da mal ein paar Sachen aus“ Phase und noch nicht vorzeigbar ^^

    Für heute

    …soll das erst mal reichen. Wenn du Fragen hast, schreib sie in die Kommentare oder mir per Mail