Zigbee2Tasmota-MQTT
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. 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
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.
Vereinzeln der Geräte
Nachdem der Neustart abgeschlossen ist kann man per Auswahlliste den Befehl permit_join aktivieren um neue Geräte an das Gateway und somit FHEM anzulernen. Jedes neu angelernte Gerät erzeugt in FHEM ein neues Device im Raum MQTT2_DEVICE. 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. (tbd: Sensoren und Fernbedienungen)
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:
ZbStatus2
Jetzt werden im Terminalfenster alle bereits im Gateway angelegten Devices angezeigt:
13:55:15 MQT: stat/zb2tasmota/RESULT = {"ZbStatus2":[{"Device":"0x0187","IEEEAddr":"0xEEEE0302010374FD","ModelId":"tint Smart Switch","Manufacturer":"MLI","Endpoints":["0x01","0xF2"]},"Device":"0xA5A6","IEEEAddr":"0x588E81FFFE144884","ModelId":"TRADFRI on/off switch","Manufacturer":"IKEA of Sweden","Endpoints":["0x01"]},{"Device":"0x1469","IEEEAddr":"0x0000000000000000","Endpoints":[]},{"Device":"0xF6F8","IEEEAddr":"0x00158D0002CA4CA7","ModelId":"ZBT-ColorTemperature","Manufacturer":"MLI","Endpoints":["0x01","0xF2"]}]}
Hierbei ist die Zahlen/Buchstaben Kombi hinter dem Wort Device von Interesse. Im obigen Beispiel die 0x0187 als sogenannte Short adresse des Tint Smart switches. 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 (also 0x0187 lauten würde für den Smart Switch und 0xF6F8 für die MLI-Leuchte). 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 ZbStatus2 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 .
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