Hinzufügen von ZigBee-Geräten zu Homebridge mithilfe von CC2531

Es gab bereits Artikel über Habr darüber, wie ZigBee-Geräte verschiedener Hersteller mit Smart-Home-Steuerungssystemen ohne Verwendung von Marken-Hubs wie Xiaomi Gateway hergestellt werden können. Anweisungen für Homebridge fand ich jedoch nicht nur auf Habré, sondern auch auf anderen Internet-Freiflächen. Daher möchte ich die Erfahrung mit dem Hinzufügen von ZigBee-Geräten zu Homebridge teilen. Vielen Dank an den Ersteller der Ressource zigbee2mqtt.io. Dort sind bereits die Methoden zum Flashen des CC2531-Modems und zum Herstellen einer Verbindung zu Smart-Home-Steuerungssystemen wie Home Assistant , Domoticz und Majordomo beschrieben . Der Artikel richtet sich an Benutzer, auf denen Homebridge bereits installiert und konfiguriert ist .


Alle Aktionen in diesem Artikel werden mit den folgenden Geräten ausgeführt:

  • Raspberry Pi 3 B + (Raspbian OS)
  • CC2531 Dongle (genäht)
  • Xiaomi-Geräte (Funkschalter, Temperatur- und Feuchtigkeitssensor ...)
  • MacBook Pro (OSX 10.14)

Anweisungen für die Firmware CC2531 in russischer Sprache finden Sie hier (über Pi) und hier (über CCDebuger) .

Schematisch kann die gesamte Arbeitskette wie folgt dargestellt werden:



Jetzt in Ordnung.

Nach dem Flashen des Modems müssen Sie den MQTT-Broker installieren (falls nicht bereits installiert).

Ich benutze Mosquitto, installiert wie folgt:

sudo apt install -y mosquitto mosquitto-clients # sudo services mosquitto start #  sudo systemctl enable mosquitto.service # 

Detaillierte Konfigurationsanweisungen finden Sie hier .

Jetzt müssen Sie den Dienst zigbee2mqtt installieren, der mit dem CC2531-Modem interagiert und die Daten an Mosquitto überträgt:

 sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R pi:pi /opt/zigbee2mqtt cd /opt/zigbee2mqtt npm install 

Um zigbee2mqtt als Dienst auszuführen, müssen Sie eine Datei erstellen:
/etc/systemd/system/zigbee2mqtt.service

mit folgenden Inhalten:
 [Unit] Description=zigbee2mqtt After=network.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy=multi-user.target 


Wenn Sie den MQTT-Broker bereits installiert haben, müssen Sie die richtigen Parameter für die Verbindung in der Datei registrieren:

 /opt/zigbee2mqtt/data/configuration.yaml 

Wir starten den Dienst und fügen ihn dem Autorun hinzu:

 sudo systemctl start zigbee2mqtt sudo systemctl enable zigbee2mqtt.service 

Wir schauen uns das Protokoll an:

 sudo journalctl -u zigbee2mqtt.service -f 

Wenn alles richtig konfiguriert ist, sollten die folgenden Zeilen angezeigt werden:
 `permit_join` set to `true` in configuration.yaml. Allowing new devices to join. Set `permit_join` to `false` once you joined all devices. Zigbee: allowing new devices to join. Connecting to MQTT server at mqtt://localhost zigbee-shepherd ready Connected to MQTT server 


Sie können die Integration mit Homebridge starten. Die Ressource zigbee2mqtt.io enthält eine Liste der unterstützten Geräte und Anweisungen zum Erstellen eines Paares. Erwägen Sie beispielsweise das Hinzufügen des Xiaomi Wireless Switch.



Verwenden Sie das MQTT Explorer- Programm, um Ereignisse in Mosquitto anzuzeigen. Wir starten, geben die Adresse des MQTT-Servers ein, in meinem Fall befindet sie sich unter 192.168.1.104 . Wenn alles korrekt installiert ist, sehen wir im Baum den Zweig zigbee2mqtt. Wir gehen hinein. Halten Sie nun am Xiaomi Wireless Switch die Reset-Taste gedrückt, bis die Diode blinkt (ca. 5 Sekunden). Nach ungefähr 10 Sekunden im Zweig zigbee2mqtt sehen wir unser Gerät und die Daten, die es überträgt.

Wenn dies nicht der Fall ist, drücken Sie nach dem Blinken der Diode einmal Reset mit einer Frequenz von pro Sekunde. Es sollte so sein:



Lassen Sie uns die Daten analysieren:

 { "linkquality":110, "battery":100, "voltage":3052, "click":"single" } 

Das Klickfeld enthält die Art des Klicks. Es können fünf davon vorhanden sein:
Click, double click, triple click, long, long_release

Wir haben gelernt, wie man Daten empfängt, und fügen jetzt den Xiaomi Wireless Switch zur Homebrdige hinzu. Für die Interaktion mit MQTT verwenden wir das Modul homebridge-mqttthing . Installiert auf die gleiche Weise wie andere:

 (sudo) npm install -g homebridge-mqttthing 

Das Modul unterstützt eine Vielzahl von Geräteklassen, von Schaltern bis zu Thermostaten. Für Xiaomi Wireless Switch ist die StatelessProgramableSwitch Klasse am besten geeignet. Zum Hinzufügen müssen Sie das Thema (0x00158d00022c85ea) und die Namen der Befehle kennen. Es stellt sich heraus, diese Art von Konfiguration:

 { "accessory": "mqttthing", "type": "statelessProgrammableSwitch", "name": "Xiaomi Single Button", "topics": { "getSwitch": { "topic": "zigbee2mqtt/0x00158d00022c85ea", "apply": "return JSON.parse(message).click;" } }, "switchValues": [ "single", "double", "long_release" ] } 

In Analogie habe ich hinzugefügt:

Temperatur- und Feuchtigkeitssensor, Berührungssensor, Anwesenheitssensor und Schalter.
 "accessories": [ { "accessory": "mqttthing", "type": "occupancySensor", "name": "Xiaomi Occupancy Sencor", "topics": { "getOccupancyDetected": { "topic": "zigbee2mqtt/0x00158d000236b492", "apply": "return JSON.parse(message).occupancy;" } }, "integerValue": true }, { "accessory": "mqttthing", "type": "contactSensor", "name": "Xiaomi Contatc Sencor", "topics": { "getContactSensorState": { "topic": "zigbee2mqtt/0x00158d000278db8c", "apply": "return !JSON.parse(message).contact;" } }, "integerValue": true }, { "accessory": "mqttthing", "type": "statelessProgrammableSwitch", "name": "Xiaomi Single Button", "topics": { "getSwitch": { "topic": "zigbee2mqtt/0x00158d00022c85ea", "apply": "return JSON.parse(message).click;" } }, "switchValues": [ "single", "double", "long_release" ] }, { "accessory": "mqttthing", "type": "temperatureSensor", "name": "Xiaomi Temperature Sencor", "topics": { "getCurrentTemperature": { "topic": "zigbee2mqtt/0x00158d000201842c", "apply": "return parseFloat(JSON.parse(message).temperature);" } }, "history": true }, { "accessory": "mqttthing", "type": "humiditySensor", "name": "Xiaomi Humidity Sencor", "topics": { "getCurrentRelativeHumidity": { "topic": "zigbee2mqtt/0x00158d000201842c", "apply": "return parseFloat(JSON.parse(message).humidity);" } }, "history": true } ] 


Wir prüfen:



Früher habe ich das Homebridge-Mi-Aqara-Modul verwendet, das ZigBee-Geräte hinzufügt und mit Xiaomi Gateway interagiert. Wenn das Gateway abgelehnt wird, verringert sich die Antwortzeit der Geräte. Außerdem habe ich das Gerät entfernt, das sich in meinem WLAN befindet und ständig im Internet crawlt.

Source: https://habr.com/ru/post/de462459/


All Articles