Zigbee2Tasmota-MQTT: Unterschied zwischen den Versionen
(Input aus https://forum.fhem.de/index.php/topic,113374.msg1077350.html#msg1077350) |
(→Installation: Ein paar Ergänzungen, Typo Beseitigung) |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Baustelle}} | {{Baustelle}} | ||
== Einführung == | == Einführung == | ||
[https://tasmota.github.io/docs/Zigbee/ zigbee2tasmota] ist ein Gateway um Zigbee-Geräte in ein Heimnetzwerk zu bringen, ähnlich dem zigbee2mqtt Gateway. Vorteil von zigbee2tasmota ist die freie Platzierung im WLAN des Betreibers, da es anders als zigbee2Mqtt keinen Raspberry Pi oder ähnliches braucht. Das Gateway muss lediglich mit Strom versorgt werden. Außerdem sollte erwähnt werden, das sich das Projekt noch in einem frühen Stadium befindet und die Anzahl der unterstützten Geräte geringer ist als bei z.Bsp. zigbee2mqtt. Ein guter Anlaufpunkt um herauszufinden ob und von welcher Plattform (nicht nur ZigBee) ein Gerät unterstützt wird sind die Seiten: | [https://tasmota.github.io/docs/Zigbee/ zigbee2tasmota] ist ein Gateway um Zigbee-Geräte in ein Heimnetzwerk zu bringen, ähnlich dem zigbee2mqtt Gateway. Vorteil von zigbee2tasmota ist die freie Platzierung im WLAN des Betreibers, da es anders als zigbee2Mqtt keinen Raspberry Pi oder ähnliches braucht. Das Gateway muss lediglich mit Strom versorgt werden. Außerdem sollte erwähnt werden, das sich das Projekt noch in einem frühen Stadium befindet und die Anzahl der unterstützten Geräte geringer ist als bei z.Bsp. zigbee2mqtt, sowie das der Befehlssyntax noch ständig erweitert bzw. leicht verändert wird. Es ist sicher auch eine gute Idee sich bei neuen Versionen auf der Tasmota Seite https://tasmota.github.io/docs/ das Changelog anzusehen. Ein guter Anlaufpunkt um herauszufinden ob und von welcher Plattform (nicht nur ZigBee) ein Gerät unterstützt wird sind die Seiten: https://blakadder.com/. Hier kann man entweder generell nach Geräten suchen, welche [https://templates.blakadder.com/ von Tasmota unterstützt] werden oder nach [https://zigbee.blakadder.com/ ZigBee Geräten und welches Gateway] sie unterstützt. | ||
== Installation == | == Installation == | ||
Mit der Sonoff Zigbee Bridge ist nur durch umflashen auf Tasmota eine cloudfreie Zigbee Anbindung an FHEM mit einem einzigen fertigen Gerät machbar. (Juli 2021) | |||
Der Aufbau und die Inbetriebnahme des zigbee2tasmota Gateway ist der [https://tasmota.github.io/docs/Zigbee/ Tasmota Dokumentation] zu entnehmen, eine Anleitung zum Hardwareaufbau und flashen der Coordinator-firmware ist {{Link2Forum|Topic=112502|Message=1068349|LinkText=hier}} zu finden. Bei der Inbetriebnahme, speziell im MQTT Bereich, wird man viele Parallelen zur Inbetriebnahme von klassischen Tasmota geflashten Geräten finden. So gilt das dort geschriebene bezüglich Topic Parameter auch hier. | Der Aufbau und die Inbetriebnahme des zigbee2tasmota Gateway ist der [https://tasmota.github.io/docs/Zigbee/ Tasmota Dokumentation] zu entnehmen, eine Anleitung zum Hardwareaufbau und flashen der Coordinator-firmware ist {{Link2Forum|Topic=112502|Message=1068349|LinkText=hier}} zu finden. Bei der Inbetriebnahme, speziell im MQTT Bereich, wird man viele Parallelen zur Inbetriebnahme von klassischen Tasmota geflashten Geräten finden. So gilt das dort geschriebene bezüglich Topic Parameter auch hier. | ||
Als MQTT Broker sollte vorzugsweise [[MQTT#FHEM als MQTT-Server|MQTT2_SERVER]] zum Einsatz kommen, welcher die Inbetriebnahme neuer Geräte in FHEM stark vereinfacht. Aufgrund der sehr verschachtelten JSON-Strukturen, die das Gateway verwendet, ist in jedem Fall dringend anzuraten, [[MQTT2_DEVICE]] als Client-Modul zu verwenden. | Als MQTT Broker sollte vorzugsweise [[MQTT#FHEM als MQTT-Server|MQTT2_SERVER]] zum Einsatz kommen, welcher die Inbetriebnahme neuer Geräte in FHEM stark vereinfacht. Aufgrund der sehr verschachtelten JSON-Strukturen, die das Gateway verwendet, ist in jedem Fall dringend anzuraten, [[MQTT2_DEVICE]] als Client-Modul zu verwenden. | ||
Zeile 13: | Zeile 15: | ||
set [Zigbee2tasmota] attrTemplate tasmota_zigbee2tasmota_bridge | set [Zigbee2tasmota] attrTemplate tasmota_zigbee2tasmota_bridge | ||
Dadurch werden mittels SetOption einige Einstellungen im Gateway gesetzt und die notwendigen Readings etc. erstellt. Um die neuen Einstellungen zu übernehmen erfolgt automatisch ein Neustart des Gateway. Außerdem wird die Liste der in FHEM zur Verfügung stehenden ''attrTemplates'' erweitert. | Dadurch werden mittels SetOption einige Einstellungen im Gateway gesetzt und die notwendigen Readings etc. erstellt. Um die neuen Einstellungen zu übernehmen erfolgt automatisch ein Neustart des Gateway. Außerdem wird die Liste der in FHEM zur Verfügung stehenden ''attrTemplates'' erweitert.Ob der Neustart erfolgreich durchgeführt wurde, lässt sich leicht anhand des Readings LWT ( dieses sollte auf Online stehen) und des dazugehörigen Timestamps überprüfen. Ist man nicht sicher, ob ein Neustart stattgefunden hat, kann der auch nochmal durch einen Aufruf des Webinterfaces und wählen des Buttons Restart/Neustart ausgelöst werden | ||
=== Anlegen / Vereinzeln der Geräte === | |||
Neue Geräte lassen sich einfach über das Webinterface des Gateway anmelden. Dazu in einem Browserfenster das Hauptmenü und in einem 2.Fenster die Konsole aufrufen.Im Hauptmenü den Button Zigbee Permit Join wählen. Anschließend im Konsolenfenster kontrollieren ob neue Geräte angelernt werden können, dort sollte nun so etwas in der Art stehen, wie: | |||
11:43:10.647 MQT: stat/tasmota_3809AB/RESULT = {"ZbPermitJoin":"Done"} | |||
11:43:10.756 MQT: tele/tasmota_3809AB/RESULT = {"ZbState":{"Status":21,"Message":"Enable Pairing mode for 60 seconds"} | |||
Jetzt das neue Gerät nach Herstellerangaben in den Pairingmodus bringen und dabei das Konsolenfenster beobachten, dort sollte nach erfolgreichem Anlernen in den letzten Zeilen so etwas in der Art stehen, wie: | |||
<nowiki>12:49:44.237 MQT: tele/tasmota_3809AB/RESULT = {"ZbBind":{"Device":"0x1DD1","Status":0,"StatusMessage":"SUCCESS"}}</nowiki> | |||
Im Hauptmenü Fenster sollte jetzt oberhalb der Befehlsschaltflächen eine neue Zeile erscheinen, zum Beispiel: | |||
'''Device 0x1DD1''' | |||
Jetzt das Webinterface von FHEM aufrufen, dort sollte jetzt im Raum MQTT2_DEVICE ein neues Device entstanden sein.Auf dieses Device dann wieder das passende ''attrTemplate'' auswählen und ausführen. z.Bsp.: | |||
set [MQTT2_z2t_WXYZ] attrTemplate tasmota_zigbee2tasmota_light_dimmer | set [MQTT2_z2t_WXYZ] attrTemplate tasmota_zigbee2tasmota_light_dimmer | ||
Grundlegende Informationen zu attrTemplate im MQTT2-Kontext sind bei [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]] zu finden, die Namenskonvention für verschiedene Leuchtmitteltypen orientiert sich an den Gepflogenheiten bei [[MQTT2-Module - Praxisbeispiele#IKEA-Tradfri-Birne|zigbee2mqtt]]. Im Idealfall war das alles und das neu angelegte Gerät sollte über FHEM steuerbar sein bzw. Werte empfangen. | |||
Bei batteriebetriebenen Geräten (Fernbedienungen, Fenster/Türkontakte usw.) kann es sinnvoll sein, während des Anlernvorganges den sogenannten Schlafmodus des Gerätes zu verhindern z.Bsp.: durch drücken einer Taste oder auslösen einer Meldung. | |||
Sollte per ''autocreate'' kein Gerät automatisch angelegt werden bitte als erstes überprüfen ob ''autocreate'' in FHEM auf ''active'' steht. Ansonsten bitte die [[MQTT2-Module - Praxisbeispiele#autocreate funktioniert scheinbar nicht?|hier]] genannten Punkte überprüfen. Da jetzt jedoch kein neues Gerät in die Datenbank des zigbee2tasmota mehr eingetragen wird bzw. es schon eingetragen ist, muss das Anlegen eines Devices in FHEM entweder von Hand angestoßen werden (bei Geräten die nicht zyklisch senden) oder es muss abgewartet werden bis ein Sensor oder ein ähnliches Gerät, (welches zyklisch Werte sendet) wieder Werte sendet. | Sollte per ''autocreate'' kein Gerät automatisch angelegt werden bitte als erstes überprüfen ob ''autocreate'' in FHEM auf ''active'' steht. Ansonsten bitte die [[MQTT2-Module - Praxisbeispiele#autocreate funktioniert scheinbar nicht?|hier]] genannten Punkte überprüfen. Da jetzt jedoch kein neues Gerät in die Datenbank des zigbee2tasmota mehr eingetragen wird bzw. es schon eingetragen ist, muss das Anlegen eines Devices in FHEM entweder von Hand angestoßen werden (bei Geräten die nicht zyklisch senden) oder es muss abgewartet werden bis ein Sensor oder ein ähnliches Gerät, (welches zyklisch Werte sendet) wieder Werte sendet. | ||
Zeile 28: | Zeile 39: | ||
Das Anlegen eines Devices von Hand anzustoßen funktioniert bei Schaltern meistens durch Drücken einer beliebigen Taste. Ansonsten muss das Webinterface des zibee2tasmota Gateways durch z.b. Eingabe der IP-Adresse aufgerufen werden. Im Hauptmenü dann Konsole auswählen. In die Zeile Befehl eingeben folgenden Befehl eingeben: | Das Anlegen eines Devices von Hand anzustoßen funktioniert bei Schaltern meistens durch Drücken einer beliebigen Taste. Ansonsten muss das Webinterface des zibee2tasmota Gateways durch z.b. Eingabe der IP-Adresse aufgerufen werden. Im Hauptmenü dann Konsole auswählen. In die Zeile Befehl eingeben folgenden Befehl eingeben: | ||
ZbInfo | |||
Jetzt werden im Terminalfenster alle bereits im Gateway angelegten Devices angezeigt: | Jetzt werden im Terminalfenster alle bereits im Gateway angelegten Devices angezeigt: | ||
<nowiki>12:04:32.180 MQT: tele/tasmota_3809AB/6B3E/SENSOR = {"ZbInfo":{"0x6B3E":{"Device":"0x6B3E","IEEEAddr":"0x680AE2FFFE7F1E1E","ModelId":"TRADFRI bulb GU10 WW 400lm","Manufacturer":"IKEA of Sweden","Endpoints":[1],"Config":["O01","L01"],"Power":0,"Dimmer":155,"Reachable":true,"LastSeen":860,"LastSeenEpoch":1609930212,"LinkQuality":144}}} | |||
12:04:32.186 MQT: stat/tasmota_3809AB/RESULT = {"ZbInfo":"Done"}</nowiki> | |||
Hierbei ist die Zahlen/Buchstaben Kombi hinter dem Wort Device von Interesse. Im obigen Beispiel die '' | Hierbei ist die Zahlen/Buchstaben Kombi hinter dem Wort Device von Interesse. Im obigen Beispiel die ''0x6B3E'' als sogenannte Short adresse der IKEA Tradfri bulb. Dieses Device schaltet man mithilfe des Befehls | ||
ZbSend { "device":"0x1234", "send":{"Power":"ON"} } | ZbSend { "device":"0x1234", "send":{"Power":"ON"} } | ||
Zeile 43: | Zeile 55: | ||
ZbSend { "device":"0x1234", "send":{"Power":"OFF"} } | ZbSend { "device":"0x1234", "send":{"Power":"OFF"} } | ||
einmal ein und wieder aus. Wobei ''0x1234'' der jeweiligen Short Adresse des Zigbee Gerätes entsprechen muss | einmal ein und wieder aus. Wobei ''0x1234'' der jeweiligen Short Adresse des Zigbee Gerätes entsprechen muss. Jetzt sollte in FHEM per ''autocreate'' ein neues Device im Raum MQTT2-Devices angelegt worden sein. | ||
Es ist auch möglich aus FHEM heraus im Bridge-Device die nötigen Befehle '' | Es ist auch möglich aus FHEM heraus im Bridge-Device die nötigen Befehle ''ZbInfo'' und ''ZbSend'' einzugeben. Da hier aber keine Rückmeldung, insbesondere über die Schaltbefehle zu sehen ist, sollte die Zigbee2Tasmota Konsole zu Kontrollzwecken trotzdem geöffnet sein. | ||
== Groups and Binding == | |||
etwas frei übersetzt: Gruppen und (Direkt-) Verbindungen. | etwas frei übersetzt: Gruppen und (Direkt-) Verbindungen. | ||
=== Gruppen === | |||
Zigbee2tasmota unterstützt das Zigbee Feature der sogenannten Gruppen d.h. man kann mehrere (steuerbare-) Geräte zu einer Gruppe zusammenfassen und diese Geräte über einen neuen (Gruppen-) Namen ansprechen und steuern. Gruppen werden in Zigbee2tasmota über den Befehl ZbSend angelegt und Lampen hinzugefügt. | Zigbee2tasmota unterstützt das Zigbee Feature der sogenannten Gruppen d.h. man kann mehrere (steuerbare-) Geräte zu einer Gruppe zusammenfassen und diese Geräte über einen neuen (Gruppen-) Namen ansprechen und steuern. Gruppen werden in Zigbee2tasmota über den Befehl ZbSend angelegt und Lampen hinzugefügt. | ||
z.Bsp.: | z.Bsp.: | ||
ZbSend {"device":"0xF6F8","Send":{"AddGroup":100}} | <nowiki>ZbSend {"device":"0xF6F8","Send":{"AddGroup":100}}</nowiki> | ||
fügt dieser Befehl das Gerät 0xF6F8 zur Gruppe mit dem Namen 100 hinzu. Sollte die Gruppe noch nicht existieren wird sie angelegt. | fügt dieser Befehl das Gerät 0xF6F8 zur Gruppe mit dem Namen 100 hinzu. Sollte die Gruppe noch nicht existieren wird sie angelegt. | ||
Der Befehl: | Der Befehl: | ||
ZbSend {"device":"0xF5A6","Send":{"AddGroup":100}} | <nowiki>ZbSend {"device":"0xF5A6","Send":{"AddGroup":100}}</nowiki> | ||
fügt das Gerät 0xF5A6 als 2.Gerät zur bestehenden Gruppe 100 hinzu. Es ist nicht möglich leere Gruppen anzulegen | fügt das Gerät 0xF5A6 als 2.Gerät zur bestehenden Gruppe 100 hinzu. Es ist nicht möglich leere Gruppen anzulegen | ||
Zeile 77: | Zeile 89: | ||
An einer Implementierung der Gruppenfunktion von Zigbee2Tasmota in FHEM wird momentan gearbeitet. | An einer Implementierung der Gruppenfunktion von Zigbee2Tasmota in FHEM wird momentan gearbeitet. | ||
=== Binding === | |||
Als Binding in de Zigbee2Tasmota Welt wird die direkte Verbindung (ohne über eine Zentrale, wie FHEM zu laufen) eines Schalters (Fernbedienung) an ein zu schaltendes Gerät (Lampe) bzw. an eine Gruppe (s.o. Groups) bezeichnet. Mit Hilfe des Befehles ''ZbBind'' wird ein Schaltgerät (Fernbedienung) direkt mit einem schaltbaren Gerät verbunden um für dieses Gerät rudimäre Schalthandlungen zu ermöglichen. Meistens gehen an/aus und dimmen. | |||
So bindet beispielsweise der Befehl | So bindet beispielsweise der Befehl | ||
Zeile 86: | Zeile 99: | ||
die Fernbedienung mit der Shortadress 0xA5A6 an die oben schon erwähnte Gruppe 100.Der genaue Syntax und die Bedeutung der einzelnen Befehlsteile ist bitte der Zigbee2Tasmota Dokumentation (https://tasmota.github.io/docs/Zigbee/) zuentnehmen. Bindings haben den Vorteil der direkten Kommunikation zu steuerndem Gerät und steuerndem Gerät, so dass die Zentrale nicht zwingend benötigt wird und sogar aus sein kann. Nachteilig ist, dass die Zentrale nicht ohne weiteres von der Schalthandlung erfährt. | die Fernbedienung mit der Shortadress 0xA5A6 an die oben schon erwähnte Gruppe 100.Der genaue Syntax und die Bedeutung der einzelnen Befehlsteile ist bitte der Zigbee2Tasmota Dokumentation (https://tasmota.github.io/docs/Zigbee/) zuentnehmen. Bindings haben den Vorteil der direkten Kommunikation zu steuerndem Gerät und steuerndem Gerät, so dass die Zentrale nicht zwingend benötigt wird und sogar aus sein kann. Nachteilig ist, dass die Zentrale nicht ohne weiteres von der Schalthandlung erfährt. | ||
Bindings werden in den Readings des Bridge-devices angezeigt. Sie sind ansonsten für FHEM nicht sichtbar und auch nicht direkt beeinflussbar . | Bindings werden in den Readings des Bridge-devices angezeigt. Sie sind ansonsten für FHEM nicht sichtbar und auch nicht direkt beeinflussbar. | ||
==Beispieldefinitionen verschiedener Geräte== | |||
Alle Devices wurden nach dem Zurücksetzen auf Werkseinstellung (siehe jeweilige Bedienungsanleitung) wie oben beschrieben über die Zigbee2tasmota Konsole mit dem Befehl ZbSend { "device":"0x1234", "send":{"Power":"ON"} } geschaltet und auch erfolgreich automatisch in FHEM im Raum ''MQTT2_DEVICE'' erstellt. | |||
=== Müller Licht: tint smart switch === | |||
Gerätebeschreibung beim [https://zigbee.blakadder.com/Muller_Licht_404021.html blakadder.com]. Das dann angewendete attrTemplate trägt die Bezeichnung ''tasmota_zigbee2tasmota_single_switch''. Daraus ergibt sich folgende Definition: | |||
<syntaxhighlight lang="perl">defmod MQTT2_z2t_0187 MQTT2_DEVICE z2t_0187 | |||
attr MQTT2_z2t_0187 IODev MQTT2server | |||
attr MQTT2_z2t_0187 icon light_light | |||
attr MQTT2_z2t_0187 jsonMap Power:state Device:0 | |||
attr MQTT2_z2t_0187 readingList tele/zb2tasmota/0187/SENSOR:.* { $EVENT =~ s/"Power":1/"Power":"on"/g;; $EVENT =~ s/"Power":0/"Power":"off"/g;; $EVENT =~ m,^.*(..Device.+)..$, ? json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x0187.:(.*).., ? json2nameValue($1,'',$JSONMAP) : undef } | |||
attr MQTT2_z2t_0187 room MQTT2_DEVICE | |||
attr MQTT2_z2t_0187 setExtensionsEvent 1 | |||
attr MQTT2_z2t_0187 setList on cmnd/zb2tasmota/ZbSend {"device":"0x0187","send":{"Power":"On"}}\ | |||
off cmnd/zb2tasmota/ZbSend {"device":"0x0187","send":{"Power":"Off"}} | |||
attr MQTT2_z2t_0187 setStateList on off</syntaxhighlight> | |||
Bitte Beachten: Das Standard Icon der dimmbaren Lampe wurde durch ein einfaches Lampen Icon ersetzt. Genauso können auch andere Geräteattribute nachträglich verändert werden. Bitte Vorsicht walten lassen, durch falsches Setzen von Attributen kann ein Device unbrauchbar werden. | |||
=== Müller Licht: tint GU10 Spot warm- bis tageslichtweiß 350lm === | |||
Gerätebeschreibung beim [https://zigbee.blakadder.com/Muller_Licht_404006.html blakadder.com]. Das dann angewendete template trägt die Bezeichnung ''tasmota_zigbee2tasmota_light_cct''. | |||
Daraus ergibt sich folgende Definition: | |||
<syntaxhighlight lang="perl">defmod MQTT2_z2t_6301 MQTT2_DEVICE z2t_6301 | |||
attr MQTT2_z2t_6301 IODev MQTTBroker | |||
attr MQTT2_z2t_6301 alias Deckenlampe1 | |||
attr MQTT2_z2t_6301 devStateIcon {zigbee2mqtt_devStateIcon255($name)} | |||
attr MQTT2_z2t_6301 group Zigbee2Tasmotagroup100 | |||
attr MQTT2_z2t_6301 icon light_control | |||
attr MQTT2_z2t_6301 jsonMap Dimmer:brightness Power:state Device:0 Hue:hue Sat:saturation CT:ct | |||
attr MQTT2_z2t_6301 model tasmota_zigbee2tasmota_light_cct | |||
attr MQTT2_z2t_6301 readingList tele/zb2tasmota/6301/SENSOR:.* { $EVENT =~ s/"Power":1/"Power":"on"/g;; $EVENT =~ s/"Power":0/"Power":"off"/g;; $EVENT =~ m,^.*(..Device.+)..$, ? json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x6301.:(.*).., ? json2nameValue($1,'',$JSONMAP) : undef } | |||
attr MQTT2_z2t_6301 room MQTT2_DEVICE | |||
attr MQTT2_z2t_6301 setExtensionsEvent 1 | |||
attr MQTT2_z2t_6301 setList on cmnd/zb2tasmota/ZbSend {"device":"0x6301","send":{"Power":"On"}}\ | |||
off cmnd/zb2tasmota/ZbSend {"device":"0x6301","send":{"Power":"Off"}}\ | |||
brightness:colorpicker,BRI,0,5,254 cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"Dimmer":$EVTPART1} }\ | |||
dimup:noArg cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"DimmerUp":""} }\ | |||
dimdown:noArg cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"DimmerDown":""} }\ | |||
ct:colorpicker,CT,153,5,370 cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"CT":$EVTPART1} } | |||
attr MQTT2_z2t_6301 setStateList on off | |||
attr MQTT2_z2t_6301 webCmd on:off:brightness:ct</syntaxhighlight> | |||
Hier wurde das Attribut webCmd um die Befehle brightness und ct erweitert. 3 dieser Lampen wurden mittels des Befehls | |||
<syntaxhighlight lang="perl"> ZbSend {"device":"0x6301",,"Send":{"AddGroup":100}}</syntaxhighlight> | |||
zu einer Gruppe (group:100) zusammengefasst und haben deshalb die Readings: AddGroup, AddGroupStatus, AddGroupStatusMessage und das Attribut group. | |||
== Verschiedenes == | == Verschiedenes == |
Aktuelle Version vom 18. Juli 2021, 21:39 Uhr
An dieser Seite wird momentan noch gearbeitet. |
Einführung
zigbee2tasmota ist ein Gateway um Zigbee-Geräte in ein Heimnetzwerk zu bringen, ähnlich dem zigbee2mqtt Gateway. Vorteil von zigbee2tasmota ist die freie Platzierung im WLAN des Betreibers, da es anders als zigbee2Mqtt keinen Raspberry Pi oder ähnliches braucht. Das Gateway muss lediglich mit Strom versorgt werden. Außerdem sollte erwähnt werden, das sich das Projekt noch in einem frühen Stadium befindet und die Anzahl der unterstützten Geräte geringer ist als bei z.Bsp. zigbee2mqtt, sowie das der Befehlssyntax noch ständig erweitert bzw. leicht verändert wird. Es ist sicher auch eine gute Idee sich bei neuen Versionen auf der Tasmota Seite https://tasmota.github.io/docs/ das Changelog anzusehen. Ein guter Anlaufpunkt um herauszufinden ob und von welcher Plattform (nicht nur ZigBee) ein Gerät unterstützt wird sind die Seiten: https://blakadder.com/. Hier kann man entweder generell nach Geräten suchen, welche von Tasmota unterstützt werden oder nach ZigBee Geräten und welches Gateway sie unterstützt.
Installation
Mit der Sonoff Zigbee Bridge ist nur durch umflashen auf Tasmota eine cloudfreie Zigbee Anbindung an FHEM mit einem einzigen fertigen Gerät machbar. (Juli 2021)
Der Aufbau und die Inbetriebnahme des zigbee2tasmota Gateway ist der Tasmota Dokumentation zu entnehmen, eine Anleitung zum Hardwareaufbau und flashen der Coordinator-firmware ist hier zu finden. Bei der Inbetriebnahme, speziell im MQTT Bereich, wird man viele Parallelen zur Inbetriebnahme von klassischen Tasmota geflashten Geräten finden. So gilt das dort geschriebene bezüglich Topic Parameter auch hier. Als MQTT Broker sollte vorzugsweise MQTT2_SERVER zum Einsatz kommen, welcher die Inbetriebnahme neuer Geräte in FHEM stark vereinfacht. Aufgrund der sehr verschachtelten JSON-Strukturen, die das Gateway verwendet, ist in jedem Fall dringend anzuraten, MQTT2_DEVICE als Client-Modul zu verwenden.
Define eines MQTT2-Devices als "Bridge"
Nach Eingabe der MQTT Daten in die entsprechende Maske am zigbee2mqtt-Gateway wird das Gateway automatisch neu gestartet und wenn alles korrekt ist, wird vom MQTT2_Server ein neues MQTT2_DEVICE-Device im Raum MQTT2_DEVICE angelegt. Ähnlich wie bei zigbee2mqtt wird auf dieses Device das tasmota_zigbee2tasmota_bridge Template angewendet
set [Zigbee2tasmota] attrTemplate tasmota_zigbee2tasmota_bridge
Dadurch werden mittels SetOption einige Einstellungen im Gateway gesetzt und die notwendigen Readings etc. erstellt. Um die neuen Einstellungen zu übernehmen erfolgt automatisch ein Neustart des Gateway. Außerdem wird die Liste der in FHEM zur Verfügung stehenden attrTemplates erweitert.Ob der Neustart erfolgreich durchgeführt wurde, lässt sich leicht anhand des Readings LWT ( dieses sollte auf Online stehen) und des dazugehörigen Timestamps überprüfen. Ist man nicht sicher, ob ein Neustart stattgefunden hat, kann der auch nochmal durch einen Aufruf des Webinterfaces und wählen des Buttons Restart/Neustart ausgelöst werden
Anlegen / Vereinzeln der Geräte
Neue Geräte lassen sich einfach über das Webinterface des Gateway anmelden. Dazu in einem Browserfenster das Hauptmenü und in einem 2.Fenster die Konsole aufrufen.Im Hauptmenü den Button Zigbee Permit Join wählen. Anschließend im Konsolenfenster kontrollieren ob neue Geräte angelernt werden können, dort sollte nun so etwas in der Art stehen, wie:
11:43:10.647 MQT: stat/tasmota_3809AB/RESULT = {"ZbPermitJoin":"Done"}
11:43:10.756 MQT: tele/tasmota_3809AB/RESULT = {"ZbState":{"Status":21,"Message":"Enable Pairing mode for 60 seconds"}
Jetzt das neue Gerät nach Herstellerangaben in den Pairingmodus bringen und dabei das Konsolenfenster beobachten, dort sollte nach erfolgreichem Anlernen in den letzten Zeilen so etwas in der Art stehen, wie:
12:49:44.237 MQT: tele/tasmota_3809AB/RESULT = {"ZbBind":{"Device":"0x1DD1","Status":0,"StatusMessage":"SUCCESS"}}
Im Hauptmenü Fenster sollte jetzt oberhalb der Befehlsschaltflächen eine neue Zeile erscheinen, zum Beispiel:
Device 0x1DD1
Jetzt das Webinterface von FHEM aufrufen, dort sollte jetzt im Raum MQTT2_DEVICE ein neues Device entstanden sein.Auf dieses Device dann wieder das passende attrTemplate auswählen und ausführen. z.Bsp.:
set [MQTT2_z2t_WXYZ] attrTemplate tasmota_zigbee2tasmota_light_dimmer
Grundlegende Informationen zu attrTemplate im MQTT2-Kontext sind bei MQTT2_DEVICE zu finden, die Namenskonvention für verschiedene Leuchtmitteltypen orientiert sich an den Gepflogenheiten bei zigbee2mqtt. Im Idealfall war das alles und das neu angelegte Gerät sollte über FHEM steuerbar sein bzw. Werte empfangen.
Bei batteriebetriebenen Geräten (Fernbedienungen, Fenster/Türkontakte usw.) kann es sinnvoll sein, während des Anlernvorganges den sogenannten Schlafmodus des Gerätes zu verhindern z.Bsp.: durch drücken einer Taste oder auslösen einer Meldung.
Sollte per autocreate kein Gerät automatisch angelegt werden bitte als erstes überprüfen ob autocreate in FHEM auf active steht. Ansonsten bitte die hier genannten Punkte überprüfen. Da jetzt jedoch kein neues Gerät in die Datenbank des zigbee2tasmota mehr eingetragen wird bzw. es schon eingetragen ist, muss das Anlegen eines Devices in FHEM entweder von Hand angestoßen werden (bei Geräten die nicht zyklisch senden) oder es muss abgewartet werden bis ein Sensor oder ein ähnliches Gerät, (welches zyklisch Werte sendet) wieder Werte sendet.
Hierbei kann es hilfreich sein in FHEM den Event Monitor zu beobachten. Das Anlegen eines Devices von Hand anzustoßen funktioniert bei Schaltern meistens durch Drücken einer beliebigen Taste. Ansonsten muss das Webinterface des zibee2tasmota Gateways durch z.b. Eingabe der IP-Adresse aufgerufen werden. Im Hauptmenü dann Konsole auswählen. In die Zeile Befehl eingeben folgenden Befehl eingeben:
ZbInfo
Jetzt werden im Terminalfenster alle bereits im Gateway angelegten Devices angezeigt:
12:04:32.180 MQT: tele/tasmota_3809AB/6B3E/SENSOR = {"ZbInfo":{"0x6B3E":{"Device":"0x6B3E","IEEEAddr":"0x680AE2FFFE7F1E1E","ModelId":"TRADFRI bulb GU10 WW 400lm","Manufacturer":"IKEA of Sweden","Endpoints":[1],"Config":["O01","L01"],"Power":0,"Dimmer":155,"Reachable":true,"LastSeen":860,"LastSeenEpoch":1609930212,"LinkQuality":144}}} 12:04:32.186 MQT: stat/tasmota_3809AB/RESULT = {"ZbInfo":"Done"}
Hierbei ist die Zahlen/Buchstaben Kombi hinter dem Wort Device von Interesse. Im obigen Beispiel die 0x6B3E als sogenannte Short adresse der IKEA Tradfri bulb. Dieses Device schaltet man mithilfe des Befehls
ZbSend { "device":"0x1234", "send":{"Power":"ON"} }
bzw.
ZbSend { "device":"0x1234", "send":{"Power":"OFF"} }
einmal ein und wieder aus. Wobei 0x1234 der jeweiligen Short Adresse des Zigbee Gerätes entsprechen muss. Jetzt sollte in FHEM per autocreate ein neues Device im Raum MQTT2-Devices angelegt worden sein. Es ist auch möglich aus FHEM heraus im Bridge-Device die nötigen Befehle ZbInfo und ZbSend einzugeben. Da hier aber keine Rückmeldung, insbesondere über die Schaltbefehle zu sehen ist, sollte die Zigbee2Tasmota Konsole zu Kontrollzwecken trotzdem geöffnet sein.
Groups and Binding
etwas frei übersetzt: Gruppen und (Direkt-) Verbindungen.
Gruppen
Zigbee2tasmota unterstützt das Zigbee Feature der sogenannten Gruppen d.h. man kann mehrere (steuerbare-) Geräte zu einer Gruppe zusammenfassen und diese Geräte über einen neuen (Gruppen-) Namen ansprechen und steuern. Gruppen werden in Zigbee2tasmota über den Befehl ZbSend angelegt und Lampen hinzugefügt. z.Bsp.:
ZbSend {"device":"0xF6F8","Send":{"AddGroup":100}}
fügt dieser Befehl das Gerät 0xF6F8 zur Gruppe mit dem Namen 100 hinzu. Sollte die Gruppe noch nicht existieren wird sie angelegt. Der Befehl:
ZbSend {"device":"0xF5A6","Send":{"AddGroup":100}}
fügt das Gerät 0xF5A6 als 2.Gerät zur bestehenden Gruppe 100 hinzu. Es ist nicht möglich leere Gruppen anzulegen In den Readings des Gerätes gibt es, wenn das Gerät erfolgreich zu einer Gruppe hinzugefügt wurde 3 neue Readings: AddGroup, AddGroupStatus, AddGroupStatusMsg hier im Auszug aus einer RAW-Defintion:
setstate MQTT2_z2t_F5A6 off
setstate MQTT2_z2t_F5A6 2020-08-08 15:04:14 0004_00 006400
setstate MQTT2_z2t_F5A6 2020-08-10 16:05:45 0004_02 0602F0006400
setstate MQTT2_z2t_F5A6 2020-08-08 15:04:14 AddGroup 100
setstate MQTT2_z2t_F5A6 2020-08-08 15:04:14 AddGroupStatus 0
setstate MQTT2_z2t_F5A6 2020-08-08 15:04:14 AddGroupStatusMsg SUCCESS
Die Gruppe kann unter ihrem Gruppennamen angesprochen und geschaltet werden, also z.Bsp.:
ZbSend { "group":"100", "send":{"Power":"ON"} }
An einer Implementierung der Gruppenfunktion von Zigbee2Tasmota in FHEM wird momentan gearbeitet.
Binding
Als Binding in de Zigbee2Tasmota Welt wird die direkte Verbindung (ohne über eine Zentrale, wie FHEM zu laufen) eines Schalters (Fernbedienung) an ein zu schaltendes Gerät (Lampe) bzw. an eine Gruppe (s.o. Groups) bezeichnet. Mit Hilfe des Befehles ZbBind wird ein Schaltgerät (Fernbedienung) direkt mit einem schaltbaren Gerät verbunden um für dieses Gerät rudimäre Schalthandlungen zu ermöglichen. Meistens gehen an/aus und dimmen.
So bindet beispielsweise der Befehl
ZbBind {"Device":"0xA5A6","ToGroup":100,"Endpoint":1,"Cluster":6}
die Fernbedienung mit der Shortadress 0xA5A6 an die oben schon erwähnte Gruppe 100.Der genaue Syntax und die Bedeutung der einzelnen Befehlsteile ist bitte der Zigbee2Tasmota Dokumentation (https://tasmota.github.io/docs/Zigbee/) zuentnehmen. Bindings haben den Vorteil der direkten Kommunikation zu steuerndem Gerät und steuerndem Gerät, so dass die Zentrale nicht zwingend benötigt wird und sogar aus sein kann. Nachteilig ist, dass die Zentrale nicht ohne weiteres von der Schalthandlung erfährt.
Bindings werden in den Readings des Bridge-devices angezeigt. Sie sind ansonsten für FHEM nicht sichtbar und auch nicht direkt beeinflussbar.
Beispieldefinitionen verschiedener Geräte
Alle Devices wurden nach dem Zurücksetzen auf Werkseinstellung (siehe jeweilige Bedienungsanleitung) wie oben beschrieben über die Zigbee2tasmota Konsole mit dem Befehl ZbSend { "device":"0x1234", "send":{"Power":"ON"} } geschaltet und auch erfolgreich automatisch in FHEM im Raum MQTT2_DEVICE erstellt.
Müller Licht: tint smart switch
Gerätebeschreibung beim blakadder.com. Das dann angewendete attrTemplate trägt die Bezeichnung tasmota_zigbee2tasmota_single_switch. Daraus ergibt sich folgende Definition:
defmod MQTT2_z2t_0187 MQTT2_DEVICE z2t_0187
attr MQTT2_z2t_0187 IODev MQTT2server
attr MQTT2_z2t_0187 icon light_light
attr MQTT2_z2t_0187 jsonMap Power:state Device:0
attr MQTT2_z2t_0187 readingList tele/zb2tasmota/0187/SENSOR:.* { $EVENT =~ s/"Power":1/"Power":"on"/g;; $EVENT =~ s/"Power":0/"Power":"off"/g;; $EVENT =~ m,^.*(..Device.+)..$, ? json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x0187.:(.*).., ? json2nameValue($1,'',$JSONMAP) : undef }
attr MQTT2_z2t_0187 room MQTT2_DEVICE
attr MQTT2_z2t_0187 setExtensionsEvent 1
attr MQTT2_z2t_0187 setList on cmnd/zb2tasmota/ZbSend {"device":"0x0187","send":{"Power":"On"}}\
off cmnd/zb2tasmota/ZbSend {"device":"0x0187","send":{"Power":"Off"}}
attr MQTT2_z2t_0187 setStateList on off
Bitte Beachten: Das Standard Icon der dimmbaren Lampe wurde durch ein einfaches Lampen Icon ersetzt. Genauso können auch andere Geräteattribute nachträglich verändert werden. Bitte Vorsicht walten lassen, durch falsches Setzen von Attributen kann ein Device unbrauchbar werden.
Müller Licht: tint GU10 Spot warm- bis tageslichtweiß 350lm
Gerätebeschreibung beim blakadder.com. Das dann angewendete template trägt die Bezeichnung tasmota_zigbee2tasmota_light_cct. Daraus ergibt sich folgende Definition:
defmod MQTT2_z2t_6301 MQTT2_DEVICE z2t_6301
attr MQTT2_z2t_6301 IODev MQTTBroker
attr MQTT2_z2t_6301 alias Deckenlampe1
attr MQTT2_z2t_6301 devStateIcon {zigbee2mqtt_devStateIcon255($name)}
attr MQTT2_z2t_6301 group Zigbee2Tasmotagroup100
attr MQTT2_z2t_6301 icon light_control
attr MQTT2_z2t_6301 jsonMap Dimmer:brightness Power:state Device:0 Hue:hue Sat:saturation CT:ct
attr MQTT2_z2t_6301 model tasmota_zigbee2tasmota_light_cct
attr MQTT2_z2t_6301 readingList tele/zb2tasmota/6301/SENSOR:.* { $EVENT =~ s/"Power":1/"Power":"on"/g;; $EVENT =~ s/"Power":0/"Power":"off"/g;; $EVENT =~ m,^.*(..Device.+)..$, ? json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x6301.:(.*).., ? json2nameValue($1,'',$JSONMAP) : undef }
attr MQTT2_z2t_6301 room MQTT2_DEVICE
attr MQTT2_z2t_6301 setExtensionsEvent 1
attr MQTT2_z2t_6301 setList on cmnd/zb2tasmota/ZbSend {"device":"0x6301","send":{"Power":"On"}}\
off cmnd/zb2tasmota/ZbSend {"device":"0x6301","send":{"Power":"Off"}}\
brightness:colorpicker,BRI,0,5,254 cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"Dimmer":$EVTPART1} }\
dimup:noArg cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"DimmerUp":""} }\
dimdown:noArg cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"DimmerDown":""} }\
ct:colorpicker,CT,153,5,370 cmnd/zb2tasmota/ZbSend { "device":"0x6301", "send":{"CT":$EVTPART1} }
attr MQTT2_z2t_6301 setStateList on off
attr MQTT2_z2t_6301 webCmd on:off:brightness:ct
Hier wurde das Attribut webCmd um die Befehle brightness und ct erweitert. 3 dieser Lampen wurden mittels des Befehls
ZbSend {"device":"0x6301",,"Send":{"AddGroup":100}}
zu einer Gruppe (group:100) zusammengefasst und haben deshalb die Readings: AddGroup, AddGroupStatus, AddGroupStatusMessage und das Attribut group.
Verschiedenes
tbd
Links
- Thread für Verbesserungsvorschläge zum Artikel
- Thread zur Entwicklung der attrTemplate für MQTT2_DEVICE
- Forenbeitrag zum Hardwareaufbau und flashen der Coordinator-firmware