reTerminal DM com Node Red e BACnet TCP
Introdução
BACnet IP (Building Automation and Control Network over IP) é um protocolo de comunicação desenvolvido para gerenciar e automatizar sistemas prediais. Ele permite que dispositivos de diferentes fabricantes interoperem perfeitamente por meio de redes IP padrão, aumentando a integração e a flexibilidade do sistema. As principais vantagens do BACnet IP em Sistemas de Gerenciamento Predial (BMS) incluem melhor escalabilidade, instalação e manutenção mais simples e a capacidade de aproveitar a infraestrutura de rede existente. O BACnet IP também oferece suporte à troca de dados em tempo real, facilitando um monitoramento e controle mais eficientes dos sistemas prediais. Isso resulta em maior eficiência energética, redução de custos operacionais e maior conforto e segurança para os ocupantes.
Iniciando
Antes de iniciar este projeto, você precisa preparar o hardware e o software com antecedência, conforme descrito aqui.
Hardware
| reTerminal DM |
|---|
![]() |
Preparação de Software
Nós preparamos um Guia de primeiros passos no Node-RED. Recomenda-se revisar este guia antes de prosseguir para este wiki.
YABE
Acesse este link e baixe o YABE (Yet Another BACnet Explorer). O YABE é uma ferramenta versátil que permite simular e explorar dispositivos BACnet, sendo ideal para fins de teste e desenvolvimento. Depois de baixá-lo e instalá-lo no seu PC Host, o YABE será usado para simular dados de temperatura de ambiente, que então leremos e processaremos usando o Node-RED no reTerminal DM.
Configurar definições de Ethernet para BACnet IP
Como o domínio de IP do seu dispositivo é diferente das suas configurações sem fio, talvez seja necessário alterar a configuração de IP manualmente. Para isso,
- Passo 01: Execute o seguinte comando:
sudo nano /etc/dhcpcd.conf
- Passo 02: Em seguida, configure as definições da porta Ethernet de acordo com o domínio de rede do seu PLC/Dispositivo e defina as prioridades usando o comando metric. O menor valor de metric tem a maior prioridade.
Instalar o nó BACnet
-
Abra o Node-RED: Inicie o Node-RED no seu reTerminal. Normalmente, você pode acessá-lo abrindo um navegador da web e navegando para
http://<your-reTerminal-DM-ip>:1880. -
Acesse Manage Palette: No canto superior direito da interface do Node-RED, clique nas três linhas horizontais (menu) para abrir o menu principal. No menu suspenso, selecione "Manage palette."
-
Instalar novos nós: Na janela "Manage palette", vá até a aba "Install".
-
Pesquisar o pacote: Na caixa de pesquisa, digite
node-red-contrib-bacnet-extendedpara encontrar o pacote. -
Instalar o pacote: Quando você vir
node-red-contrib-bacnet-extendedna lista de nós disponíveis, clique no botão "Install" ao lado dele. Isso iniciará o processo de instalação. -
Aguarde a conclusão da instalação: A instalação pode levar alguns instantes. Quando for concluída, você verá uma mensagem de confirmação.
-
Verificar a instalação: Após a conclusão da instalação, os nós BACnet estarão disponíveis na paleta do Node-RED. Você pode verificar isso conferindo a lista de nós na barra lateral esquerda do editor do Node-RED.
Agora, você instalou com sucesso o node-red-contrib-bacnet-extended e pode começar a usá-lo para integrar dispositivos BACnet aos seus fluxos Node-RED.
Iniciar o simulador de controlador de temperatura de ambiente
Depois de instalar o YABE, navegue até a pasta add-on e clique duas vezes em bacnet.Room.Simulator para iniciá-lo.
Depois disso, você precisa iniciar o YABE.

Em seguida, clique no sinal + para adicionar um dispositivo e insira o endereço IP da porta Ethernet do seu PC. Clique em "Start."
Talvez seja necessário configurar o endereço IP da porta Ethernet para garantir que ele esteja no mesmo domínio de rede tanto do reTerminal DM quanto do seu PC.
Depois disso, você deverá conseguir ver o dispositivo com o mesmo ID de dispositivo que o simulador de temperatura de ambiente.
Descobrir dispositivos BACnet IP
-
Nós necessários: Você precisará dos quatro nós a seguir:
- Inject
- Function
- Discover-devices
- Debug
-
Adicionar nós ao fluxo: Arraste e solte os nós acima no fluxo da sua área de trabalho do Node-RED.
-
Conectar os nós: Conecte os nós da seguinte maneira:
- Inject >>> Function >>> Discover-devices >>> Debug
-
Configurar o nó Function: Clique duas vezes no nó Function para abrir sua janela de configuração. No bloco de função, escreva o seguinte código:
msg.reuseAddr = true;
msg.transportClosedDuration = 8000;
return msg;
-
Fazer o deploy do fluxo: Clique no botão "Deploy" no canto superior direito da interface do Node-RED para fazer o deploy do fluxo.
-
Acionar a descoberta de dispositivos: Clique no botão de carimbo de data/hora (nó Inject) para iniciar o processo de descoberta.
-
Verificar a saída de Debug: Aguarde a saída aparecer na janela Debug. Você verá o IP do dispositivo e o ID do dispositivo na mensagem de debug.

Ler todos os parâmetros do dispositivo
Para ler todos os parâmetros de dispositivos BACnet usando o Node-RED, siga estas etapas:
-
Preparar nós:
- Você precisará de quatro nós: Inject, Function, Read-All-Devices e Debug.
-
Adicionar nós à área de trabalho:
- Arraste e solte os nós Inject, Function, Read-All-Devices e Debug na sua área de trabalho.
-
Conectar os nós:
-
Conecte os nós na seguinte ordem:
Inject >>>> Function >>>> Read-All-Devices >>>> Debug
-
-
Configurar o nó Function:
- Clique duas vezes no nó Function para abrir sua janela de configuração.
- Insira o seguinte código no bloco de função:
msg.reuseAddr = true;
msg.transportClosedDuration = 8000;
return msg;
-
Fazer o deploy do fluxo:
- Clique no botão "Deploy" no canto superior direito da interface do Node-RED para fazer o deploy do fluxo.
-
Iniciar leitura dos parâmetros do dispositivo:
- Clique no botão de carimbo de data/hora no nó Inject para iniciar o processo.
-
Verificar a saída:
- Aguarde a saída aparecer na janela Debug. Você verá os parâmetros dos dispositivos na área de rede BACnet.
Esta configuração irá ler todos os parâmetros dos dispositivos BACnet na sua rede e exibi-los na janela Debug do Node-RED.

Ler dados de um único dispositivo
-
Preparar nós:
- Você precisará de quatro nós: Inject, Function, Read-All-Devices e Debug.
-
Adicionar nós à área de trabalho:
- Arraste e solte os nós Inject, Function, Read-Single-Device e Debug na sua área de trabalho.
-
Conectar os nós:
-
Conecte os nós na seguinte ordem:
Inject >>>> Function >>>> Read-Single-Device >>>> Debug
-
-
Configurar o nó Function:
- Clique duas vezes no nó Function para abrir sua janela de configuração.
- Insira o seguinte código no bloco de função:
msg.deviceId=DeviceID;
msg.address="IP:PORT ADD";
return msg;
-
Fazer o deploy do fluxo:
- Clique no botão "Deploy" no canto superior direito da interface do Node-RED para fazer o deploy do fluxo.
-
Iniciar leitura dos parâmetros do dispositivo:
- Clique no botão de carimbo de data/hora no nó Inject para iniciar o processo.
-
Verificar a saída:
- Aguarde a saída aparecer na janela Debug. Você verá os parâmetros do dispositivo selecionado na área de rede BACnet.

Ler dados de um objeto específico de um único dispositivo
-
Preparar nós:
- Você vai precisar de quatro nós: Inject, dois nós Function, Read-Single-Device e Debug.
-
Adicionar nós à área de trabalho:
- Arraste e solte os nós Inject, dois nós Function, Read-Single-Device e Debug na sua área de trabalho.
-
Conectar nós:
-
Conecte os nós na seguinte ordem:
Inject >>>> Function >>>> Read-Single-Devices >>>> Function >>>> Debug
-
-
Configurar o nó Function:
- Clique duas vezes no nó Function próximo ao nó Inject para abrir sua janela de configuração.
- Insira o seguinte código no bloco de função:
msg.deviceId=DeviceID;
msg.address="IP:PORT ADD";
return msg;- Clique duas vezes no nó Function próximo ao nó Debug para abrir sua janela de configuração.
- Insira o seguinte código no bloco de função:
const objects = msg.payload['OBJECT_LIST(76)'];
let temperatureIndoor = null;
for (let obj of objects) {
if (obj['OBJECT_NAME(77)'] === 'Temperature.Indoor' && obj['OBJECT_TYPE(79)'] === 'ANALOG_INPUT(0)') {
temperatureIndoor = obj['PRESENT_VALUE(85)'];
break;
}
}
if (temperatureIndoor !== null) {
msg.payload = { 'Temperature.Indoor': temperatureIndoor };
} else {
msg.payload = { error: 'Temperature.Indoor not found' };
}
return msg;
-
Fazer deploy do fluxo:
- Clique no botão "Deploy" no canto superior direito da interface do Node-RED para fazer o deploy do fluxo.
-
Iniciar leitura de parâmetros do dispositivo:
- Clique no botão de timestamp no nó Inject para iniciar o processo.
-
Verificar a saída:
- Aguarde a saída aparecer na janela Debug. Você verá os parâmetros apenas do objeto específico no dispositivo selecionado na área da rede BACnet.

Suporte Técnico & Discussão de Produtos
Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.
