Conecta controladores PLCnext a Home Assistant para control domótico inteligente
Este pequeño proyecto de demostración muestra cómo utilizar fácilmente un controlador PLCnext como dispositivo domótico en el software de automatización del hogar de código abierto Home Assistant a través de la API REST y Modbus TCP. Con el controlador PLCnext puedes usar los componentes Axioline en tu automatización para añadir salidas más potentes que los pines GPIO de la Raspberry Pi, sensores de temperatura como Pt100 y sistemas de bus como DALI. Todo lo que necesitas es una instalación funcional de Home Assistant y un controlador PLCnext con un pequeño proyecto PLCnext ejecutable.
Requisitos previos
- Home Assistant Core 2021.1.5
- Balena
- PLCnext Engineer 2020.6
- AXC F 2152FW 2020.0 LTS
- Imagen Raspberry Pi 2 (El inicio puede tardar una hora.)
Bibliotecas:
- Modbus_TCP (Build 8) para PLCnext Engineer
Servicios de Home Assistant:
- Telegram
- SMTP
Descripción de la funcionalidad
Para dar una breve visión general de las posibilidades de usar un controlador PLCnext como dispositivo domótico, hay un proyecto PLCnext que puede reiniciar (hard reset) otros dispositivos controlando su tensión de alimentación con relés. Los reinicios se activan mediante comandos que se envían a un Bot de Telegram, antes de que se envíe un correo electrónico con la información de que se ha iniciado un reinicio. Este ejemplo se mostrará con dos formas diferentes de conectar el controlador PLCnext al entorno Home Assistant.
Arquitectura
Conexión mediante Modbus TCP
Empezando por la conexión Modbus TCP, se añade un servidor Modbus al proyecto PLCnext usando la biblioteca Modbus TCP. La configuración es la misma que en el ejemplo de la biblioteca. La elección del registro Modbus adecuado depende del tipo de datos y de cómo se vayan a utilizar. En este caso, las variables se mapean al registro de bobinas (coil register).
Importante: El servidor Modbus no soporta más de una conexión a la vez. Si una conexión no termina correctamente (lo que ocurre a veces durante las pruebas), el servidor entra en estado de error y debe reiniciarse manualmente. Para evitar esto, se recomienda programar un reinicio automático del servidor Modbus en el proyecto PLCnext.
Para el cliente Modbus hay dos posibilidades principales en Home Assistant y depende de ti elegir tu favorita. La primera es usar el complemento Node-RED y una de las bibliotecas Modbus disponibles allí. La más intuitiva es configurar una entidad en el configuration.yaml de tu entorno Home Assistant. Como se muestra a continuación, se usa el servicio switch estándar, que es una forma común de trabajar con variables booleanas, porque tiene implementadas las funcionalidades turn_on/turn_off para establecer o restablecer las variables.
modbus:
type: tcp # usando Modbus TCP
host: TU_IP_SERVIDOR # rellena la dirección IP del servidor
port: 502
name: hub1 # podría cambiarse
switch:
- platform: modbus
coils:
- name: restartMB # podría cambiarse
hub: hub1
slave: 1
coil: 13 # la posición del registro de la variable
Si eliges la opción Node-RED, ten en cuenta que normalmente inicia conexiones diferentes para lectura y escritura con Modbus TCP, por lo que el servidor Modbus entra en estado de error como se mencionó. Para evitar esto, puedes usar Modbus UDP o dos servidores Modbus en tu proyecto PLCnext, uno para lectura y otro para escritura.
Conexión mediante API REST
La segunda posibilidad de conexión es la interfaz de datos REST de PLCnext. Esta interfaz está relacionada con el HMI de PLCnext, por lo que es necesario tener al menos una página HMI en tu proyecto PLCnext, incluso si está vacía, para que la API REST esté disponible. Además, las variables deben estar marcadas con la bandera HMI. Para información más detallada, consulta el PLCnext Info Center.
En este caso se usa el complemento Node-RED para generar peticiones HTTP en el lado de Home Assistant. La instalación del complemento se realiza siguiendo estas y estas instrucciones. Asegúrate de haber completado ambos pasos antes de continuar.
Si la autenticación de usuario HMI en el proyecto PLCnext está activada, la autenticación en Node-RED podría verse así:
El flujo ejecuta la autenticación y almacena el token de acceso para usarlo en las posteriores peticiones. Para la estructura exacta de las peticiones HTTP, consulta también la documentación en el PLCnext Info Center.
Para acceder a los datos de tu entorno Home Assistant en Node-RED, hay varios nodos que vienen con el complemento Node-RED. El flujo corto en la parte inferior de la siguiente figura crea una nueva entidad en Home Assistant y en el flujo superior se comprueba esta entidad por cambios. Si la entidad se establece en true, una variable en el controlador PLCnext también se establece en true y dispara un reinicio. Como la variable de reinicio en el proyecto PLCnext se establece automáticamente en false después del reinicio, la entidad en Home Assistant también se establece en false después de un retraso de 5 segundos.
Bot de Telegram
Para comunicarse con Home Assistant se usa la API del Bot de Telegram. Para usar esto, un nuevo bot debe registrarse siguiendo esta instrucción.
telegram_bot:
- platform: polling
api_key: TU_API_TOKEN
allowed_chat_ids:
- TU_CHAT_ID_1
- TU_CHAT_ID_2
La forma más fácil de encontrar tu chat ID es escribirle un mensaje a tu bot y luego iniciar una petición HTTP:
https://api.telegram.org/botTU_API_TOKEN/getUpdates
Un ejemplo útil para el Bot de Telegram podría ser que te informe cada mañana sobre las condiciones meteorológicas de hoy, para que tengas una indicación de qué ponerte. En este proyecto tiene otra tarea: reiniciar (hard reset) un PLC (pulsar el botón en los registros Modbus) mediante un comando en Telegram. El comando /MBrestartPLC se envía al bot e inicia un script de automatización en Home Assistant, que finalmente cambia el valor del registro de bobina Modbus y /RESTrestartPLC hace lo mismo usando la API REST.
SMTP
En Home Assistant el Protocolo Simple de Transferencia de Correo (SMTP) puede usarse para enviar correos electrónicos con una selección de los datos disponibles en tu automatización del hogar. El servicio se puede implementar añadiendo el siguiente código al configuration.yaml:
notify:
- name: SMTP_MESSENGER # podría cambiarse
platform: smtp
server: SERVIDOR_SMTP # ej. smtp.gmail.com
port: 587
timeout: 15
sender: TU_EMAIL
encryption: starttls
username: TU_USUARIO
password: TU_CONTRASEÑA
recipient:
- EMAIL_DESTINATARIO
sender_name: Mi Home Assistant # podría cambiarse
Haz clic aquí para obtener más información sobre el servicio SMTP en Home Assistant.
Automatizaciones
Si todos los servicios y bibliotecas están implementados y preparados, hay que combinarlos. Esto se hace mediante las automatizaciones que se programan en el automations.yaml del entorno Home Assistant. La estructura de una automatización es muy simple como se muestra en la tabla siguiente. El alias es solo el nombre de la automatización en Home Assistant. El trigger (disparador) es la condición que debe ser verdadera para ejecutar la automatización, como un cierto comando de telegram usado en este caso, y la action (acción) es la tarea, como en este caso establecer una variable a true y enviar un correo.
| Modbus TCP | API REST |
|---|---|
- id: '1' |
- id: '2' |
Conclusión
Este pequeño proyecto de demostración demuestra que es bastante simple integrar un controlador PLCnext en una automatización del hogar. La disponibilidad de todos los datos PLC en Home Assistant allana el camino para aplicaciones mucho más potentes que este ejemplo. Piensa en programas PLC más complejos que pueden ser controlados y monitorizados en función del clima u otros datos disponibles en Home Assistant.
Tecnología Industrial
- Construya un Controlador Domótico 433 MHz con Sensorflare y Raspberry Pi
- Gestión de dispositivos: Escalando despliegues de contadores inteligentes a millones de dispositivos
- Por Qué VIA-en-Pad Mejora el Rendimiento PCB: Beneficios Clave
- Máquinas CNC de Escritorio Asequibles para Corte de Metal de Precisión en Casa
- Acceso Remoto Seguro gRPC con grpcurl en Dispositivos PLCnext
- Optimizar dispositivos PLCnext Control con SNMP: Guía práctica
- Instala el gestor de paquetes APT en PLCnext Linux: Guía paso a paso
- Cómo la tecnología de hogar inteligente transforma la vida cotidiana
- Acelere la integración de dispositivos Modbus con una pasarela de borde IIoT de código abierto
- Comisión inalámbrica sin fisuras para hogares inteligentes: desde el desempaquetado hasta la configuración remota segura
- Cerrando la Brecha de Habilidades en Hogar Inteligente: Por Qué Reino Unido Rezaga en Europa