Tuya & OpenHAB für Dummies

Mein SmartHome einstieg mit OpenHAB und SmartLife Geräten: Nachdem ich den Smart Mirror gebastelt habe, bin ich über ein Bild im Netz gestolpert, bei dem jemand seinen Grundriss inklusive Smart-Home Bestückung darstellt. Also welche Tür / Fenster ist offen, etc. Das fand ich ziemlich nice und gerade für meinen Magic Mirror im Flur eigentlich ein toller Use Case. Gerade weil ich selbst viele SmartLife Stecker mit Alexa und IFTTT steuere.

Bei der Recherche bin ich dann auf das Modul MMM-OpenHAB und MMM-OpenHABFloorPlan gestoßen. Also habe ich mich in das Projekt OpenHAB eingelesen.

Spoiler: Das war ein Fehler 😀 Jetzt habe ich noch ein Hobby….

Chinastyle Heimautomatisierung

Mein bisheriges SetUp hat sich auf die SmartLife App – gekoppelt mit Alexa – beschränkt. Ich habe zuhause WiFi Smart Plugs von $ Gosund $ und $ Coosa $ im Einsatz. Wie sich zeigt, steckt dahinter die Firma Tuya, die die Hardware fertigt und andere Firmen können diese mit eigenem Label rebranden. Das Herz der WiFi-Plugs ist fast immer ein ESP8266. Außerdem habe ich ein paar $ Teckin SB50 RGB Wifi $ Glühbirnen in der Küche (WG-Party mit Diskolicht ;)). Das höchste der Gefühle war die IFTTT Anbindung zu Octoprint. Wenn ein Druck fertig ist, wird der Drucker und eine Lampe am Drucker ausgeschaltet.

Da wir sowieso gerade eine schnellere Internetverbindung bekommen haben und ich daher das WiFi neu einrichten muss, fand ich die Gelegenheit perfekt um auf OpenHAB umzustellen und das ganze mal zu testen. (Es gibt noch Zahlreiche weitere OpenSource SmartHome Projekte, die hab ich mir aber noch nicht angeschaut.) Bald kommen ein paar Beiträge zu Home Assistant.

Tuya Convert

Damit ich meine Komponenten (Also Plugs und Leuchten) mit OpenHAB steuern kann muss ich die Firmware auf den Geräten ändern. Wie ihr wisst, bin ich kein Programmierer aber ein paar Genies in der Open Source Welt haben es möglich gemacht, dass man auf all den Tuya Geräten sogar ziemlich einfach eine Open Source Firmware namens Tasmota aufspielen kann. Dazu hat man sogar zwei Möglichkeiten:

  1. Gerät Öffnen, Kabel an die richtigen Pins des ESP löten und neu flashen (z.B. mit dem ESP Flashing Tool, der Arduino IDE oder Tasmotizer)
  2. OTA (Over The Air) Flashen.

Da Variante zwei noch bequemer ist will ich euch kurz erläutern wie das geht:

Ablauf

Wir nutzen den Raspi als WiFi Hotspot mit dem Namen vtrust-flash. Dann bringen wir die Geräte in den jeweiligen Kopplungsmodus. Diese Koppeln sich dann mit dem Hotspot und ein Script gaukelt ein Firmware Update vor. Dann spielen wir unsere eigene Firmware als Update ein. Damit das funktioniert, brauchen wir aber noch ein weiteres Gerät im Netzwerk.

Danach öffnet der $ ESP8266 $ einen eigenen Hotspot, mit dem wir uns verbinden. Wir gelangen auf die Konfigurationsseite und können damit die Tasmota Firmware für das entsprechende Gerät anpassen. Diese ist nämlich zunächst mal für alle gleich, sprich neutral. Wir müssen also im Prinzip noch die Pins definieren, die mit den Knöpfen und Relais verbunden sind, damit das Gerät wie vorher funktioniert.

Zur Fernsteuerung haben wir dann die Möglichkeit über MQTT oder Webrequests mit dem Gerät zu kommunizieren. Ich habe von beidem keine Ahnung, aber nutze MQTT.

Komponenten

Man braucht natürlich einen Rechner, der am besten mit dem Kabel im Netz hängt (bequemer). Dann braucht ihr einen $ Raspberry Pi $ der auch mit Kabel im Netz hängt, falls ihr ssh nutzen wollt (bequemer) und Wifi fähig ist. Ich habe dazu einfach den Pi mit der MagicMirror² Firmware in meinem Smart Mirror genutzt. Dann ist es wichtig entweder ein Smartphone zu haben oder einen ESP 8266 oder ähnliches, um als zweites Gerät im Flash-Netzwerk zu hängen.

Software

ESP Vorbereiten

Wenn ihr statt euer Smartphone einen ESP nutzen möchtet, der sich in unser Trojanisches WiFi einloggt, müsst ihr eine kleine Firmware auf diesen aufspielen. Diese kommt bereits compiliert als .bin Datei und muss auf euren Rechner heruntergeladen werden. Diese findet ihr in der GitHub Repo von digiblur Namens Tuya-Convert-Donor. Hier müsst ihr eben darauf achten die richtige Datei für eure Board-Version zu erwischen. Ich habe einen Wemos Lolin NodeMCU V3 mit der tc_donor_mini.generic_2M.bin bespielt. Das hat wunderbar funktioniert.

Protip: Damit der ESP mit dem Rechner kommunizieren kann brauchen wir ein Micro-USB Kabel, bei dem auch die Datenpins verbunden sind. Manche Kabel, z.B. von Handyladegeräten, sind nur mit Phase und Ground verbunden. Seit nicht so dumm wie ich 😉

Protip 2: Installiert euch vorher den passenden Treiber. Ich hab ewig im Netz nach einen Mirror gesucht, da ich die Herstellerseite nicht erreichen konnte. Daher könnt ihr den einfach auch bei mir ziehen.

Treiber: CH341SER (Copyright: Winchiphead / Nanjing QinHeng Electronics Co., Ltd)

Zum Aufspielen der bin-File könnt ihr entweder einfach den Tasmotizer nehmen. Das ist eine kleine Software die eigentlich für die Löt-Flash Variante entwickelt wurde. Damit kann man aber auch wunderbar andere Firmwares flashen.

Den Tasmotizer kann man im GitHub von Tasmota unter Tasmotizer bekommen. Den kann man einfach Starten, die bin suchen, den richtigen COM auswaählen und auf Tasmotize klicken. Den COM bekommt ihr nur wenn der Treiber da ist, das richtige Kabel da ist und der ESP angeschlossen ist. Wenn nicht, beendet sich der Tasmotizer einfach. Wenn das erledigt ist, geht es weiter.

RaspberryPi

Außerdem brauchen wir das Tuya-Convert Paket aus der GitHub-Repo vom c’t Magazin. Das könnt ihr euch <hier/> schon mal anschauen, aber braucht es nicht herunter zu laden. Das machen wir direkt am RaspberryPi.

Für die Leser ohne jegliche Raspi Erfahrung: Entweder steuert ihr die Console des Raspi über ssh vom Rechner und damit übers Netzwerk an, oder direkt mit Bildschirm, Maus und Tastatur. Bei der ersten Methode ist es wichtig das der Raspi mit Kabel im Netz hängt, da wir sonst die ssh Verbindung verlieren wenn der Hotspot angeht. Wie man einen frischen Raspi startet, könnt ihr im Post über den Smart Mirror lesen.

Den Pi wollen wir zunächst mal auf den neuesten Stand bringen, also wie gewohnt die ersten Befehle sollten die Update Befehle sein.

sudo apt update
sudo apt upgrade

Falls nicht schon geschehen brauchen wir noch git um gleich mit git Pull das Tuya-Convert paket herunter zu laden.

sudo apt install git
git clone https://github.com/ct-Open-Source/tuya-convert

Als nächstes müssen wir in das neue Verzeichnis tuya-convert navigieren. Das machen wir mit change directory.

cd tuya-convert

Hier können wir einfach mal aus neugierde den List Befehl ausführen und gucken was hier so rumliegt.

ls

Wir müssen jetzt noch ein bischen was installieren damit es losgehen kann. Das geschieht ganz bequem mit dem vorbereiteten Bash-Script. Wir führen also einfach den Befehl aus.

./install_prereq.sh

Update: Ggf. müsst ihr den Git-Sanity Check entfernen, wenn die installation fehlschlägt. Das geht mit dem Befehl:

sudo rm /root/bin/git

Danach kann man einfach nochmal das installationsscript starten. Wenn alles funktioniert hat, können wir nun das Script für den Flash-Prozess starten.

Dieses Script fragt euch, wenn störende Prozesse im Weg sind (bei mir ja, da die Magic Mirror Firmware manche Ports nutzt), ob er diese beenden soll. Dann öffnet es den Hotspot. Jetzt müsst ihr euch entweder mit dem Smartphone in das Netzwerk vtrust-flash einwählen oder der von euch vorbereitete ESP macht das. Das könnt ihr am konstanten Leuchten der eingebauten LED sehen. (Blinken = sucht <netzwerk, Konstant = alles gefunden). Das Script starten wir mit:

./start_flash.sh

Jetzt kommt eine Warnmeldung, das wir ggf. alles kaputt machen und auf eigenes Risiko handeln. Ja ja ja… Das bestätigen wir mit einem beherzten yes und enter.

Gosund Smart Plug

Fangen wir mit dem einfachsten an. Der Gosund Smart Plug. Wir bringen ihn in den Pairing Modus in dem wir einfach etwa 5 Sekunden lang auf den An/Aus Knopf drücken. Bei mir hat es im ersten Versuch nicht geklappt.

Aber so leicht geben wir nicht auf. Wir starten mit y und enter neu. Und dann klappt es auch.

So in etwa sieht der Prozess in der Konsole aus.

Wir wollen dann die Tasmota Firmware flashen und wählen daher die 2 und bestätigen mit y. Das Tuya Convert Script erlaubt euch aber auch das Flashen von anderen Firmwares. Es gibt zahlreiche Heimautomation-Projekte mit dedizierter Open Source Firmware für ESP82 Geräte. Davon hab ich aber keine Ahnung und bleibe bei Tasmota 🙂

Falls ihr das wollt, sucht die entsprechende .bin file und legt sie im Tuya-Convert Verzeichnis ab. Das geht z.B. ganz gut mit Filezilla (über Port 22)

Jetzt könnt ihr mit eurem Rechner oder Smartphone nach dem Hotspot tasmota-1234 suchen. Die Zahl ist natürlich eine andere. Jetzt sollte sich der Browser öffnen, bzw. am Smartphone die Meldung erscheinen, das wir uns Anmelden müssen. Das ist die Konfigurationsseite der neuen Tasmota-Firmware. Hier können wir nach den WLAN-Netzwerken scannen und dann das passende Kennwort eingeben. Ich empfehle dann im Feld Host noch einen Namen einzutragen, wie euer Gerät sich im Netzwerk ausgeben soll. So findet man es leichter wieder. Wenn ihr die Änderung bestätigt, schließt der SmartPlug den Hotspot und wählt sich ins WLAN ein.

Entweder loggt ihr euch jetzt auf eueren Router ein oder nutzt einen IP-Scanner um das Gerät wieder zu finden. Wir müssen dann einfach die IP im Browser eingeben und landen auf der neuen Konfig-Seite.

Jetzt können wir durch das Menü Navigieren und gehen mit Configuration -> Configure Module -> zur Einrichtung des Moduls über. Die Gosund-Plugs haben ein Vordefiniertes Profil, das wir im Dropdown auswählen. Das speichern wir mit dem Save-Button.

Hier wird einfach das entsprechende PinLayout in der Firmware überschrieben. Außerdem ändert sich die Überschrift. Das sollte dann so aussehen:

Zum Testen drücken wir jetzt mal auf den Toggle Knopf und der physischen Entsprechung direkt am Plug. Wenn ihr das Relais hört, ist alles in Ordnung. Wer möchte, kann die LED am Knopf abschalten, in dem die Pinbelegung gelöscht wird. Das müsst ihr aber selbst herausfinden wie das geht 🙂

Was ich nicht wusste: Der Gosund kann die Leistungsaufnahme der Geräte messen. Das ist ziemlich cool. Denn die Werte können wir später in OpenHAB in eine InfluxDB weitergeben und dann unseren Energieverbrauch mit Grafana als schöne Grafiken darstellen. Doch zuerst müssen beide miteinander Sprechen. Dazu müssen wir aber erstmal OpenHAB einrichten und einen MQTT Broker installieren. Mehr dazu weiter unten. Wenn das gemacht ist, gehen wir wieder in die Config aber diesmal zu Config MQTT. Also entweder lasst den Tab offen oder notiert euch die IP, damit ihr wieder auf die Startseite findet. Lesezeichen sind auch eine tolle Erfindung.

Coosa Smart Plug

Die Coosa Smart Plugs waren etwas widerspänstiger und ich brauchte viele Versuche bis ich im korrekten Kopplungsmodus war. Auch hier muss man 5 Sekundenlang die Powertaste drücken.

Wenn diese auch mit der Tasmota-Firmware überspielt und im Netzwerk sind gehen wir auf die Configure Other Seite. Hier kann man Templates anlegen, die dann auf der Configure Module Seite im Dropdown Menü auftauchen. In das Oberste feld geben wir folgendes ein:

{"NAME":"COOSA","GPIO":[0,0,0,0,57,52,0,0,21,17,255,0,0],"FLAG":0,"BASE":1}

Wir suchen uns noch einen netten „friendly“ Name aus und speichern. Dann gehts wieder auf die Configure Module Seite wo wir nun im Dropdown den Eintrag Coosa wählen und erneut speichern. Jetzt können wir wieder den physischen Knopf am Gerät testen und den Toggle-Button auch. Wenn alles funktioniert sind wir vorerst fertig, aber MQTT fehlt auch hier noch.

Teckin SB50 RGB LED Bulb

Bei der Lampe müssen wir fünft mal Aus und wieder Anschalten um in den Pairing-Modus zu kommen. Macht das nicht zu schnell und nicht zu langsam, sonst funktioniert es nicht. Wenn die Lampe schnell blinkt, sind wir im korrekten Modus. Wir wiederholen nun den Flash-Prozess und bringen danach, genau wie vorher, das Gerät wieder in unser heimisches WLAN Netzwerk.

In der Config gehen wir diesesmal wieder auf Configure Other, da wir ein neues Template anlegen wollen. In das Feld Kopiert ihr den folgenden Code-Schnipsel.

{"NAME":"Teckin SB50","GPIO":[0,0,0,0,40,0,0,0,38,39,37,0,0],"FLAG":0,"BASE":18}

Im Friendly Name dürft ihr wieder kreativ werden und einen Namen wählen. Dann wird gespeichert. Nun müssen wir noch einmal in die Config und unter Config Module sollte jetzt Teckin SB50 im Dropdown erscheinen. Das wählen wir aus und speichern wieder. Wenn alles geklappt hat, sieht die Startseite jetzt so aus:

Klickt euch einmal durch und prüft ob die Farben zueinander passen. Auch hier fehlt noch die MQTT konfiguration.

Wenn ihr fertig seid, solltet ihr den Raspi rebooten, damit alle Prozesse wieder normal starten. Der WLAN Hotspot verschwindet und der ESP82 fängt wieder an zu blinken. So weit so gut.

Viele Templates für alle möglichen Tuya Geräte und weitere Infos findet man auf den folgenden Seiten.

OpenHAB

Der wohl einfachste Weg ist sich den Raspi von vorhin zu schnappen, sofern er nicht in einem anderen Projekt steckt, und direkt die SD-Karte zu entwenden. Diesesmal flashen wir eine spezielle Raspian Version auf die Karte. Dazu können wir auch wieder Balena Etcher verwenden. Das ganze nennt sich openhabian und das aktuelle Release findet ihr in der GitHub Repo Openhabian von Openhab. Wie ihr die SD-Karte flasht wisst ihr ja bereits.

Nun müsst ihr wieder entscheiden ob ihr per ssh oder mit Hardware am Pi arbeiten wollt. Da der Rechner höchstwahrscheinlich in irgendeinem Schrank oder Abstellraum verschwindet, weil er ab jetzt für immer An sein wird, empfehle ich ganz klar die ssh Variante. Dazu legen wir in der boot Partition die Datei ssh an. (Neue Textdatei mit Namen ssh und die Dateiendung löschen).

Wir booten also ganz normal und wenn der Raspi erfolgreich mit dem Internet verbunden ist, beginnt auch schon die OpenHAB installation. Diese kann eine weile dauern, je nachdem wie schnell eure Verbindung ist.

Ab jetzt können wir immer per Webbrowser auf OpenHAB zugreifen. Dazu gebt ihr einfach die IP eures OpenHabian RaspberryPi und Port 8080 ein.

192.168.x.x:8080

Die IP eures Pi könnt ihr entweder über einen IP Scanner wie den Advanced IP Scanner oder über euren Router herausfinden. Diese braucht ihr ja auch für die ssh verbindung. Wenn ihr mit Maus am Pi seid könnt ihr einfach

ifconfig

eingeben. Dann seht ihr jeweils die IP für das Netzwerk und WLAN.

Für die weitere Einrichtung und Installation der AddOns bleiben wir aber erstmal in der Console.

MQTT

MQTT ist ein Protokoll für das Internet of Things [IoT]. Im Prinzip kann man MQTT als Chat für Geräte betrachten. Es gibt Channels mit bestimmten Topics und Natürlich dem Inhalt eines Topics.

Man kann diese beliebig verschachteln, für die meisten Anwendungen ist das aber garnicht notwendig. Ich empfehle es für den Anfang dabei zu belassen einfach nur ein topic zu nehmen. Besonders bei der Steuerung der Tasmota-Geräte erleichtert man sich so das Leben.

Beispiel:

Wir haben eine Stehlampe neben dem Sofa, die wir mit einem Tasmota-Smartplug steuern möchten. Der Channel ist dann cmnd da wir ein Kommando senden. Den aktuellen Status können wir im Channel stat abfragen. Dies ist von Tasmota so als default vorgesehen. Im Topic kommt dann der Name des Gerätes, der einzigartig sein sollte.

stat/swSofaLampe
cmnd/swSofaLampe

Wenn wir den Smartplug nur Schalten wollen, adressieren wir das Subtopic Power.

cmnd/swSofaLampe/power

Und natürlich darf die Nachricht nicht fehlen. In diesem Falle ein On oder OFF.

Das Protokoll ist so aufgebaut, dass es einen MQTT Broker gibt, der alle Chats verwaltet. Geräte loggen sich als Clients ein und Abonieren die Kanäle. Man kann Nachrichten veröffentlichen um sozusagen Befehle zu verschicken, oder Status Updates und Nachrichten empfangen um Befehle oder Statusupdates entgegen zu nehmen.

Ich nutze dazu Mosquitto auf meinem RaspberryPi, auf dem auch OpenHAB läuft. Wenn ihr also in der openHAB Console den Befehl

sudo openhabian-config

eingebt, gelangt ihr in das folgende Menü:

Zunächst wollen wir mal gucken ob es Updates gibt. Dazu gehen wir mit den Pfeiltasten auf Punkt 02 und bestätigen mit Enter. Wenn alles Up to Date ist navigieren wir weiter zu Option 20.

Hier installieren wir Mosquitto (Option 23) und klicken uns durch den Installationsdialog.

Wählt ein Password und merkt es euch gut. Notiert auch den Nutzernamen- openhabian:

Und dann macht OpenHAB den rest.

Die IP ist nun Standardmäßig die gleiche, wie OpenHAB zum Installationszeitpunkt hatte. Hier hatte ich einen Error, da ich später das Netzwerkkabel getrennt habe. Da es aber ohnehin Sinnvoll ist, das OpenHAB eine statische IP in eurem Netzwerk bekommt, könnt ihr später die IP zuweisen, die ihr möchtet und müsst diese in der Mosquitto Config ändern. Dazu aber später mehr.

Wenn wir eh gerade noch in der Konsole sind, können wir direkt InfluxDB und Grafana hinterher installieren, falls ihr das später nutzen wollt. Auch hier ist die Einrichtung super Komfortabel, da OpenHAB die meisten Dinge für euch erledigt.

OpenHAB again

Jetzt müssen wir OpenHAB noch sagen, dass es mit Mosquitto sprechen soll. Dazu brauchen wir das MQTT Binding. Wir gehen also nun in den WebBrowser eurer Wahl und geben die IP:8080 ein. Kommt ihr das erste mal auf die OpenHAB Startseite erscheint folgendes:

Ich habe Standard gewählt und auch bisher nicht mehr umgestellt. Danach sieht das UI so aus:

Wir gehen weiter ins PaperUI. Hier gibt es die meisten Konfigurationen. Aber da wir ja frisch Starten, ist hier noch gähnende Leere angesagt.

Wir wechseln in den Menüpunkt Add-Ons und auf den Reiter Bindings und geben ins Suchfeld MQTT ein. Das installieren wir rechts mit einem Klick auf Install. (Bei mir steht natürlich Uninstall, da ich es schon Installiert habe).

Nun sollte in der Inbox das MQTT Broker Thing auftauchen. Wenn das nicht der Fall ist, legen wir es händisch an. Dazu gehen wir in die Inbox und Klicken auf das große blaue Plus.

Dann wählen wir das MQTT-Binding aus:

Falls die Option für den MQTT Broker noch immer nicht von alleine kommt, klicken wir auf add manualy:

Was uns alle MQTT Optionen zeigt. Hier können wir MQTT Broker wählen. Die Option System MQTT Broker können wir ignorieren.

Danach öffnet sich folgende Seite, die hoffentlich schon selbst ausgefüllt bei euch ist:

Ansonsten müssen wir händisch die IP, den Port etc. eintragen. Wenn alles geklappt hat sollte bei euch unter Configuration – Things das MQTT Broker Thing auftauchen. Den Namen (Label) habe ich selbst festgelegt.

Ein weiteres hilfreiches Programm ist MQTT.fx welches ihr bei

https://mqttfx.jensd.de/

herunterladen könnt. Mit dem könnt ihr euch jetzt als Client in den MQTT-Chat einloggen und alls mithören, was so gefunkt wird. Dazu müssen wir zunächst nur die IP und die LogIn daten eingeben und uns verbinden:

Im Reiter Subscribe könnt ihr unten Links auf Scan drücken und alle Topics werden aufgezeichnet.

Mit einem Doppelklick auf eines der Topics könnt ihr es Abonieren und die eigentlichen Chatnachrichten ansehen.

Aber: Bei euch wird noch nichts gefunkt, da wir noch nichts eingerichtet haben. Also nicht wundern 🙂

Als nächstes brauchen wir ein MQTT Thing. Dazu muss ich aber erstmal etwas weiter ausholen über die Struktur von und in OpenHAB:

OpenHAB ist super mächtig und hat eine steile Lernkurve. Als ich angefangen habe mich damit zu beschäftigen war ich erstmal etwas erschlagen. Da ich diesen Eintrag aber auch Aufschreibe um für mich selbst den Prozess zu dokumentieren, will ich kurz eine Übersicht geben.

OpenHab fungiert eigentlich hauptsächlich als Übersetzer zwischen allen möglichen SmarHome Geschichten. Es gibt zahlreiche PlugIns, darunter sogenannte Bindings, die im Prinzip Protokolle und Sprachen miteinander kommunizieren lassen. Als Beispiel: IKEA benutzt bei seinen Tradfri SmartHome Geschichten das Funkprotokoll ZIGBEE. Es gibt aber auch WebCurls, MQTT, Bluetooth, und und und. Dazu kommen Nomenklatur-Regeln etc. OpenHAB übernimmt die Rolle der Schaltzentrale. Außerdem kann es logische Operationen durchführen. Diese werden in Rules festgelegt. Also in pseudo code: Wenn Schalter 1 gedrückt wird und Bedingung X erfüllt ist, dann führe Aktion 42 aus. Ziemlich mächtig.

Damit das ganze funktioniert gibt es Channels. Diesmal aber nicht MQTT Channels, sondern das sind die Kanäle zu den Bindings. Diese werden in sogenannten Things definiert. Diese wiederum werden mit Items gekoppelt, die im Prinzip Variablen verschiedener Typen widerspiegeln. Das ist am Anfang etwas verwirrend, macht aber Sinn wenn man sich eine Weile damit beschäftigt hat. Außerdem gibt es Gruppen Items, die andere Items Ordnen. Das ist aber für jetzt erstmal zu viel des Guten. Wir wollen ja letztendlich einen Befehl, wie wir es aus der SmartLife App kennen an die korrekte Steckdose schicken. Z.B. auch per App oder per Alexa Sprachbefehl.

Befehl -> Openhab -> Aktor

Im Detail

Befehl (Switch Item) -> Thing Update -> Channel Update -> Aktor Update

Ihr versteht es spätestens, wenn wir ein paar Dinge eingerichtet haben.

Tasmota

Wir besuchen also zunächst wieder eines unserer Tasmota Geräte. Dazu rufen wir im Browser die IP auf, die wir z.B. mit einem IP Scanner oder über unseren Router herausgefunden haben.

Dann gehen wir auf Configuration – MQTT und tragen dort die IP unsere Mosquitto Brokers (die gleiche wie OpenHAB in diesem Fall) ein. Der Standard-Port ist 1883. Als Client könnt ihr den Namen des Gerätes angeben. User und Password sind die Zugangsdaten zum MQTT Broker.

Wie oben erwähnt macht es sinn, die Topics am Anfang einfach zu halten. Daher gibt es bei mir einfach den Gerätenamen als Topic. Das sw am Anfang steht für switch. So unterscheide ich verschiedene Gerätetypen. Die Full Topic Konfiguration würde ich auch erstmal auf die Standards lassen. Das ganze Speichern wir und sind auf der Geräte-Seite soweit fertig.

OpenHAB again!

In der PaperUI gehen wir wieder in die Inbox und drücken wieder auf das große blaue Plus. Wir klicken uns durch bis wir wieder die folgende Ansicht haben und wählen dieses mal das Generic MQTT Thing aus.

Dann geben wir einen Logischen Namen ein und wählen die MQTT Bridge aus. So weiß das MQTT Thing, wohin es kommunizieren muss.

Ich würde auch die ThingID ändern, damit diese leichter wieder zu finden ist. Danach könnt ihr unter Configuration-Things das eben erstelle Thing finden.

Ich benenne alle meine Things nach einem Muster, damit es schön sortiert ist. Muss man aber nicht. Hier ist mal ein Screenshot meiner Things:

So nutze ich einfache Prefixes wie Astro: für das Astro-Binding (Abfragen von Sonnenauf- und Untergang) Spotify: für Spotify und so weiter.

Als nächstes legen wir im MQTT Thing die Channels an, auf denen wir tatsächlich Chatten. Da wir die Tasmota-Standards nutzen, übertragen wir diese hier einfach.

Mein SmartPlug „Werkbanklampe“ ist einer der geflashten Gosund-Plugs, an dem ein LED Strip hängt. Bei der Benennung des zweiten Channels habe ich verkackt, war aber zu Faul um das neu zu machen. Hier greife ich den Stromverbrauch ab, dazu aber später mehr. Der erste Channel ist zum An und Aus schalten. Zum erstellen eines Channels klicken wir auf das kleine Plus neben Channels.

Hier wählen wir einen Typ aus. In diesem Beispiel ist es einfach vom Typ Switch. So ist On/Off bzw. 1/0 vordefiniert und erleichtert uns das leben.

Hier tragen wir das eine Channel ID ein (z.B. PowerSwitch) und einen Namen (Label: Power Switch). Natürlich darf das MQTT Topic nicht fehlen:

Das MUSS das gleiche sein, wie wir eben in dem Tasmota Gerät eingetragen haben. Durch das SubTopic weiß Tasmota, wo der Befehl hingehen soll. Es gibt noch viele weitere SubTopics, ich gehe im Abschnitt für die RGB Lampe noch etwas darauf ein.

cmnd/swWerkbankLampe/POWER

Wir haben also ein physisches Gerät (den SmartPlug). Dieser hat verschiedene Funktionen (An/Aus Schalten, Energieverbrauch Messen). In OpenHAB haben wir ein virtuelles Gegenstück als MQTT Thing eingerichtet. Die Channels im Thing stehen für alle Funktionen die wir Nutzen möchten. Wir wollen mit MQTT kommunizieren, daher das MQTT Thing, welches selbst mit der MQTT Bridge kommuniziert, welche die Befehle an das physische Gerät überträgt. Jetzt fehlen noch die Items, die an den Channels hängen. Dazu gibt es zwei möglichkeiten. Entweder, ihr legt diese auch über das PaperUI an, was für den Anfang auch föllig okay ist. Oder wir legen diese per IDE in eine .items File an. So kann man diese schneller und leichter bearbeiten und Funktionen wie Gruppierungen und Rules lassen sich einfacher erstellen. Dazu könnt ihr einem extra Beitrag lesen. Für das jetzige Beispiel bleibe ich erstmal bei einem Item in der OpenHAB PaperUI.

Wir klicken also auf den blauen Kreis links neben dem Channel und der Add Item Dialog sollte sich öffnen. Dort wählen wir create New Item aus.

Das bringt uns zum Dialog wo wir eigentlich direkt bestätigen können in dem wir auf LINK klicken.

Nun sollte das verlinkte Item unter dem Channel zu sehen sein. Man kann auch mehrere Items auf einen Channel verlinken. Diesen UseCase hatte ich selbst aber bisher noch nicht.

Wenn wir nun in den Control Bereich wechseln, werden wir das Switch Item sehen. Bei mir ist halt auch noch der Stromverbrauch zu sehen.

Hier können wir über den Schalter unsere Steckdose An und Aus schalten.

Alle erzeugten Items könnt ihr unter Configuration – Items sehen. Auch für die Items sollte man sich ein System zur Benamung überlegen, da es hier sonst sehr schnell unübersichtlich wird.

Erkenntnis

Ganz schön viel Aufwand, hm?

Alternativ könnt ihr eure SmartLife Geräte wohl auch direkt in OpenHAB einbinden, da finde ich aber die freikonfigurierbare Variante mit Tasmota schöner. Das Tutorial dazu gibt es <hier/>.

Natürlich ist es schon cool, so die Schalter ansteuern zu können, aber richtig cool wird es erst mit der Smartphone App und wenn wir anfangen Regeln zu erstellen. Das ist aber alles deutlich Komfortabler wenn wir das in einer IDE machen. Dazu lest ihr am besten hier weiter.

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision

10 Kommentare

Sehr hilfreiche und wirklich mal gut erklärte Anleitung, allerdings wie sieht es dann mit Parametern aus, die etwas weitgreifender sind als ON/OFF ?

Ich würde gerne die Parameter einer Poolsteuerung damit über openHAB regeln. Dort gibt es dann unter anderem Parameter wie diesen:

NPFiltrationMode 1

wobei der INT am Kommando den Modus definiert

Müsste das dann nicht analog zum Switch so aussehen?
cmnd/MeinTasmotaTopic/NPFiltrationMode 0
stat/MeinTasmotaTopic/NPFiltrationMode 0

Da passiert nur leider überhaupt nichts.

Das kann ich pauschal leider auch nicht beantworten. Schick mir doch gern Mal einen Screenshot von deinem mqtt Log an meine e-mail Adresse.

Was ist das für eine Steuerung? Ggf. Brauchst du JSON transformierungen um den korrekten Teil des payload auszulesen.

Lg

Nice dexcription, kudos!

Unfortunately newer Tuya Plugs type SP22 have RealTek chips. There is no way to flash Tasmota. I’d assume that all newer Tuyas will have the new chip.

Schreibe einen Kommentar

Geb mir einen aus :)

Wenn du das Zeug hier magst, denk doch über eine Spende nach um Server und Domain zu finanzieren.

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision.

Suche & Filter