Maison intelligente sur roues ... Alice. Partie 2. ZIGBEE

Poursuite de l'épopée avec commande vocale


Dans la partie précédente, via Alice, la voix était contrôlée par les contrôleurs MiLight. Mais ces contrôleurs ne sont pas du tout dans chaque maison, ce qui limite considérablement nos capacités. Par conséquent, j'ai décidé d'étendre la commande vocale aux lampes ordinaires, lampes, lustres, etc., mais avec une modification minimale du système d'éclairage standard. Tout ce qui sera nécessaire pour un tel système est le remplacement des commutateurs conventionnels par des commutateurs intelligents fonctionnant selon le protocole ZigBee et l'installation d'un coordinateur USB ZigBee CC2531. Naturellement, à partir de l'article précédent, nous avons déjà une colonne Yandex intelligente et un désordre personnalisé.

Le coût du CC2531 a coûté 250 roubles, le programmeur pour cela CC-Debugger Texas Instrument - 500 roubles. Les interrupteurs intelligents tactiles Livolo VL-C701Z-11 étaient les plus chers - environ 2000 roubles chacun, et un peu plus tard l'interrupteur à bouton Aigara Wall Switch Zigbee a également été ajouté vers 2000.

Au départ, je prévoyais de contrôler les commutateurs via le routeur de passerelle propriétaire ZigBee Livolo C700ZW-12, de le connecter au concentrateur ouvert et de diriger à l'aide d'Alice via yandex2mqtt. J'ai connecté les glandes à l'électricité, mis en place l'application de Livolo sur le téléphone. J'ai vu les commutateurs de passerelle, connectés, et tout fonctionnait parfaitement depuis le téléphone. Mais le concentrateur ouvert avec le routeur n'a pas pu être fusionné en raison du manque de fonctionnalités nécessaires dans le concentrateur ouvert.

J'ai dû abandonner la passerelle et fusionner les commutateurs directement avec le dongle CC2531. Et ici, le projet zigbee2mqtt de l'ami Koenkk a aidé à cela . En conséquence, nous avons réussi à connecter le coordinateur ZigBee avec des commutateurs intelligents, à vérifier d'abord leur fonctionnement via des requêtes dans la rubrique mqtt pour analyse, puis à configurer le contrôle à l'aide d'Alice.

Alors, comment s'est

passée la configuration: 1. Flashez le renifleur CC2531 avec le firmware du coordinateur et branchez-le sur le port USB. Afin d’éviter les messages de manque d’alimentation, il est préférable de connecter au moins 2A à une alimentation 5V. Nous vérifions que la clé du système est correctement détectée: ls -l / dev / serial / by-id affichera quelque chose comme usb-Texas_Instruments_TI_CC2531_USB_CDC ___ 0X00124B0458ED3DDF-if00 -> ../../ttyACM0. La présence de la dernière sortie "-> ../../ttyACM0" est très importante si cela. Un bâton peut décider sans cette partie et rien ne fonctionnera. Flasher le bâton m'a aidé avec un tel problème.

2. Installez Zigbee2mqtt , mais ne démarrez pas.

3. Il est important de configurer correctement /opt/zigbee2mqtt/data/configuration.yaml. Le fait est que les commutateurs intelligents Livolo fonctionnent sur le canal 26, ce canal doit donc être explicitement défini dans le fichier. Et il est également important de faire attention au nombre d'espaces au début des lignes du fichier. Pour vérifier la syntaxe du fichier de configuration, vous pouvez utiliser le validateur YAML .

4. Une fois le fichier de configuration enregistré correctement et le dongle bloqué, exécutez zigbee2mqtt. Ensuite, nous piétinons vers les commutateurs, commençons le couplage et examinons la sortie de la console. Il y aura une ligne d'échange de données, rassharkivaniya mutuelle entre les appareils et , enfin , quelque chose comme ceci: MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Cela signifie que le commutateur est connecté et a envoyé son état. Si vous exécutez quelques consoles supplémentaires, vous pouvez contrôler la lumière via le sujet mqtt: désactiver- mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P *****et tourner - mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****et vous pouvez également vérifier l'équipe de Topeka mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. Soit dit en passant, pour Livolo et Aqara, les sujets diffèrent non seulement par les identificateurs 0x0 ..., mais aussi par leur structure. La structure des rubriques pour les appareils pris en charge peut être trouvée ici .

5. Après avoir vérifié que nous pouvons gérer les appareils via mqtt, nous associerons tout avec Yandex. Une nuance est apparue ici. Les commandes pour contrôler les périphériques via zigbee2mqtt dans les rubriques sont venues sous la forme ON / OFF, et yandex2mqtt comme il s'est avéré donne 1/0. La solution à ce problème consistait à modifier dans yandex2mqtt le fichier /mnt/data/root/yandex2mqtt/device.js. Devez-vous remplacer int = val dans le commutateur dans le cas «on»? à 'on': 'off' au lieu de '1': '0'. Naturellement, les commandes de commutation ont dû être corrigées dans le hub ouvert dans les rubriques correspondantes. Sans cela, la lumière sur Milight cesserait de fonctionner. Et la chose la plus intéressante est apparue ici - puisque yandex2mqtt et zigbee2mqtt publient tout sur le serveur mqtt local, il semble que les appareils zenbee n'aient pas besoin d'un hub ouvert pour gérer les appareils.Le bundle fonctionne directement - yandex (Alice) -yandex2mqtt-mqtt-zigbee2mqtt-device zigbee. Même de façon inattendue en quelque sorte. Mais continuons. Nous classerons la rubrique de contrôle des périphériques dans le fichier de configuration /mnt/data/root/yandex2mqtt/config.js dans un nouveau périphérique virtuel, mettrons à jour la liste des périphériques dans le système de dialogue Yandex et vous pouvez lancer Alice pour allumer la lumière.

6. Il était également possible de connecter une paire de capteurs Xiaomi, un capteur de fuite et un capteur de température / humidité / pression au système. Ils fonctionnent avec des batteries 2032. Naturellement, ils ne sont pas contrôlés, mais ils déposent simplement périodiquement des informations telles #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}' qu'un capteur de fuite dans un verre d'eau. Jusqu'à présent, il n'y a aucun avantage particulier, mais si tout cela est otparsit et fait quelque chose de réactif tel que l'envoi de SMS ou de chiffres à un museau Web, alors ce sera très bien.

Et une petite vidéo:



All Articles