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

Crear una casa inteligente involucra muchos sensores diferentes que monitorean la situación de la casa: movimiento, iluminación, temperatura y otros sensores. Si el "hogar inteligente" es pequeño, entonces todo parece simple incluso con sistemas caseros basados ​​en soluciones abiertas (MQTT, OpenHAB, etc.): conectaron el sensor, lo registraron en el programa OpenHAB o HomeAssistant y comenzaron a trabajar. Pero si hay muchos sensores, aparece una gran cantidad de trabajo rutinario y desagradecido al prescribir cada uno de ellos en el sistema de control.

La solución propuesta ("muleta") le permite realizar un mínimo de operaciones manuales en esta etapa. El controlador del sensor se conecta al agente MQTT y habla sobre sus sensores y dispositivos en un formato específico en temas especiales, luego un pequeño script en el servidor doméstico inteligente crea archivos de configuración correspondientes a estos sensores, después de lo cual solo necesita identificarlos manualmente en los grupos específicos de la casa y puede comience a crear scripts de administración.

Específicamente, este firmware funciona en módulos con ESP-8266 (incluidos Sonoff Basic Switch y Sonoff Touch Wallswitch) con scripts de P&P para OpenHAB y HomeAssistant, pero el método de salida de información plug & play en sí se puede utilizar en otros proyectos.

Al conectar el dispositivo al agente MQTT, se crean los siguientes temas (en este caso, para el botón FLASH en el ESP-8266 con el número de serie 0023CB541):

  • / myhome / PNP / ESPX-0023CB541 / BUTTON / name - nombre / descripción ("botón FLASH" - esto se mostrará en la interfaz web)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / type - el tipo de la variable y la dirección del flujo de datos para ella, "O: Switch" indica el sensor que proporciona información y, por ejemplo, "I: Dimmer" - el canal entrante del dimmer
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / groups: grupos en los que esta variable aparecerá de forma predeterminada ("Cambia los botones integrados")
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / min: el valor mínimo (para las variables numéricas, para el botón estará vacío)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / max - valor máximo (similar)

Un script que se ejecuta en el servidor (por corona o manualmente, después de conectar el dispositivo): descarga una lista de temas desde / myhome / PNP, busca dispositivos que no están en OpenHAB y crea archivos de configuración para ellos. Si el archivo de configuración para dicho dispositivo ya existe, entonces la información de P&P se ignora por completo, pero puede eliminar este archivo, si es necesario, volver a crear el archivo para el dispositivo con un conjunto de sensores modificado.

De una manera tan simple y transparente: nos libramos de un dolor de cabeza bastante grande si necesita conectar una gran cantidad de dispositivos controlados por la red en nuestro hogar inteligente hecho en casa.

Te contaré un poco más sobre el firmware real para el ESP-8266. Sus códigos fuente (y scripts de soporte para OpenHAB y HomeAssistant) se pueden encontrar en Github (específicamente, los scripts de soporte están aquí ).

Funciona en módulos ESP-8266 estándar (así como en Sonoff Basic Switch y Sonoff Touch Wallswitch), admite actualización de firmware sobre la marcha (ArduinoOTA) y también tiene un servidor web simple para la configuración inicial de los parámetros de red WiFi y la configuración de la dirección IP MQTT corredor.

La estructura del firmware es modular y puede agregar fácilmente sus sensores / dispositivos. La lista actual incluye:

  • Sensores de movimiento infrarrojos y detector de movimiento de banda X Parallax (hasta 3 unidades por módulo)
  • Sensor de temperatura / humedad DHT22 o equivalente
  • Mi atenuador controlado Modbus / RS-485 de 4 canales
  • Sondas HC-SR04 y sondas de la serie MaxBotix
  • Relés en Sonoff Basic Switch y Sonoff Touch (este último se puede cambiar al modo de control de relé con un botón y solo a través de OpenHAB / HomeAssistant)
  • ADC incorporado, LED y botón de flash (para Sonoff Touch, este es un botón táctil)
  • Un termostato simple con dos relés para controlar un ventilador (unidad interior) y un compresor (unidad exterior)

Cabe señalar que debido a la falta de pines en el ESP-8266, los módulos pueden entrar en conflicto entre sí (por ejemplo, un atenuador con una sonda no puede conectarse al mismo tiempo si no redistribuye los pines usted mismo).

Después de seleccionar los dispositivos necesarios en esp-sensores.h, compilación y firmware, el módulo cambia al modo de configuración, eleva su red WiFi con un nombre como "espx-0023cb541", al que debe conectarse (puede usar cualquier teléfono inteligente) con una contraseña del mismo archivo , vaya a 192.168.4.1 y configure el inicio de sesión y la contraseña de la red, así como la dirección IP del agente. Estos parámetros se guardarán en un instante, por lo que la segunda vez no es necesario que lo haga. Si no es posible conectarse a una red determinada dentro de un minuto, volverá al modo de configuración durante tres minutos y luego repetirá este ciclo hasta que se conecte correctamente.

Para aquellos que van a editar este firmware, mencionaré que cada módulo de sensor / dispositivo está dividido en seis funciones:

  • setup _ * () - configurando pines
  • loop _ * (): sondeo del sensor en cada ciclo de programa
  • refresh _ * (forceSend): actualiza la información del estado del sensor en MQTT (200 ms de forma predeterminada y cada dos segundos: actualización forzada)
  • pnp _ * () - enviando información de P & P
  • subscribe _ * () - suscripción a los temas entrantes necesarios
  • mqtt _ * () - procesamiento de mensajes mqtt entrantes

Estas funciones se deben definir en el archivo de su módulo, luego agregue su llamada a los lugares apropiados esp-sensores.ino.

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


All Articles