Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

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

Bibliotecas:

Servicios de Home Assistant:

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

Conecta controladores PLCnext a Home Assistant para control domótico inteligente

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í:

Conecta controladores PLCnext a Home Assistant para control domótico inteligente

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.

Conecta controladores PLCnext a Home Assistant para control domótico inteligente

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'
alias: 'Trigger a reset of a controller via modbus'
trigger:
platform: event
event_type: telegram_command
event_data:
command: '/MBrestartPLC'
action:
- service: switch.turn_on
entity_id: switch.restartMB
- service: notify.SMTP_MESSENGER
data:
title: 'PLC message'
message: 'PLC restart initiated via modbus!'
- id: '2'
alias: 'Trigger a reset of a controller via rest api'
trigger:
platform: event
event_type: telegram_command
event_data:
command: '/RESTrestartPLC'
action:
- service: switch.turn_on
entity_id: switch.restartREST
- service: notify.SMTP_MESSENGER
data:
title: 'PLC message'
message: 'PLC restart initiated via rest!'

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

  1. Construya un Controlador Domótico 433 MHz con Sensorflare y Raspberry Pi
  2. Gestión de dispositivos: Escalando despliegues de contadores inteligentes a millones de dispositivos
  3. Por Qué VIA-en-Pad Mejora el Rendimiento PCB: Beneficios Clave
  4. Máquinas CNC de Escritorio Asequibles para Corte de Metal de Precisión en Casa
  5. Acceso Remoto Seguro gRPC con grpcurl en Dispositivos PLCnext
  6. Optimizar dispositivos PLCnext Control con SNMP: Guía práctica
  7. Instala el gestor de paquetes APT en PLCnext Linux: Guía paso a paso
  8. Cómo la tecnología de hogar inteligente transforma la vida cotidiana
  9. Acelere la integración de dispositivos Modbus con una pasarela de borde IIoT de código abierto
  10. Comisión inalámbrica sin fisuras para hogares inteligentes: desde el desempaquetado hasta la configuración remota segura
  11. Cerrando la Brecha de Habilidades en Hogar Inteligente: Por Qué Reino Unido Rezaga en Europa