Smart Home auf Rädern ... Alice. Teil 2. ZIGBEE

Fortsetzung des Epos mit Sprachsteuerung


Im vorherigen Teil wurde die Stimme über Alice von MiLight-Controllern gesteuert. Solche Steuerungen gibt es jedoch nicht in jedem Haus, was unsere Fähigkeiten stark einschränkt. Aus diesem Grund habe ich mich vorgenommen, die Sprachsteuerung auf normale Lampen, Lampen, Kronleuchter usw. auszudehnen, jedoch mit einer minimalen Änderung des Standardbeleuchtungssystems. Für ein solches System ist lediglich der Austausch herkömmlicher Switches durch intelligente Switches nach dem ZigBee-Protokoll und die Installation eines USB-ZigBee-Koordinators CC2531 erforderlich. Natürlich haben wir aus dem vorherigen Artikel bereits eine intelligente Yandex-Säule und ein individuelles Durcheinander.

Die Kosten für CC2531 kosten 250 Rubel, der Programmierer dafür CC-Debugger Texas Instrument - 500 Rubel. Die Livolo VL-C701Z-11 Touch-Smart-Schalter waren die teuersten - etwa 2000 Rubel pro Stück, und wenig später wurde um 2000 auch der Aqara Wall Switch ZigBee-Knopfschalter hinzugefügt.

Zunächst wollte ich die Switches über den proprietären ZigBee-Gateway-Router Livolo C700ZW-12 steuern, an den offenen Hub anschließen und mit Alice über yandex2mqtt steuern. Ich habe die Drüsen an die Stromversorgung angeschlossen und die Anwendung von Livolo am Telefon eingerichtet. Ich sah die Gateway-Schalter verbunden und alles funktionierte perfekt vom Telefon aus. Der offene Hub mit dem Router konnte jedoch aufgrund des Mangels an erforderlichen Funktionen im offenen Hub nicht zusammengeführt werden.

Ich musste das Gateway verlassen und die Switches direkt mit dem CC2531-Dongle zusammenführen. Und hier hat das zigbee2mqtt- Projekt des Freundes Koenkk dabei geholfen . Infolgedessen ist es uns gelungen, den ZigBee-Koordinator mit intelligenten Switches zu verbinden, deren Funktion zunächst anhand von Abfragen im Thema mqtt zur Analyse zu überprüfen und dann das Steuerelement mithilfe von Alice zu konfigurieren.

Wie verlief das Setup:

1. Flashen Sie den CC2531-Sniffer mit der Firmware des Koordinators und schließen Sie ihn an den USB-Anschluss an. Um Meldungen über einen Stromausfall zu vermeiden, sollten Sie mindestens 2A an ein 5-V-Netzteil anschließen. Wir überprüfen, ob der Stick im System korrekt erkannt wurde: ls -l / dev / serial / by-id zeigt so etwas wie usb-Texas_Instruments_TI_CC2531_USB_CDC ___ 0X00124B0458ED3DDF-if00 -> ../../ttyACM0 an. Das Vorhandensein der letzten Ausgabe "-> ../../ttyACM0" ist in diesem Fall sehr wichtig. Ein Stock kann ohne diesen Teil entscheiden und nichts wird funktionieren. Das Flashen des Sticks hat mir bei einem solchen Problem geholfen.

2. Installieren Sie Zigbee2mqtt , aber starten Sie nicht.

3. Es ist wichtig, /opt/zigbee2mqtt/data/configuration.yaml korrekt zu konfigurieren. Tatsache ist, dass Livolo Smart Switches auf Kanal 26 arbeiten, sodass dieser Kanal explizit in der Datei festgelegt werden muss. Außerdem ist es wichtig, auf die Anzahl der Leerzeichen am Anfang der Zeilen der Datei zu achten. Um die Syntax der Konfigurationsdatei zu überprüfen, können Sie den YAML-Validator verwenden .

4. Nachdem die Konfigurationsdatei korrekt registriert wurde und der Dongle feststeckt, führen Sie zigbee2mqtt aus. Dann stampfen wir zu den Schaltern, beginnen mit dem Pairing und sehen uns die Konsolenausgabe an. Es wird eine Linie des Datenaustauschs geben, gegenseitige rassharkivaniya zwischen Geräten und schließlich so etwas : MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Dies bedeutet, dass der Switch angeschlossen ist und seinen Status sendet. Wenn Sie ein paar weitere Konsolen betreiben, können Sie das Licht über das mqtt-Thema steuern: ausschalten- mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P *****und drehen - mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****und Sie können auch das Team in Topeka überprüfen mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. Für Livolo und Aqara unterscheiden sich die Themen übrigens nicht nur in den Bezeichnern 0x0 ..., sondern auch in der Struktur. Die Themenstruktur für unterstützte Geräte finden Sie hier .

5. Nachdem wir überprüft haben, dass wir Geräte über mqtt verwalten können, werden wir alles mit Yandex koppeln. Hier ist eine Nuance aufgetaucht. Befehle zum Steuern von Geräten über zigbee2mqtt kamen zu Themen in Form von EIN / AUS, und yandex2mqtt ergab, wie sich herausstellte, 1/0. Die Lösung für dieses Problem bestand darin, die Datei /mnt/data/root/yandex2mqtt/device.js in yandex2mqtt zu bearbeiten. Müssen Sie im Fall "Ein" int = val im Schalter ersetzen? zu 'ein': 'aus' anstelle von '1': '0'. Natürlich mussten die Schaltbefehle im offenen Hub in den entsprechenden Themen korrigiert werden. Ohne dies würde das Licht auf Milight aufhören zu funktionieren. Und das Interessanteste kam genau dort ans Licht - da yandex2mqtt und zigbee2mqtt alles auf dem lokalen mqtt-Server veröffentlichen, scheint es, dass Zenbee-Geräte keinen offenen Hub zum Verwalten von Geräten benötigen.Das Bundle funktioniert direkt - yandex (Alice) -yandex2mqtt-mqtt-zigbee2mqtt-device zigbee. Sogar irgendwie unerwartet. Aber lass uns weitermachen. Wir werden das Thema Gerätesteuerung in der Konfigurationsdatei /mnt/data/root/yandex2mqtt/config.js in einem neuen virtuellen Gerät ablegen, die Liste der Geräte im Yandex-Dialogsystem aktualisieren und Sie können Alice treten, um das Licht einzuschalten.

6. Es war auch möglich, ein Paar Xiaomi-Sensoren, einen Leckagesensor und einen Temperatur- / Feuchtigkeits- / Drucksensor an das System anzuschließen. Sie werden mit 2032-Batterien betrieben. Natürlich werden sie nicht gesteuert, aber sie lassen einfach regelmäßig Informationen wie #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:12:21: MQTT publish: topic 'zigbee2mqtt/0x0015************', payload '{"battery":91,"voltage":2985,"temperature":26.2,"humidity":28.65,"pressure":1006.9,"linkquality":52}' - # #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:21:07: MQTT publish: topic 'zigbee2mqtt/0x001************7', payload '{"battery":100,"voltage":3025,"linkquality":0,"water_leak":true}' einen Lecksensor in einem Glas Wasser in Themen fallen . Bisher gibt es keinen besonderen Vorteil, aber wenn all dies nicht funktioniert und etwas Reaktives wie das Senden von SMS oder Ziffern an eine Web-Schnauze bewirkt, ist es sehr gut.

Und ein kleines Video:



All Articles