MQTT, Smart Home, ESP-8266 e Plug & Play

Criar uma casa inteligente envolve muitos sensores diferentes que monitoram a situação na casa - movimento, iluminação, temperatura e outros sensores. Se a “casa inteligente” for pequena, tudo parecerá simples, mesmo com sistemas caseiros baseados em soluções abertas (MQTT, OpenHAB, etc.) - eles conectaram o sensor, o registraram no programa OpenHAB ou HomeAssistant e começaram a trabalhar. Mas se houver muitos sensores, muito trabalho de rotina e ingrato aparecerá na prescrição de cada um deles no sistema de controle.

A solução proposta ("muleta") permite que você faça um mínimo de operações manuais nesta fase. O controlador do sensor se conecta ao broker MQTT e fala sobre seus sensores e dispositivos em um formato específico em tópicos especiais; em seguida, um pequeno script no servidor doméstico inteligente cria arquivos de configuração correspondentes a esses sensores, após o qual você só precisa identificá-los manualmente nos grupos específicos da casa e pode comece a criar scripts de gerenciamento.

Especificamente, este firmware funciona em módulos com ESP-8266 (incluindo Sonoff Basic Switch e Sonoff Touch Wallswitch) com scripts P&P para OpenHAB e HomeAssistant, mas o próprio método de saída de informações plug & play pode ser usado em outros projetos.

Ao conectar o dispositivo ao broker MQTT, os seguintes tópicos são criados (neste caso, para o botão FLASH no ESP-8266 com o número de série 0023CB541):

  • / myhome / PNP / ESPX-0023CB541 / BUTTON / nome - nome / descrição (“botão FLASH” - isso será exibido na interface da web)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / type - o tipo da variável e a direção do fluxo de dados para ela, “O: Switch” indica o sensor que fornece informações e, por exemplo, “I: Dimmer” - o canal de entrada do dimmer
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / groups - grupos nos quais essa variável aparecerá por padrão ("Switches Builtin Buttons")
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / min - o valor mínimo (para variáveis ​​numéricas, para o botão, ele estará vazio)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / max - valor máximo (semelhante)

Um script em execução no servidor (por coroa ou manualmente, após conectar o dispositivo) - baixa uma lista de tópicos de / myhome / PNP, pesquisa dispositivos que não estão no OpenHAB e cria arquivos de configuração para eles. Se o arquivo de configuração para esse dispositivo já existir, as informações de P&P serão completamente ignoradas, mas você poderá excluir esse arquivo, se necessário, recriar o arquivo para o dispositivo com um conjunto alterado de sensores.

De uma maneira tão simples e transparente - eliminamos uma dor de cabeça bastante grande se você precisar conectar um grande número de dispositivos controlados por rede em nossa casa inteligente caseira.

Vou falar um pouco mais sobre o firmware real do ESP-8266. Seus códigos-fonte (e scripts de suporte para OpenHAB e HomeAssistant) podem ser encontrados no Github (especificamente, os scripts de suporte estão aqui ).

Funciona nos módulos ESP-8266 padrão (assim como no Sonoff Basic Switch e no Sonoff Touch Wallswitch), suporta atualização de firmware em tempo real (ArduinoOTA) e também possui um servidor web simples para configuração inicial dos parâmetros da rede WiFi e configuração do endereço IP do MQTT -broker.

A estrutura do firmware é modular e você pode facilmente adicionar seus sensores / dispositivos. A lista atual inclui:

  • Sensores de movimento infravermelho e detector de movimento Parallax X-band (até 3 unidades por módulo)
  • Sensor de temperatura / umidade DHT22 ou equivalente
  • Meu redutor controlado Modbus / RS-485 de 4 canais
  • Sonares HC-SR04 e Sonares da série MaxBotix
  • Relés no Sonoff Basic Switch e Sonoff Touch (este último pode ser alternado para o modo de controle de relé por um botão e somente através do OpenHAB / HomeAssistant)
  • Botão ADC, LED e Flash embutido (para Sonoff Touch - este é um botão de toque)
  • Um termostato simples com dois relés para controlar um ventilador (unidade interna) e um compressor (unidade externa)

Deve-se observar que, devido à falta de pinos no ESP-8266, os módulos podem entrar em conflito entre si (por exemplo, um dimmer com um sonar não pode ser conectado ao mesmo tempo se você não redistribuir os pinos).

Após selecionar os dispositivos necessários em esp-sensores.h, compilação e firmware - o módulo muda para o modo de configuração - ele eleva sua rede Wi-Fi com um nome como "espx-0023cb541", ao qual você precisa se conectar (você pode usar qualquer smartphone) com uma senha do mesmo arquivo , vá para 192.168.4.1 e defina o login e a senha da rede, bem como o endereço IP do broker. Esses parâmetros serão salvos em um flash, portanto, na segunda vez, você não precisa fazer isso. Se não for possível conectar-se a uma determinada rede dentro de um minuto, ele voltará ao modo de configuração por três minutos e repetirá esse ciclo até que seja conectado com êxito.

Para quem vai editar este firmware, mencionarei que cada módulo de sensor / dispositivo é dividido em seis funções:

  • setup _ * () - configurando pinos
  • loop _ * () - pesquisando o sensor em cada ciclo do programa
  • refresh _ * (forceSend) - atualiza as informações de status do sensor no MQTT (200 ms por padrão e a cada dois segundos - atualização forçada)
  • pnp _ * () - enviando informações de P&P
  • subscrever _ * () - assinatura dos tópicos recebidos necessários
  • mqtt _ * () - processamento de mensagens mqtt recebidas

Essas funções devem ser definidas no arquivo do seu módulo e, em seguida, adicione sua chamada aos locais apropriados esp-sensores.ino.

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


All Articles