Casa inteligente sobre ruedas ... Alice. Parte 2. ZIGBEE

Continuación de la épica con control de voz.


En la parte anterior, a través de Alice, la voz fue controlada por los controladores MiLight. Pero tales controladores no se encuentran en todas las casas, lo que limita en gran medida nuestras capacidades. Por lo tanto, me propuse expandir el control por voz a lámparas, lámparas, candelabros comunes, etc., pero con una alteración mínima del sistema de iluminación estándar. Todo lo que se necesitará para tal sistema es el reemplazo de interruptores convencionales con interruptores inteligentes que operan de acuerdo con el protocolo ZigBee y la instalación de un coordinador USB ZigBee CC2531. Naturalmente, del artículo anterior, ya tenemos una columna Yandex inteligente y un desastre personalizado.

El costo de CC2531 costó 250 rublos, el programador para él CC-Debugger Texas Instrument - 500 rublos. Los interruptores inteligentes táctiles Livolo VL-C701Z-11 fueron los más caros, alrededor de 2000 rublos cada uno, y un poco más tarde, el interruptor de botón Zigbee del interruptor de pared Aqara también se agregó alrededor de 2000.

Inicialmente, planeé controlar los conmutadores a través del enrutador de puerta de enlace ZigBee patentado Livolo C700ZW-12, conectarlo al hub abierto y dirigir usando Alice a través de yandex2mqtt. Conecté las glándulas a la electricidad, configuré la aplicación de Livolo en el teléfono. Vi los interruptores de la puerta de enlace, conectados, y todo funcionó perfectamente desde el teléfono. Pero el hub abierto con el enrutador no se pudo fusionar debido a la falta de la funcionalidad necesaria en el hub abierto.

Tuve que abandonar la puerta de enlace y fusionar los interruptores directamente con el dongle CC2531. Y aquí el proyecto zigbee2mqtt del amigo Koenkk ayudó con esto . Como resultado, logramos conectar el coordinador de ZigBee con interruptores inteligentes, primero verificamos su funcionamiento a través de consultas en el tema mqtt para el análisis y luego configuramos el control con Alice.

Entonces, ¿cómo fue la configuración?

1. Destelle el sniffer CC2531 con el firmware del coordinador y conéctelo al puerto usb. Para evitar mensajes sobre la falta de energía, es mejor conectar al menos 2A a una fuente de alimentación de 5V. Verificamos que el dispositivo en el sistema esté correctamente definido: ls -l / dev / serial / by-id mostrará algo como usb-Texas_Instruments_TI_CC2531_USB_CDC ___ 0X00124B0458ED3DDF-if00 -> ../../ttyACM0. La presencia de la última pieza de salida "-> ../../ttyACM0" es muy importante si es así. Un palo puede decidir sin esta parte y nada funcionará. Parpadear el palo me ayudó con tal problema.

2. Instale Zigbee2mqtt , pero no inicie.

3. Es importante configurar /opt/zigbee2mqtt/data/configuration.yaml correctamente. El hecho es que los conmutadores inteligentes Livolo operan en el canal 26, por lo que este canal debe establecerse explícitamente en el archivo. Y también es importante prestar atención a la cantidad de espacios al principio de las líneas del archivo. Para verificar la sintaxis del archivo de configuración, puede usar el validador YAML .

4. Después de que el archivo de configuración se haya registrado correctamente y el dongle esté atascado, ejecute zigbee2mqtt. Luego pisamos los interruptores, comenzamos el emparejamiento y miramos la salida de la consola. Habrá una línea de intercambio de datos, rassharkivaniya mutua entre los dispositivos y, finalmente, algo como esto: MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Esto significa que el conmutador está conectado y se le envía su estado. Si ejecuta un par de consolas más, puede controlar la luz a través del tema mqtt: apagar- mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P *****y gire, mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****y también puede consultar al equipo en Topeka mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. Por cierto, para Livolo y Aqara, los temas difieren no solo en los identificadores 0x0 ..., sino también en la estructura. La estructura de temas para dispositivos compatibles se puede encontrar aquí .

5. Después de haber verificado que podemos administrar dispositivos a través de mqtt, emparejaremos todo con Yandex. Algunos matices han aparecido aquí. Los comandos para controlar dispositivos a través de zigbee2mqtt llegaron a temas en forma de ENCENDIDO / APAGADO, y yandex2mqtt como resultó da 1/0. La solución a este problema fue editar en yandex2mqtt el archivo /mnt/data/root/yandex2mqtt/device.js. ¿Necesita reemplazar int = val en el interruptor en el caso "on"? a 'on': 'off' en lugar de '1': '0'. Naturalmente, los comandos de conmutación tuvieron que corregirse en el centro abierto en los temas correspondientes. Sin esto, la luz sobre Milight dejaría de funcionar. Y lo más interesante salió a la luz allí: dado que yandex2mqtt y zigbee2mqtt publican todo en el servidor mqtt local, parece que los dispositivos zenbee no necesitan un centro abierto para administrar dispositivos.El paquete funciona directamente - yandex (Alice) -yandex2mqtt-mqtt-zigbee2mqtt-device zigbee. Incluso inesperadamente de alguna manera. Pero continuemos. Archivaremos el tema de control del dispositivo en el archivo de configuración /mnt/data/root/yandex2mqtt/config.js en un nuevo dispositivo virtual, actualizaremos la lista de dispositivos en el sistema de diálogo Yandex y puedes patear a Alice para encender la luz.

6. También fue posible conectar un par de sensores Xiaomi, un sensor de fugas y un sensor de temperatura / humedad / presión al sistema. Funcionan con baterías 2032. Naturalmente, no están controladas, pero simplemente dejan caer información periódicamente, #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}' como un sensor de fugas en un vaso de agua, en los temas . Hasta ahora, no hay ningún beneficio particular, pero si todo esto es otparsit y hacer algo reactivo como enviar SMS o dígitos a algún bozal web, entonces será muy bueno.

Y un pequeño video:



All Articles