Zigbee2Tasmota-MQTT

Aus FHEMWiki
Wechseln zu: Navigation, Suche


Clock - Under Construction.svg 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 .

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

Hinweise