16. Oktober 2020

 

OpenHAB2 - Mühsam ernährt sich das Eichhörnchen

Einige Notizen (keine vollständige Anleitung: bin selbst Anfänger) zu OpenHAB2, inkl. Backup

Die Einrichtung von OpenHAB2 nach der holprigen Installation ist erstmal nicht so schwierig, man bekommt es leicht ans Rennen. Aber:
  • Die Software bringt ihre eigene Nomenklatur mit: Bindings, Services, Things, Items, Channels. Wozu das alles gut ist, habe ich bisher noch nicht verstanden.
  • MQTT ist nicht ab Werk dabei und muss nachinstalliert werden
  • Die Konfiguration ist völlig wir. Konfigurationsdateien? Gibt es an zwei verschiedenen Orten. Außerdem noch Paper UI für die Konfiguration. Wo speichert das die Konfiguration?
  • Der Systemstart dauert extrem lange. 10 Minuten lang rödelt der Raspi auf 90% CPU, und das wo ich bisher nur eine Steckdose eingebunden habe...
Ich werde vermutlich auch Home Assistant ausprobieren. Das ist mir eh sympathischer, da Python-basiert.

Andererseits gefällt mir die Android APP von OpenHAB2, insb. die Möglichkeit, per Mikro (über Google Spracherkennung) Befehle an die Software zu übermitteln - auch wenn ich noch nicht weiß, was ich da noch konkret konfigurieren muss.

Ich habe bisher manuell folgende Konfigurationsdateien angelegt:

Zum Anlegen habe ich die Unterstützung des Sitemap Designers (oder so ähnlich) im Browser verwendet.

Datei /etc/openhab2/items/kronocken.items

Hier ist die bisher einzige Steckdose konfiguriert:

Group    Home                  "Kronocken"      <house>                                   ["Building"]

Group    GF                    "Erdgeschoss"    <groundfloor>   (Home)                    ["GroundFloor"]
Group    FF                    "Erster Stock"   <firstfloor>    (Home)                    ["FirstFloor"]
Group    C                     "Keller"         <cellar>        (Home)                    ["Basement"]
Group    OU                    "Draußen"        <garden>        (Home)                    ["Outdoor"]

Group    GF_LivingRoom         "Wohnzimmer"     <sofa>          (Home, GF)                ["LivingRoom"]
Group    GF_Kitchen            "Küche"          <kitchen>       (Home, GF)                ["Kitchen"]
Group    GF_Bathroom           "Badezimmer"     <bath>          (Home, GF)                ["Bathroom"]
Group    FF_Bedroom            "Schlafzimmer"   <bedroom>       (Home, FF)                ["Bedroom"]
Group    FF_KidsRoom           "Kinderzimmer"   <girl_3>        (Home, FF)                ["Room"]
Group    FF_Bathroom           "Badezimmer"     <bath>          (Home, FF)                ["Bathroom"]
Group    C_Basement            "Keller"         <cellar>        (Home, C)                 ["Basement"]
Group    OU_Driveway           "Auffahrt"                       (Home, OU)                ["Outdoor"]
Group    OU_Terrace            "Terrasse"       <terrace>       (Home, OU)                ["Terrace"]

Switch   GF_LivingRoom_Power   "Steckdose 1"      <poweroutlet>   (GF_LivingRoom, gPower)   ["Switch", "Switchable"]   {mqtt=">[mqtt_service:/cmnd/steckdose1:power:ON:1],>[mqtt_service:/cmnd/steckdose1:power:OFF:0]"}
Switch   FF_Bedroom_Power      "Steckdose 2"      <poweroutlet>   (FF_Bedroom, gPower)      ["Switch", "Switchable"]   {channel=""}

Group:Switch:OR(ON, OFF)   gPower   "Steckdose"   <poweroutlet>   (Home)   ["Switch", "Switchable"]

Datei /etc/openhab2/sitemaps/kronocken.sitemap

sitemap kronocken label="Kronocken" {
    Frame label="Erdgeschoss" icon="groundfloor" {
        Group item=GF_LivingRoom
        Group item=GF_Kitchen
        Group item=GF_Bathroom
    }

    Frame label="Erster Stock" icon="firstfloor" {
        Group item=FF_Bedroom
        Group item=FF_KidsRoom
        Group item=FF_Bathroom
    }

    Frame label="Keller" icon="cellar" {
        Group item=C_Basement
    }

    Frame label="Draußen" icon="garden" {
        Group item=OU_Driveway
        Group item=OU_Terrace
    }

    Frame {
        Text label="Steckdose" icon="poweroutlet" {
            Default item=GF_LivingRoom_Power label="Wohnzimmer"
            Default item=FF_Bedroom_Power label="Schlafzimmer"
        }
    }
}

Diverse andere Dateien...

... habe ich im Backup unter userdata/config/org/openhab gefunden. Das sind anscheinend die Dateien mit Konfigurationsdaten, die ich im"Paper UI" angelegt habe. Dazu gehört unter anderem die Datei mqtt.config mit dem Inhalt
:org.apache.felix.configadmin.revision:=L"1"
broker.pwd="openhabian"
broker.url="tcp://localhost:1883"
broker.user="openhabian"
service.pid="org.openhab.mqtt"
Sprich, hier ist der MQTT Broker konfiguriert, den ich über das MQTT Binding definiert habe.

Die Datei addons.config enthält die Liste der installierten Add-Ons.

Backup und Restore

Mit Hilfe von Skripten auf Windows- und Linux-Seite und ssh habe ich eine einfache Backup- und Restore-Möglichkeit gefunden (hoffe ich...).

Windows-Seite



Skript backup.cmd

@echo off
setlocal
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,14%
ssh -i .ssh\id_rsa pi@192.168.178.21 -t "backup"
scp -i .ssh\id_rsa pi@192.168.178.21:/home/pi/openhab-backup.zip backups\backup-%ldt%.zip

set DATEIGROESSE=0
for %%I in (backups\backup-%ldt%.zip) do set DATEIGROESSE=%%~zI
if not exist backups\backup-%ldt%.zip echo Backup ist fehlgeschlagen - Backup-Datei fehlt && goto :fehler
if %DATEIGROESSE% EQU 0 echo Backup ist fehlgeschlagen - Backup-Datei ist leer. && goto :fehler
if %DATEIGROESSE% GTR 0 echo Backup erfolgreich, Dateigroesse %DATEIGROESSE%
endlocal
goto :EOF

:fehler
endlocal
exit /b 1

Skript restore.cmd

@echo off
setlocal
set backup_file=%1
if not defined backup_file echo Bitte eine Datei aus backups\ als Parameter beim Aufruf angeben && goto :fehler
if not exist %backup_file% echo Backup ist fehlgeschlagen - Backup-Datei fehlt && goto :fehler
scp -i .ssh\id_rsa %backup_file% pi@192.168.178.21:/home/pi/openhab-backup.zip
if errorlevel 1 echo SCP ist fehlgeschlagen. && goto :fehler
ssh -i .ssh\id_rsa pi@192.168.178.21 -t "restore"
if errorlevel 1 echo Restore ist fehlgeschlagen. && goto :fehler
echo Fertig.
endlocal
goto :EOF

:fehler
endlocal
exit /b 1

Linux-Seite

Datei /home/pi/.ssh/authorized_keys

command="/home/pi/openhab-backup",no-agent-forwarding,no-port-forwarding ssh-rsa AAA...

Datei /home/pi/openhab-backup

#!/bin/bash
. /etc/profile.d/openhab2.sh
#echo "Befehl: $SSH_ORIGINAL_COMMAND"
case "$SSH_ORIGINAL_COMMAND" in
    "backup")
        sudo $OPENHAB_RUNTIME/bin/backup openhab-backup.zip
        sudo chown pi openhab-backup.zip
        ;;
    "scp -f /home/pi/openhab-backup.zip")
        $SSH_ORIGINAL_COMMAND
        ;;
    "scp -t /home/pi/openhab-backup.zip")
        $SSH_ORIGINAL_COMMAND
        ;;
    "restore")
        echo  Das wird mehrere Minuten dauern...
        sudo systemctl stop openhab2
        sudo $OPENHAB_RUNTIME/bin/restore openhab-backup.zip
        sudo systemctl start openhab2
        echo Fertig.
        ;;
    *)
        echo "Access denied: $SSH_ORIGINAL_COMMAND"
        exit 1
        ;;
esac

Sinn und Zweck der Dateien

Die Datei .ssh/authorized_keys (in der ab "ssh-rsa" alles aus der id_rsa.pub von der Windows-Seite kopiert ist) sorgt dafür, dass mit diesem Schlüsselpaar nur genau das Skript openhab-backup ohne Kennworteingabe ausgeführt werden kann. Innerhalb von openhab-backup wird mit $SSH_ORIGINAL_COMMAND auf das vom Windows-Client übergebene Kommando zugegriffen. Nur ganz bestimmte Kommandos sind erlaubt. Die OpenHAB-Umgebungsvariablen werden zu Beginn aus der Datei /etc/profile.d/openhab2.sh ausgelesen, insb. damit $OPENHAB_RUNTIME definiert ist. Die scp -f und scp -t Befehle sind für Backup (Übertragung from server to client) und Restore der Datei (Übertragung from client to server) - so arbeitet scp intern.
Das Windows-Programm backup.cmd erlaubt ein Backup der OpenHAB-Konfiguration. Per ssh wird zunächst auf dem Linux-Rechner ein Backup angelegt und dieses dann per scp zum Windows-Rechner übertragen und dort im Verzeichnis backups abgelegt, wobei ein Zeitstempel im Dateinamen ergänzt wird.
Das Windows-Programm restore.cmd arbeitet sozusagen genau umgekehrt. Dabei muss aber der Dateiname der Backup-ZIP-Datei explizit angegeben werden.

Labels: , , , ,


 

Echt hart - OpenHAB, Tuya-Convert, Raspi und WLAN-Steckdosen Luminea NX-4491-675

Mühsame Erfahrungen bei der Einrichtung von WLAN-Steckdosen und OpenHAB

Um was geht's?

Erste Erfahrungen mit Heimautomation - und das möglichst ohne Cloud.

Hardware:

Vorhanden waren bereits:

Für die Installation und Konfiguration wird außerdem benötigt:
  • LAN (WLAN sowieso)
  • Handelsübliches Notebook/PC mit Windows
  • Smartphone (in meinem Fall ein Huawei P10 lite mit Android)
Neu gekauft:
  • Ein 3er-Set WLAN-Steckdosen von Pearl (ca. 35€ inkl. Versand).
    Bei Pearl werden diese als WLAN-Steckdose SF-450.avs verkauft.


    Dahinter steckt ein Luminea NX-4491-675. Das sind die einfacheren (und kompakteren) Modelle ohne Strommesser. Inzwischen bietet Pearl unter derselben Bezeichnung anders aussehende Steckdosen an - ich nehme aber an, dass sie im Prinzip genauso funktionieren.
Zwischenstand - nach 2 Tagen ziemlichen Mühen:
  • Die Steckdosen sind mit Tuya-Convert geflasht (also von der China-Cloud befreit)
  • und in OpenHAB mehr oder weniger eingerichtet
  • Ein Backup- und Restore-Skript für OpenHAB
  • Steckdosen können per Handy - nur von zu Hause aus - geschaltet werden.

Warum war das so mühsam?

Im Prinzip sollte es relativ einfach gehen:
  • Steckdosen flashen mit Tuya-Convert (OTA : over the air - ohne das Gehäuse zu öffnen). Dazu wird ein Linux-System mit WLAN benötigt.
  • Steckdosen konfigurieren
  • OpenHAB einrichten
  • MQTT bei OpenHAB einrichten (MQTT ist das Protokoll, mit dem u.a. diese Steckdosen gesteuert werden)
  • Steckdosen bei OpenHAB konfigurieren
Das hört sich doch gar nicht so schwer an.
In der Praxis sind vor allem folgende Probleme aufgetreten:
  • Zum Flashen habe ich versucht, den Raspi mit WLAN-Stick zu verwenden. Das hat beim ersten Mal auch relativ problemlos funktioniert, danach aber nie wieder! Es traten dann wahlweise folgende Fehler auf (die zu absolut verwirrenden Fehlermeldungen führten):
    • Der WLAN-Stick wurde nicht erkannt
    • Das WLAN vtrust-wlan war gar nicht sichtbar auf dem Smartphone
    • Das WLAN vtrust-wlan war sichtbar, man konnte sich aber mit dem Smartphone nicht damit verbinden
    • Das Skript sagte immer wieder "Retrying"
    • Da der Start von OpenHAB den Raspi für gut 10 Minuten extrem belastet, ist ein Reboot (um etwas anderes auszuprobieren) eine zeitraubende Angelegenheit.
  • OpenHAB
    • OpenHAB ist für Einsteiger alles andere als einfach.
    • Die Konfiguration ist m.E. völlig wirr - Textdateien und/oder per GUI (wobei diese Einstellungen dann nicht in den Textdateien landen)
    • Außerdem ist die Dokumentation, die man im Internet so findet, häufig veraltet und funktioniert so nicht mehr.
  • Doofe Kleinigkeit: Ich hatte ein Leerzeichen in der SSID! Damit kommt die Tasmota-Software einfach nicht klar! Es gibt auch keinen Workaround. Daher habe ich die SSID in der Fritzbox umbenannt und einen kurzen Namen ohne Leerzeichen oder Sonderzeichen gewählt. Das zog natürlich diverse Nacharbeiten bei den dutzenden vorhandenen Geräten (Smartphones, Tablets, ...) nach sich.
Meine Empfehlungen daher: 
  • Den Raspi nur für OpenHAB verwenden, nicht für das Flashen.
  • Zum Flashen besser ein Linux im VMWare Player verwenden.

So, jetzt noch einmal alles hintereinander in Kurzform

Das ist als Kochrezept gedacht, man muss schon wissen was man da tut...

Vorüberlegungen

Schon vorher sollte klar sein, welchen Rechner man hinterher nutzen möchte, um die Heimautomation laufen zu lassen - das kann der Raspi sein, wobei ein Raspi 2 zumindest beim Start schon ordentlich rödelt, aber wenn er einmal läuft, ist das sicher eine gute Variante, da klein und sparsam.
Die sichtbare Oberfläche des Ganzen läuft sowieso im Browser auf dem Windows-PC.
Ich habe mich (vorerst) entschieden, das Ganze auf dem Rapi laufen zu lassen.
Benötigt werden zwei Dinge: Ein MQTT-Broker und die eigentliche SmartHome-Steuerungssoftware (in meinem Fall OpenHAB2).

Raspi installieren

Man kann es sich evtl. einfach machen mit OpenHABian, ich habe aber das normale Raspberry Pi OS "Buster" verwendet. Um das OS auf den RASPI zu bringen, braucht man eine SD-Karte. Wenn der Raspi am LAN (nicht WLAN) hängt, ist die Installation ziemlich simpel und es gibt genug Tutorials dazu.
Zu bedenken ist: Man sollte schon auf dem Windows PC eine leere Datei namens ssh auf der SD-Karte anlegen, damit später der Shell-Zugang per SSH vom Windows-PC aus möglich ist. Das ist die einfachste Möglichkeit, da dann zu keinem Zeitpunkt Monitor und Tastatur an den Raspi angeschlossen werden müssen.

Den Raspi konfigurieren

Das kann nun schon vom Windows-Rechner aus erfolgen (per ssh pi@raspberrypi o.ä., siehe https://braspi.de/blogs/braspi-blog/raspberry-pi-ersteinrichtung-ohne-monitor-und-tastatur
Mit raspi-config Details einstellen usw., siehe Anleitung auf der o.g. Web-Site.
Bei mir heißt der Raspi-Rechner übrigens oha. Nach der Konfiguration und Reboot des Raspi ist also die Shell über ssh pi@oha zu erreichen.

Dem Raspi eine feste IP zuordnen

Ganz wichtig: Über die FritzBox dem Raspi eine feste IP-Adresse zuordnen (in meinem Fall 192.168.178.21). Wir wollen später hier einen MQTT Broker installieren und auch die SmartHome-Software. Für den MQTT Broker ist die fixe IP-Adresse zwingend, für die SmartHome-Software auch vorteilhaft.

MQTT Broker installieren

Auf dem Raspi dem MQTT-Broker "mosquitto" installieren und dafür sorgen, dass er beim Systemstart auch als Dienst automatisch gestartet wird.
sudo apt-get install mosquitto mosquitto-clients
sudo systemctl enable mosquitto.service

OpenHAB2 installieren

TODO genauere Erklärung.
Die Installation war definitiv etwas fummelig. 
Das erste Problem war, dass java nicht funktionierte. Hier musste auf ein anderes Java gewechselt werden. Außerdem ist es auch danach nicht trivial.
Ich habe es so ähnlich gemacht wie unter https://openhabdoc.readthedocs.io/de/latest/Raspberry/ beschrieben.
Ein einfaches apt-get install wäre zu schön gewesen...

OpenHAB2 als Dienst einrichten. Ob das wirklich manuell nötig ist, weiß ich nicht. Ich habe jedenfalls ein sudo systemctl enable openhab2.service gemacht.

Steckdosen flashen

Die Steckdose noch nicht einstecken!
Auf dem Notebook/Windows-PC
  1. Ein aktuelles Ubuntu Linux ISO-Image herunterladen
  2. Den VMWare Player herunterladen und installieren
  3. Mit dem VMWare Player das Linux  als virtuelle Maschine installieren
  4. Das Ubuntu halbwegs brauchbar einrichten (z.B. deutsche Tastatur) und auf den aktuellen Stand bringen
  5. Im Ubuntu der Anleitung von https://github.com/ct-Open-Source/tuya-convert folgen - aber nur die Installation, nicht Flashen! Beim install-prereq.sh stattdessen mit sudo ./install-prereq.sh arbeiten
  6. Den WLAN USB-Stick einstöpseln und -nur- mit der Ubuntu VM verbinden (nicht mit dem Host)
  7. Im Ubuntu mit iw dev herausfinden, wie der WLAN-Stick im Linux heißt, und das in der Datei config.txt entsprechend anpassen (wlan0 durch den passenden Namen ersetzen).
  8. Jetzt erst sudo ./start_flash.sh ausführen. Am Anfang einmal yes [Enter], die Fragen ob dies und das gestoppt werden soll, mit y beantworten.
  9. Nun auf dem Smartphone mit dem WLAN vtrust-wlan verbinden. Falls das nicht funktioniert, abbrechen. Am besten den WLAN-Stick wieder herausziehen, die Ubuntu-VM neu booten und ab Schritt 6 nochmal von vorne versuchen.
  10. Jetzt die Steckose einstecken und durch langes Drücken der Taste in den Pairing-Modus versetzen (die LED blinkt dann)
  11. Dann erst Enter drücken.
  12. Bei der Frage welches ROM installiert werden soll, "tasmota.bin" auswählen und das Ganze nochmal bestätigen.
Die Steckdose ist jetzt geflasht, aber sie wird nicht funktionieren - keine Panik.

Steckdose konfigurieren

Die Steckdose macht jetzt ein eigenes WLAN auf. Das heißt tasmota-irgendwas. Achtung: Anscheinend gibt es eine dabei Zeitbegrenzung (siehe https://tasmota.github.io/docs/Getting-Started/ unter "Initial Configuration")
Auf dem Windows-PC mit diesem WLAN verbinden.
  1. Es erscheint eine Konfigurationsseite im Browser. Falls das nicht funktioniert, manuell zu http://192.168.4.1 wechseln
  2. Es erscheint die Startseite der Steckdose:
  3. Hier nun als allererstes die WLAN-Zugangsdaten bei "AP1 SSID" und "AP1 Password" eingeben und vor dem Drücken auf Save sehr sorgfältig kontrollieren. Nicht den Haken bei der Checkbox "AP1 Password" vergessen.
  4. Beim PC wieder mit dem normalen WLAN verbinden.
  5. Die Steckdose startet neu und ist nun im WLAN irgendwo sichtbar als "tasmota-irgendwas" oder aber über den im Konfigurationsdialog festgelegten Hostnamen. In meinem Fall kann man das über die FritzBox leicht herausfinden (es gibt sicher auch andere Möglichkeiten). Die verwendete IP-Nummer merken (z.B. 192.168.178.44).
  6. Diese IP im Browser aufrufen: http://192.168.178.44. Herzlichen Glückwunsch, die Steckdose ist im WLAN!
  7. Es erscheint wieder eine Konfigurationsseite.
    Diese sieht "oben rum" zunächst noch nicht ganz so aus wie in diesem Screenshot:
  8. Das Menü "Configuration" aufrufen:



  9. "Configure WiFi" aufrufen und den Hostnamen ergänzen.

     Der Hostname muss natürlich im lokalen Netzwerk eindeutig sein und (wenn ich die Überschrift bei dem Eingabefeld richtig deute)  sollte er aus einem Text, Bindestricht und dann vier Ziffern bestehen. Keine Ahnung, ob das wichtig ist. Natürlich sollte der Hostname keine Sonderzeichen (außer Minus und Unterstrich) oder Leerzeichen enthalten. Auf "Save" drücken.
  10. Die Steckdose startet neu und ist nun im WLAN unter dem gewählten Hostnamen sichtbar. Im Browser also http://hostname (z.B. http://steckdose-0001) eingeben und es erscheint wieder die Startseite:

  11. Wieder auf "Configuration" gehen und dort auf "Configure Template". Als Name für das Template etwas passendes auswählen. Ich habe "Luminea NX-4491-675" eingegeben, das wurde aber beim Speichern offensichtlich gekürzt. Als Basis für das Template Generic (18) auswählen. Falls man großes Glück hat, dann gibt es vielleicht schon ein passendes Template in der Werteliste (je nach Hardware). In dem Fall kann natürlich zunächst dieses Template ausprobieren (und den weiteren Verlauf abkürzen).
    Was wir jetzt zu tun haben, ist, die logischen Ein-Ausgabe-Pins des Chips mit den richtigen Stellen zu verbinden - ohne diese Konfiguration bliebe die Steckdose "tot".
  12. Dank eines YouTube-Videos ist es gar nicht so schwierig, das herauszufinden. In meinem Fall ist es eine einfache Steckdose, sie hat 1 LED und einen physikalischen Button. Richtigerweise brauchen wir also Zuordnungen für Button1, Led1 und Relay1 (das Relay ist der eigentliche Schalter). Zuerst setzen wir bei allen GPIOs die Zuordnung auf None (0). Dann schließen wir eine einfache Lampe an die Steckdose an (und stellen vorher an einer normalen Steckdose sicher, dass die Lampe leuchten sollte!). Nun setzen wir bei 4 GPIOs (z.B. 12, 13, 14, 15) die Zuordnung auf Relay1 .. Relay4 und drücken "Save".
    Die Steckdose startet neu und zeigt wieder die Startseite an. Auf der Startseite gibt es jetzt 4x nebeneinander den Text "OFF" und darunter eine Schaltfläche "Toggle" (so ähnlich wie im Screenshot oben, aber eben 4x nebeneinander). Nun testet man, was mit der Steckdose und der Lampe passiert, wenn man auf die "Toggle" Schaltflächen klickt. Wenn bei einer der Schaltflächen (z.B. in meinem Fall bei der vierten) die Lampe an- bzw. ausgeht, dann wissen wir, dass die GPIO-Nummer eigentlich Relay 1 ist und nicht Relay 4. Mit etwas Glück (so wie in meinem Beispiel) stellen wir außerdem fest, dass - nur wenn die Lampe nicht leuchtet - eine der Schaltflächen die Kontroll-LED umschaltet.
    Wir gehen wieder zum "Configure Template" Bildschirm und legen für die 4 getesteten GPIOs nun die richtige Zuordnung fest -wobei man statt Led1 auch LEd1i ("i" wie invertiert) verwenden kann, je nachdem wie man es lieber hat). Die übrigen GPIOs setzt man wieder auf None:

    Danach klickt man auf "Save" und die Steckdose startet neu. Im Hauptmenü ist jetzt nur noch ein ON/OFF-Status und eine "Toggle"-Schaltfläche zu sehen. Diese kann man nun testen - sie sollte die Lampe ein- und ausschalten.
    Auf ähnliche Weise (Button1 .. Button4 testweise unbenutzten GPIOs zuordnen) findet man heraus, welche GPIO-Nummer tatsächlich zu Button1 gehört. Dazu wechselt man nach dem Konfigurieren und Neustart zur "Console" und beobachtet, welche Nachricht (außer den Power-Nachrichten) ankommt, wenn man auf den Button klickt (wenn ich mich recht erinnere, im Youtube-Video ist das jedenfalls gut erklärt).
  13. Es kann sein, dass man nach dem ersten Erstellen des Templates (Schritt 12) bei "Configure Module" zunächst einmal das neu angelegte Template (in meinem Fall "Luminea NX-449") auswählen muss.
  14. Unter "Configure Other" wählt man nun einen passenden Namen aus und achtet darauf, dass "MQTT Enable" angehakt ist:


  15. Es kann sein, das man nach dem ersten Erstellen des Templates (Schritt 12) bei "Configure Module" zunächst einmal das neu angelegte Template (in meinem Fall "Luminea NX-449") auswählen muss.
  16. Unter "Configure MQTT" wählt man jetzt (das ist wichtig, damit die Steckdose nicht nur über dieses Web-UI, sondern auch über MQTT angesprochen werden kann) die IP-Nummer des Raspi bzw. genauer gesagt die IP-Nummer des Rechners auf dem der MQTT-Broker läuft. Außerdem habe ich die Einträge Topic und Client beide auf einen einfachen eindeutigen Namen "steckdose1" geändert:

LED-Statusanzeige anpassen

In der "Console" habe ich über den Befehl ledstate 7 den LED-Status so konfiguriert, dass die LED sich nun so verhält:
  • Die LED leuchtet, wenn der Strom aus ist (sozusagen als Mini-Nachtlicht) und die LED ist aus, wenn der Strom an ist.
  • Die LED blinkt, wenn MQTT-Nachrichten empfangen werden.
Andere sinnvolle LED-States sind z.B. 0  (LED immer aus). Das Verhalten hängt sicher auch davon ab, ob man "Led1" oder "Led1i" konfiguriert hat.

MQTT testen

Mit einem Tool wie dem Google-Browser-Addon MQTTLens kann man nun beobachten, dass die Steckdose alle 5 Minuten ihren Status meldet. Dazu zuerst die Connection zum Raspi hinzufügen und dann das Topic "#" subscriben.
Außerdem kann man mit "Publish" und dem Topic steckdose1/power und der Message on oder off die Steckdose ein- und ausschalten. Die richtigen Topics lassen sich herausfinden über die Menüs "Information" und "Console" der Steckdosen-Seite.
Mir ist heute aufgefallen, das MQTTLens immer wieder die Verbindung zum Broker verliert und gleich wieder neu aufbaut!?
Ich ignoriere das vorerst mal. Scheint daran zu liegen, dass ich den Rechnernamen "oha" anstelle der IP-Nummer 192.168.178.21 verwendet hatte.

Meilenstein erreicht: MQTT funktioniert

Bis hierhin war es relativ unabhängig von der Heimautomations-Software OpenHAB 2. Der Rest der Konfiguration folgt in einem weiteren Artikel.

Labels: , ,


This page is powered by Blogger. Isn't yours?