41 3242-0316
41 3343-1574

Como Configurar um Broker Mosquitto no Controlador WAGO com Docker e Node-RED

Guia Completo: Como Configurar um Broker Mosquitto no Controlador WAGO com Docker e Node-RED

Introdução

Este Application Note serve como referência para desenvolver um broker Mosquitto diretamente dentro dos controladores WAGO através da plataforma Docker e exemplificar como conectar e receber dados através do Node-RED.

Equipamentos Utilizados

1.       Controlador WAGO CC100 – 751-9301;

2.       Fonte de Alimentação Chaveada WAGO Compact – 787-2850

Programa Exemplo com Controle de Acesso

Requisitos Mínimos

·         Controladores WAGO Linhas: PFC100 2º GeraçãoPFC200 / Compact Controllers 100 (CC100) / Touch Panels TP600;

·         Conhecimentos em controladores WAGO;

·         Conhecimentos básicos Docker;

·         Conhecimentos básicos Linux;

·         Controlador ter conexão com internet.

 

Todos os itens pode ser baixados a partir do seguinte link: https://downloadcenter.wago.com/wago/software

 

CONFIGURANDO CONTROLADOR

ACESSO A CONFIGURAÇÕES DO CONTROLADOR

Para utilizar o DOCKER, deverá ser habilitado, além de outras configurações, para que seja possível utilizá-lo. Para isso, deve-se acessar a tela web do controlador através do IP/wbm (Exemplo: 192.168.0.235/wbm).

Acesso padrão:

Username: admin
Password: wago

Para configurá-lo, será necessário que o controlador tenha acesso à internet para que seja possível realizar o download dos containers. Configure o IP do controlador acessando “Configuration” -> “Networking” -> “TCP/IP Configuration”.

“IP Source”: Modelo de definição de IP (para o documento será utilizado “Static IP”).

“Static IP Address”: Campo para definição do IP estático do CLP (Caso seja selecionado em “IP Source” como Static IP).

“Subnet Mask”: Máscara da rede conforme a rede que você está utilizando.

“Default Gateway”: Caso o CLP seja conectado a uma rede com um servidor DHCP, deve-se definir o IP do servidor.

Após preencher os dados, clique em “Submit” e aguarde o CLP realizar a troca de IP. A validação da troca pode ser feita de duas maneiras.

CONFIGURAÇÕES DE REDE

Ainda dentro do tópico “Networking”, deve-se acessar “Routing” para realizar a liberação das portas de comunicação, marcando a caixa em “IP Forwarding through multiple interfaces”. Para gravar a alteração, clique em “Submit”.

Para finalizar a configuração de rede, o horário deve estar correto. Para isso, acesse “Configuration” -> “Clock” e faça a alteração de data e hora nos campos de “Local Time and Date”.

“Local Date”: formatação de data por DD.MM.YYYY;

“Local Time”: formatação de tempo por HH:mm:SS;

HABILITANDO DOCKER

Para habilitar o Docker, basta acessar “Configuration” -> “Docker”, marcar a caixa de “Service Enable” e clicar em “Submit”.

CONFIGURAÇÕES DE ARMAZENAMENTO

Este passo não é obrigatório, porém recomendado, pois, caso não seja feito, os containers Docker serão salvos diretamente na memória interna do controlador.

Para criar uma partição no cartão SD dentro do controlador, o cartão deverá estar instalado e, em seguida, deve-se acessar “Configuration” -> “Mass Storage”.

Na parte inferior da tela, selecione “Filesystem Type” como “Ext4” e, em “Label”, insira o nome a ser atribuído ao cartão SD. Clique em “Start” para iniciar a formatação.

Após a atualização de firmware, o nome do cartão será exibido em “Volume name”, conforme mostrado na imagem abaixo.

CONECTANDO CONTROLADOR VIA SSH

Para acessar o controlador via SSH, abra o “Prompt de Comando” da máquina que está sendo utilizada e digite o seguinte comando: ssh root@IP_DO_CONTROLADOR (Exemplo: ssh root@192.168.0.235). Em seguida, pressione ENTER. O controlador solicitará uma senha de acesso; caso seja o primeiro acesso, a senha padrão é “wago” (observe que, ao digitar a senha, nada aparecerá no campo de texto de password).

Observação: Se for o primeiro acesso, será solicitado que a senha do SSH seja alterada.

Ao realizar o login no controlador WAGO, utilize o comando ping www.google.com para validar a conexão com a internet. Caso o resultado seja “ping: bad address”, reveja os passos anteriores para garantir que a configuração foi feita corretamente.

Para interromper o ping basta, apertar CTRL + C.

Para verificar se o Docker foi instalado corretamente, basta digitar o comando docker -v. Se o comando retornar a versão e o número da build instalada, é sinal de que o Docker está funcionando como esperado.

ALTERANDO O DIRETÓRIO DOCKER

Os passos a seguir são necessários apenas se estiver utilizando o cartão SD. Caso não esteja utilizando o SD, pule para o tópico "CONFIGURANDO CONTAINER MOSQUITTO".

Primeiro, será necessário parar a aplicação do Docker para que seus documentos internos possam ser alterados.

Para isso, utilize o comando: /etc/init.d/dockerd stop.

Após o Docker ter sido finalizado, utilize o comando: nano /etc/docker/daemon.json

Este comando abrirá o arquivo “daemon.json” localizado nas pastas “etc” -> “docker”, onde será necessário alterar o diretório para salvar os arquivos dos futuros containers baixados.

Ao acessar o arquivo via nano, altere o valor de “data-root” para o diretório desejado, por exemplo, /media/NomeDefinidoAoSD (Exemplo: /media/sd). Após fazer a alteração, pressione a sequência de comandos “CTRL+X”, depois “Y” e, por fim, “Enter” para salvar as mudanças.

Observação: Cuidado para não alterar a estrutura do arquivo.

Após sair do arquivo, inicie novamente o Docker com o comando: /etc/init.d/dockerd start

Para validar se o diretório foi alterado com sucesso, utilize o comando: docker info. Isso permitirá verificar as configurações atuais do Docker, incluindo o diretório onde os containers estão sendo armazenados.

E procure pela informação “Docker Root Dir”, que informará o diretório atual e estará localizada ao final da lista de dados.

CONTAINER MOSQUITTO

CRIANDO ARQUIVOS DE CONFIGURAÇÃO

Antes de realizar o download do container do Mosquitto, é necessário criar pré-configurações. Utilizando a seguinte sequência de comandos.

·         pwd

o   Função: Lista os arquivos e diretórios presentes no diretório atual.

o   Resultado: Após a criação do diretório "mosquitto", este comando listaria todos os arquivos e diretórios presentes em /root, incluindo o recém-criado "mosquitto".

·         mkdir mosquitto

o   Função: Cria um novo diretório.

o   Resultado: Foi criado um novo diretório chamado "mosquitto" no diretório atual, que é o /root.

·         ls

o   Função: Muda o diretório de trabalho para o especificado.

o   Resultado: O usuário "troca" de diretório e agora está dentro do diretório "mosquitto" que ele acabou de criar.

·         cd mosquitto

o   Função: Lista os arquivos e diretórios presentes no diretório atual.

o   Resultado: Após a criação do diretório "mosquitto", este comando listaria todos os arquivos e diretórios presentes em /root, incluindo o recém-criado "mosquitto".

Dentro da pasta “/mosquitto”, deve-se criar o arquivo de configuração com o comando: nano mosquitto.conf.

Ao acessar o arquivo via nano, adicione as seguintes informações:

bind_address 0.0.0.0

port 1883

allow_anonymous false

Explicação dos comandos:

bind_address 0.0.0.0: Define a partir de qual IP será acessado o broker.

port 1883: Define a porta de acesso do broker.

allow_anonymous false: Define que é necessário usuário e senha para realizar a conexão.

Para salvar o arquivo, pressione a sequência de comandos “CTRL+X”, depois “Y” e, por fim, “Enter”.

DOWNLOAD CONTAINER

Após realizar as configurações necessárias para a execução do container, utilize o seguinte comando para fazer o download do container Mosquitto:

docker run -d --name mosquitto -it -p 1883:1883 -p 9001:9001 \ -v /root/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto

O comando docker run possui diversas flags que customizam o comportamento do container ao ser criado.

“-d”: Detached mode: Inicia o container em segundo plano, ou seja, o terminal não fica bloqueado. Você pode continuar utilizando o terminal enquanto o container está em execução.

“--name mosquitto”: Nomeia o container: Atribui o nome "mosquitto" ao container, facilitando sua identificação e gerenciamento.

“-it”: Interativo e terminal: Normalmente usado para interagir com o container em tempo real.

“-p 1883:1883 -p 9001:9001”: Mapeia portas: Mapeia as portas do container para as portas do seu computador. Isso permite que você acesse o servidor MQTT através dessas portas no seu computador.

“-v /root/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf”: Cria um volume: Compartilha um arquivo de configuração entre o seu computador e o container. Qualquer alteração feita no arquivo no seu computador será refletida no container.

Observação: Também pode ser utilizado a flag –restart always para sempre que o controlador for reiniciado inicie o broker junto. Caso não esteja utilizando está flag será necessário toda vez que o controlador for reiniciado executar o comando “docker start mosquitto”.

Agora basta aguardar o download do container.

Após o download do container, utilize o comando docker ps para verificar se o container está sendo executado. A coluna “STATUS” indicará o estado atual do container.

CRIANDO LOGIN DE ACESSO AO BROKER

Como foi configurado para proibir o acesso ao broker sem login, será necessário criar o usuário diretamente dentro do container. Para acessá-lo, utilize o comando:

docker exec -it mosquitto /bin/sh

Ao realizar o acesso no container será necessário utilizar uma sequência de comandos

1.      mosquitto_passwd -c /mosquitto/config/pass admin

 

·         “mosquitto_passwd”: É uma ferramenta específica do Mosquitto para gerenciar usuários e senhas.

·         “-c”: Indica que irá ser criado um novo arquivo de senha.

·         “/mosquitto/config/pass”: É o caminho para o arquivo onde as senhas serão armazenadas.

·         “admin”: É o nome do usuário que está sendo criado.

·         “Password”: Será necessário digitar a senha de acesso.

·         “Reenter Password”: Redigite a senha para confirma-la.

 

A senha não será exibida durante a digitação.

 

2.      cd /mosquitto/config/

 

·         “cd”: Muda o diretório de trabalho para o especificado.

·         “/mosquitto/config”: É o caminho para o diretório onde o arquivo de senha foi criado.

3.      ls

·         “ls”: Lista os arquivos e diretórios do diretório atual.

·         Resultado: Neste caso, provavelmente será listado o arquivo pass que acabamos de criar.

4.     cat pass

 

·         “cat”: Mostra o conteúdo de um arquivo.

·         “pass”: É o nome do arquivo que contém as senhas.

·         Resultado: Será exibido o conteúdo do arquivo pass, que é a senha criptografada do usuário "admin".

Após finalizar a configuração, utilize o comando exit para sair do container. Em seguida, use o comando abaixo para parar o container do Mosquitto, pois ainda é necessário apontar o arquivo mosquitto.conf para o local onde está o arquivo de login:

docker stop mosquitto

Utilize os comandos abaixo para acessar o arquivo.

·         cd mosquitto

o   Função: Lista os arquivos e diretórios presentes no diretório atual.

o   Resultado: Após a criação do diretório "mosquitto", este comando listaria todos os arquivos e diretórios presentes em /root, incluindo o recém-criado "mosquitto".

·         nano mosquitto.conf

o   Para acessar o arquivo mosquitto.conf

Ao acessar o arquivo mosquitto.conf, adicione a seguinte linha de código: password_file /mosquitto/config/pass

Essa linha irá apontar o caminho interno do container onde está o arquivo de login. Para salvar o arquivo, pressione a sequência de comandos “CTRL+X”, depois “Y” e, por fim, “Enter”.

Agora, basta reiniciar o container para que as alterações entrem em vigor com o comando: docker start mosquitto

Ao reiniciar o container, o broker estará pronto para ser utilizado.

EXEMPLO DE COMUNICAÇÃO COM NODE-RED

Os passos abaixo não são obrigatórios, mas servem como exemplo de funcionamento do broker. No exemplo, estaremos recebendo dados de uma fonte WAGO PRO2 com módulo MQTT de comunicação, passando a mensagem para o broker dentro do controlador WAGO e, em seguida, recebendo-a no Node-RED em outra máquina.

Ao acessar o Node-RED, arraste os seguintes blocos:

MQTT in: Para receber mensagens do broker MQTT.

Debug: Para exibir as mensagens recebidas no painel de depuração.

Ao acessar o bloco MQTT in no Node-RED, adicione o “Topic” que estará recebendo as mensagens. Em seguida, clique sobre o ícone do lápis ao lado do campo de configuração para configurar o broker.

Ao acessar a configuração do nó MQTT in no Node-RED, adicione o IP do servidor, que será o mesmo do controlador, e a porta conforme configurada no arquivo mosquitto.conf.

Depois de configurar o IP do servidor e a porta, acesse a aba “Security” e adicione o “Username” e “Password” conforme foram criados dentro do container Mosquitto. Por fim, clique em “Update” para gravar as configurações do bloco.

Após configurar o bloco, clique em “Deploy” para aplicar as alterações e atualizar o programa que está sendo executado no Node-RED.

Abaixo do nó MQTT in, será possível ver se está conectado ao broker. À direita, você conseguirá visualizar o retorno do objeto no painel de depuração, mostrando as mensagens recebidas do broker MQTT.

Fazer download do PDF
Fazer download do ZIP
Desenvolvido por Reação Web
Adicionar 0