Ebay Artikel: 264755506031
Original englische Doku: https://tasmota.github.io/docs/Zigbee/
TASMOTA D1-Mini:
Neue Firmware downloaden: flashtool.zip
Neue Firmware kompilieren: https://github.com/arendst/Tasmota/blob/development/BUILDS.md
Anleitung Online Compiler (GitHub Account erforderlich): https://www.youtube.com/watch?v=WashxTcHiDc
GitHub Compile your Build: https://tasmota.github.io/docs/Compile-your-build/
GitPod (Easy-Compiler): https://tasmota.github.io/docs/Gitpod/
GitHub Login: https://github.com/login
Enable serial communication with Zigbee CC2530
file: my_user_config.h #define APP_TIMEZONE 99 #undef MY_LANGUAGE #define MY_LANGUAGE de_DE #define USE_ZIGBEE #define USE_ZIGBEE_ZNP
Kommando zum Kompilieren:
platformio run -e tasmota
ZigBee CC2530:
Neue Firmware downloaden: https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default
CC2530 | D1-Mini |
---|---|
GND | G |
VCC | 3v3 |
P02 | D8 |
P03 | D7 |
Die Einbindung in das lokale Netzwerk wird so durchgeführt, wie hier im Wiki an anderer Stelle beschrieben (Nur bis zum finden der IP-Adresse befolgen, dann wieder hierher zurück kehren)
Tasmota ins WLAN einbinden
Nachdem Tasmota für das lokale WLAN konfiguriert ist und über den Webbrowser erreichbar ist, muss zunächst die richtige Vorlage eingestellt werden:
Bitte folgende Vorlage kopieren und unter Sonstige Konfiguration aktivieren.
{"NAME":"Zigbee","GPIO":[0,0,0,0,0,0,0,0,0,166,0,165,0],"FLAG":0,"BASE":18}
Danach startet der Coordinator neu und in der Konsole wird in etwas folgendes angezeigt:
00:00:00 Projekt tasmota ZigBee2Tasmota Version 8.3.1.2(tasmota)-2_7_1 00:00:00 WIF: verbinden mit AP1 Dantooine Channel 6 BSSId XX:XX:XX:XX:XX:XX in Modus 11N als ZigBee2MQTT-0189... 00:00:01 WIF: verbunden 00:00:01 HTP: Web-Server aktiv bei ZigBee2MQTT-0189 mit IP-Adresse 10.4.70.189 14:36:12 MQT: Verbindungsversuch... 14:36:17 MQT: verbunden 14:36:17 MQT: tele/ZigBee2MQTT/LWT = Online (beibehalten) 14:36:17 MQT: cmnd/ZigBee2MQTT/POWER = 14:36:17 MQT: tele/ZigBee2MQTT/INFO1 = {"Module":"Zigbee","Version":"8.3.1.2(tasmota)","FallbackTopic":"cmnd/ZigBee2MQTT_fb/","GroupTopic":"cmnd/tasmotas/"} 14:36:17 MQT: tele/ZigBee2MQTT/INFO2 = {"WebServerMode":"Admin","Hostname":"ZigBee2MQTT-0189","IPAddress":"10.4.70.189"} 14:36:17 MQT: tele/ZigBee2MQTT/INFO3 = {"RestartReason":"Software/System restart"} 14:36:20 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":1,"Message":"CC2530 booted","RestartReason":"Watchdog","MajorRel":2,"MinorRel":6}} 14:36:20 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":50,"MajorRel":2,"MinorRel":6,"MaintRel":3,"Revision":20190608}} 14:36:20 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":3,"Message":"Configured, starting coordinator"}} 14:36:21 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":40,"NewState":9,"Message":"Started as coordinator"}} 14:36:21 MQT: tele/ZigBee2MQTT/STATE = {"Time":"2020-06-06T14:36:21","Uptime":"0T00:00:14","UptimeSec":14,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":26,"MqttCount":1,"Wifi":{"AP":1,"SSId":"Dantooine","BSSId":"E8:DF:70:70:43:85","Channel":6,"RSSI":100,"Signal":-44,"LinkCount":1,"Downtime":"0T00:00:03"}} 14:36:21 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":51,"IEEEAddr":"0x00124B001EFE7D5B","ShortAddr":"0x0000","DeviceType":7,"DeviceState":9,"NumAssocDevices":0}} 14:36:21 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":0,"Message":"Started"}} 14:36:21 ZIG: Zigbee started 14:36:21 ZIG: No zigbee devices data in Flash
Hierbei ist in diesem Beispiel ZigBee2MQTT-0189 der Name im Netzwerk und 10.4.70.189 die IP-Adresse.
Die Ausgabe Zigbee started zeigt, dass der CC2530 als Coordinator erfolgreich gestartet wurde.
Die Ausgabe No zigbee devices data in Flash bedeutet, dass noch keine weiteren ZigBee Geräte vorhanden sind.
Damit TASMOATA sich mit dem FHEM-Server verbindet, müssen folgende Einstellung in den MQTT Einstellungen vorgenommen werden.
In FHEM ist dann noch das einmalige Anlegen eines Brokers erforderlich.
define myBroker MQTT2_SERVER 1883 global
Anschließend sollte sich der Coordinator in FHEM nach kurzer Zeit folgendermaßen melden (autocreate muss aktiviert sein):
Standardmäßig und aus Sicherheitsgründen akzeptiert der ZigBee-Coordinator neue Geräte nicht automatisch. Er muss also in den Pairing-Modus versetzt werden:
Dazu in der TASMOTA Konsole folgendes eingeben um neue Geräte zu koppeln:
ZbPermitJoin 1
Sobald sich Zigbee2Tasmota im Pairing-Modus befindet, muss das zu koppelnde Zigbee-Gerät ebenfalls in den Pairing-Modus versetzt werden.
Dies wird normalerweise durch Drücken der Taste am Gerät für 5 Sekunden oder länger erreicht. Der Pairing Modus des Coordinator wird folendermaßen beendet:
ZbPermitJoin 0
Hier ein Beispiel eines Xiaomi Aqara Cube:
15:34:51 CMD: ZbPermitJoin 1 15:34:51 MQT: stat/ZigBee2MQTT/RESULT = {"ZbPermitJoin":"Done"} 15:34:51 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":21,"Message":"Enable Pairing mode for 60 seconds"}} 15:35:00 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":34,"IEEEAddr":"0x00158D0002794B29","ShortAddr":"0xEB45","ParentNetwork":"0x0000"}} 15:35:08 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":30,"IEEEAddr":"0x00158D0002794B29","ShortAddr":"0xEB45","PowerSource":false,"ReceiveWhenIdle":false,"Security":false}} 15:35:08 MQT: tele/ZigBee2MQTT/SENSOR = {"ZbReceived":{"0xEB45":{"Device":"0xEB45","ModelId":"lumi.sensor_cube.aqgl01","AppVersion":5,"Endpoint":1,"LinkQuality":162}}} 15:35:09 MQT: tele/ZigBee2MQTT/SENSOR = {"ZbReceived":{"0xEB45":{"Device":"0xEB45","Voltage":2.825,"Battery":31,"Xiaomi_97":0,"Xiaomi_98":0,"Xiaomi_99":0,"Xiaomi_9A":4,"Endpoint":1,"LinkQuality":160}}} 15:35:09 MQT: tele/ZigBee2MQTT/RESULT = {"ZbState":{"Status":32,"ActiveEndpoints":["0x01","0x02","0x03"]}} 15:35:11 ZIG: Zigbee Devices Data store in Flash (0x402FF800 - 55 bytes) 15:35:16 MQT: tele/ZigBee2MQTT/RESULT = {"ZbConfirm":{"Endpoint":1,"Status":240,"StatusMessage":""}}
Anschließend werden in FHEM im ZigBee2Tasmoate Device folgende Readings automatisch ergänzt:
ZbReceived_0xEB45_AppVersion ZbReceived_0xEB45_AqaraCube ZbReceived_0xEB45_AqaraCubeFromSide ZbReceived_0xEB45_AqaraCubeSide ZbReceived_0xEB45_AqaraRotate ZbReceived_0xEB45_Aqara_FF05 ZbReceived_0xEB45_Battery ZbReceived_0xEB45_Device ZbReceived_0xEB45_Endpoint ZbReceived_0xEB45_LinkQuality ZbReceived_0xEB45_ModelId ZbReceived_0xEB45_MultiInValue ZbReceived_0xEB45_Voltage ZbReceived_0xEB45_Xiaomi_97 ZbReceived_0xEB45_Xiaomi_98 ZbReceived_0xEB45_Xiaomi_99 ZbReceived_0xEB45_Xiaomi_9A
Den Namen 0xEB45 sollte man sinnvoll umbenennen, z.B. in Cube1. Das geht so in der TASMOTA Konsole:
SetOption83 1 ZbName 0xEB45,Cube1
Die alten Readings löscht man dann per FHEM Konsole:
deletereading MQTT2_ZigBee2MQTT ZbReceived_0xEB45_.*
Danach sieht es schon besser aus:
Tabelle der Funktionen des Cube:
Reading | Wert | Bedeutung |
---|---|---|
ZbReceived_Cube1_AqaraCube | tap / shake / flip90 / flip180 | klopfen / schütteln / umdrehen 90° / umdrehen 180° |
ZbReceived_Cube1_AqaraRotate | xx.xx / -xx.xx | rotieren rechts/links |
Ableitend der o.g. Readings können jetzt Funktionen z.B. mittels DOIF ausgeführt werden.
Beispiel Licht einschalten:
define Lightstrip_Shake_Cube DOIF ([MQTT2_ZigBee2MQTT:ZbReceived_Cube1_AqaraCube] eq "shake" and [HUEDevice5] eq "off") (set HUEDevice5 on)\ DOELSEIF ([MQTT2_ZigBee2MQTT:ZbReceived_Cube1_AqaraCube] eq "shake" and [HUEDevice5] ne "off") (set HUEDevice5 off) attr Lightstrip_Shake_Cube do always