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

Continuação do épico com controle de voz


Na parte anterior, através de Alice, a voz era controlada pelos controladores MiLight. Mas esses controladores não estão em todas as casas, o que limita muito nossas capacidades. Portanto, pretendi expandir o controle de voz para lâmpadas comuns, luminárias, lustres e assim por diante, mas com uma alteração mínima do sistema de iluminação padrão. Tudo o que será necessário para esse sistema é a substituição de comutadores convencionais por comutadores inteligentes que operam de acordo com o protocolo ZigBee e a instalação de um coordenador USB ZigBee CC2531. Naturalmente, a partir do artigo anterior, já temos uma coluna Yandex inteligente e uma bagunça personalizada.

O custo do CC2531 custou 250 rublos, o programador do CC-Debugger Texas Instrument - 500 rublos. Os switches inteligentes Livolo VL-C701Z-11 eram os mais caros - cerca de 2000 rublos cada, e um pouco mais tarde o botão Aigara Wall Switch Zigbee também foi adicionado por volta de 2000.

Inicialmente, planejei controlar os comutadores através do roteador proprietário ZigBee gateway Livolo C700ZW-12, conectá-lo ao hub aberto e dirigir usando Alice através do yandex2mqtt. Liguei as glândulas à eletricidade, configurei o aplicativo da Livolo no telefone. Eu vi os comutadores de gateway, conectados, e tudo funcionou perfeitamente no telefone. Mas o hub aberto com o roteador não pôde ser mesclado devido à falta da funcionalidade necessária no hub aberto.

Eu tive que abandonar o gateway e mesclar os switches diretamente com o dongle CC2531. E aqui o projeto zigbee2mqtt do amigo Koenkk ajudou nisso . Como resultado, conseguimos conectar o coordenador do ZigBee com comutadores inteligentes, primeiro verifique sua operação através de consultas no tópico mqtt para análise e, em seguida, configure o controle usando Alice.

Então, como foi a instalação:

1. Atualize o sniffer CC2531 com o firmware do coordenador e conecte-o à porta USB. Para evitar mensagens sobre falta de energia, é melhor conectar pelo menos 2A a uma fonte de alimentação de 5V. Verificamos se o stick no sistema foi detectado corretamente: ls -l / dev / serial / by-id mostrará algo como usb-Texas_Instruments_TI_CC2531_USB_CDC ___ 0X00124B0458ED3DDF-if00 -> ../../ttyACM0. A presença do último pedaço de saída "-> ../../ttyACM0" é muito importante se isso. Uma vara pode decidir sem essa parte e nada funcionará. Piscar o bastão me ajudou com esse problema.

2. Instale o Zigbee2mqtt , mas não inicie.

3. É importante configurar o /opt/zigbee2mqtt/data/configuration.yaml corretamente. O fato é que os comutadores inteligentes Livolo operam no canal 26, portanto, esse canal deve ser explicitamente definido no arquivo. E também é importante prestar atenção ao número de espaços no início das linhas do arquivo. Para verificar a sintaxe do arquivo de configuração, você pode usar o validador YAML .

4. Após o arquivo de configuração ser registrado corretamente e o dongle ficar travado, execute zigbee2mqtt. Depois, pisamos nos interruptores, iniciamos o emparelhamento e observamos a saída do console. Haverá uma linha de troca de dados, rassharkivaniya mútua entre os dispositivos e, finalmente, algo como isto: MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Isso significa que o switch está conectado e enviou seu status. Se você executar mais alguns consoles, poderá controlar a luz através do tópico mqtt: desligar- mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P *****e vire - mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****e você também pode conferir a equipe em Topeka mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. A propósito, para Livolo e Aqara, os tópicos diferem não apenas nos identificadores 0x0 ..., mas também na estrutura. A estrutura de tópicos para dispositivos suportados pode ser encontrada aqui .

5. Depois de verificarmos que podemos gerenciar dispositivos por meio do mqtt, emparelharemos tudo com o Yandex. Algumas nuances apareceram aqui. Os comandos para controlar dispositivos através do zigbee2mqtt chegaram a tópicos na forma de LIGADO / DESLIGADO, e o yandex2mqtt, como se vê, fornece 1/0. A solução para esse problema foi editar no yandex2mqtt o arquivo /mnt/data/root/yandex2mqtt/device.js. Você precisa substituir int = val no comutador no caso “on”? para 'on': 'off' em vez de '1': '0'. Naturalmente, os comandos de comutação precisavam ser corrigidos no hub aberto nos tópicos correspondentes. Sem isso, a luz de Milight deixaria de funcionar. E a coisa mais interessante foi revelada logo ali - como yandex2mqtt e zigbee2mqtt publicam tudo no servidor mqtt local, parece que os dispositivos zenbee não precisam de um hub aberto para gerenciar dispositivos.O pacote configurável funciona diretamente - zigbee do yandex (Alice) -yandex2mqtt-mqtt-zigbee2mqtt-device. Mesmo de forma inesperada. Mas vamos continuar. Arquivaremos o tópico de controle de dispositivo no arquivo de configuração /mnt/data/root/yandex2mqtt/config.js em um novo dispositivo virtual, atualizaremos a lista de dispositivos no sistema de diálogo Yandex e você poderá chutar Alice para acender a luz.

6. Também foi possível conectar um par de sensores Xiaomi, um sensor de vazamento e um sensor de temperatura / umidade / pressão ao sistema. Eles funcionam com baterias 2032. Naturalmente, eles não são controlados, mas simplesmente soltam periodicamente informações #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 um sensor de vazamento em um copo de água em tópicos . Até o momento, não há nenhum benefício específico, mas se tudo isso for otparsit e fizer algo reativo, como enviar SMS ou dígitos para algum focinho da web, será muito bom.

E um pequeno vídeo:



All Articles