Conecte Controladores PLCnext ao Home Assistant para Controle Residencial Inteligente
Este pequeno projeto demonstra como usar facilmente um controlador PLCnext como dispositivo de casa inteligente no software de automação residencial de código aberto Home Assistant via REST API e Modbus TCP. Com o controlador PLCnext, você pode usar componentes Axioline na sua automação para adicionar saídas mais potentes do que os pinos GPIO do Raspberry Pi, sensores de temperatura como Pt100 e sistemas de barramento como DALI. Tudo que você precisa é uma instalação funcional do Home Assistant e um controlador PLCnext com um pequeno projeto PLCnext executável.
Pré-requisitos
- Home Assistant Core 2021.1.5
- Balena
- PLCnext Engineer 2020.6
- AXC F 2152FW 2020.0 LTS
- Imagem Raspberry Pi 2 (A inicialização pode levar uma hora.)
Bibliotecas:
- Modbus_TCP (Build 8) para PLCnext Engineer
Serviços do Home Assistant:
- Telegram
- SMTP
Descrição da Funcionalidade
Para dar uma visão geral das possibilidades de usar um Controlador PLCnext como dispositivo de casa inteligente, existe um projeto PLCnext que pode fazer hard reset de outros dispositivos controlando sua tensão de alimentação com relés. Os resets são acionados por comandos enviados a um Bot do Telegram, antes de um e-mail ser enviado com a informação de que uma reinicialização foi iniciada. Este exemplo será mostrado com duas formas diferentes de conectar o controlador PLCnext ao ambiente Home Assistant.
Arquitetura

Conexão via Modbus TCP
Começando com a conexão Modbus TCP, um servidor Modbus é adicionado ao projeto PLCnext usando a biblioteca Modbus TCP. A configuração é a mesma do exemplo da biblioteca. A escolha do registrador Modbus correto depende do tipo de dados e como eles devem ser usados. Neste caso, as variáveis são mapeadas para o registrador de coil.
Atenção: O servidor Modbus não suporta mais de uma conexão por vez. Se uma conexão não for encerrada corretamente, o que infelizmente acontece às vezes durante testes, o servidor entrará em estado de erro e terá que ser reiniciado manualmente. Para evitar isso, recomenda-se programar uma reinicialização automática do servidor Modbus no projeto PLCnext.
Para o cliente Modbus, existem duas possibilidades principais no Home Assistant e cabe a você escolher sua favorita. A primeira é usar o add-on Node-RED e uma das bibliotecas Modbus disponíveis lá. A mais intuitiva é configurar uma entidade no configuration.yaml do seu ambiente Home Assistant. Como mostrado abaixo, o serviço switch padrão é usado, que é uma forma comum de trabalhar com variáveis booleanas, pois possui funcionalidades turn_on/turn_off implementadas para definir ou resetar as variáveis.
modbus:
type: tcp # usando Modbus TCP
host: SEU_IP_DO_SERVIDOR # preencha o endereço IP do servidor
port: 502
name: hub1 # pode ser alterado
switch:
- platform: modbus
coils:
- name: restartMB # pode ser alterado
hub: hub1
slave: 1
coil: 13 # a posição do registrador da variável
Se você escolher a possibilidade Node-RED, esteja ciente de que ele tipicamente inicia conexões diferentes para leitura e escrita com Modbus TCP, fazendo com que o servidor Modbus entre em estado de erro como mencionado acima. Para evitar isso, você pode usar Modbus UDP ou dois servidores Modbus no seu projeto PLCnext, um para leitura e outro para escrita.
Conexão via REST API
A segunda possibilidade para a conexão é a interface de dados REST do PLCnext. Esta interface está relacionada ao PLCnext HMI, então é necessário ter pelo menos uma página HMI no seu projeto PLCnext, mesmo que vazia, para tornar a REST API disponível. Além disso, as variáveis devem ser sinalizadas com a flag HMI. Para informações mais detalhadas, consulte o PLCnext Info Center.
Neste caso, o add-on Node-RED é usado para gerar requisições HTTP no lado do Home Assistant. A instalação do add-on é feita seguindo esta e esta instruções. Certifique-se de ter feito ambos os passos antes de continuar.
Se a autenticação de usuário HMI no projeto PLCnext estiver ativada, a autenticação no Node-RED pode ser assim:

O fluxo executa a autenticação e armazena o access token para usá-lo nas requisições posteriores. Para a estrutura exata das requisições HTTP, verifique também a documentação no PLCnext Info Center.
Para acessar os dados do seu ambiente Home Assistant no Node-RED, existem vários nós que vêm com o add-on Node-RED. O fluxo curto na parte inferior da figura seguinte cria uma nova entidade no Home Assistant e no fluxo acima esta entidade é verificada por mudanças. Se a entidade for definida como true, uma variável no controlador PLCnext também é definida como true e aciona um reset. Como a variável de restart no projeto PLCnext é automaticamente definida como false após o reset, a entidade no Home Assistant também é definida como false após um atraso de 5 segundos.

Bot do Telegram
Para comunicar com o Home Assistant, a API do Bot do Telegram é usada. Para usar isso, um novo bot deve ser registrado seguindo esta instrução.
telegram_bot:
- platform: polling
api_key: SEU_API_TOKEN
allowed_chat_ids:
- SEU_CHAT_ID_1
- SEU_CHAT_ID_2
A maneira mais fácil de encontrar seu chat id é escrever uma mensagem para seu bot e então iniciar a requisição HTTP:
https://api.telegram.org/botSEU_API_TOKEN/getUpdates
Um exemplo útil para o Bot do Telegram pode ser que ele o informe toda manhã sobre as condições climáticas de hoje, para que você tenha uma indicação do que vestir. Neste projeto ele ganha outra tarefa: fazer hard reset de um PLC (pressionar o botão nos registradores Modbus) por um comando no Telegram. O comando /MBrestartPLC é enviado ao bot e inicia um script de automação no Home Assistant, que finalmente altera o valor do registrador de coil Modbus e /RESTrestartPLC faz o mesmo usando a REST API.
SMTP
No Home Assistant, o Simple Mail Transfer Protocol (SMTP) pode ser usado para enviar e-mails com uma seleção dos dados disponíveis na sua automação residencial. O serviço pode ser implementado adicionando o seguinte código ao configuration.yaml:
notify:
- name: SMTP_MESSENGER # pode ser alterado
platform: smtp
server: SERVIDOR_SMTP # ex: smtp.gmail.com
port: 587
timeout: 15
sender: SEU_EMAIL
encryption: starttls
username: SEU_USUARIO
password: SUA_SENHA
recipient:
- EMAIL_DO_DESTINATARIO
sender_name: Meu Home Assistant # pode ser alterado
Clique aqui para obter mais informações sobre o serviço SMTP no Home Assistant.
Automações
Se todos os serviços e bibliotecas estão implementados e preparados, eles precisam ser combinados. Isso é feito pelas automações programadas no automations.yaml do ambiente Home Assistant. A estrutura de uma automação é muito simples como mostrado na tabela abaixo. O alias é apenas o nome da automação no Home Assistant. O trigger é a condição que deve ser verdadeira para executar a automação, como um certo comando do telegram como usado neste caso, e a action é a tarefa, como neste caso definir uma variável como true e enviar um e-mail.
| Modbus TCP | REST API |
|---|---|
- id: '1' |
- id: '2' |
Conclusão
Este pequeno projeto demonstra que é bastante simples integrar um controlador PLCnext em uma automação residencial. A disponibilidade de todos os dados do PLC no Home Assistant abre caminho para aplicações muito mais poderosas do que este exemplo. Pense em programas PLC mais complexos que podem ser controlados e monitorados em função do clima ou outros dados disponíveis no Home Assistant.
Tecnologia industrial
- Gestão de Dispositivos: Escalando Deployments de Smart Meters para Milhões de Dispositivos
- Como Tecnologia de Casa Inteligente Transforma Vida Cotidiana
- Acelere a Integração de Dispositivos Modbus com Gateway Edge IIoT Open-Source
- Construa um Controlador Doméstico Inteligente 433 MHz com Sensorflare e Raspberry Pi
- Preenchendo a Lacuna de Habilidades em Casas Inteligentes: Por Que a Grã-Bretanha Fica Atrás da Europa
- Por que VIA-em-Pad Melhora Desempenho de PCB: Benefícios Principais
- Máquinas CNC Desktop Acessíveis para Corte de Metal de Precisão em Casa
- Acesso Remoto Seguro gRPC com grpcurl em Dispositivos PLCnext
- Otimizando Dispositivos PLCnext Control com SNMP: Guia Prático
- Instalando o Gerenciador de Pacotes APT no Linux PLCnext: Guia Passo a Passo