ZigBee2Tasmota CC2530+ESP8266 FHEM Konfiguration

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





Anschluß der Pins:

CC2530D1-Mini
GNDG
VCC3v3
P02D8
P03D7


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.

MQTT Konfiguration TASMOTA

Damit TASMOATA sich mit dem FHEM-Server verbindet, müssen folgende Einstellung in den MQTT Einstellungen vorgenommen werden.


Konfiguration in FHEM

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):


Pairing Zigbee Devices

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:

ReadingWertBedeutung
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

Navigation
Eigene Werkzeuge