
Seja muito bem vindo ao treinamento Introdução ao protocolo MQTT para automação industrial!
O MQTT (do inglês Message Queue Telemetry Transport) é um protocolo de comunicação entre máquinas (Machine to Machine - M2M) que se populariza a cada dia que passa.
Isto porque o MQTT está se tornando um dos principais protocolos para implementações de Internet das Coisas (IoT), uma tendência de aplicação na indústria ou mesmo no dia a dia das pessoas.
Nesse curso vamos estudar esse protocolo e ao final teremos conhecimento abrangente sobre o protocolo MQTT e poderemos implementar uma infraestrutura completa e funcional em nosso ambiente industrial.
MQTT é um protocolo de transporte de mensagens Cliente/Servidor no conceito Publicação/Assinatura
Leve, aberto, simples e projetado para ser de fácil implementação
Ideal para uso em cenários com recursos restritos, comunicação M2M e IoT, cenários em que são exigidos pacotes de dados e/ou largura de banda mínimos
O protocolo é executado sobre TCP/IP ou sobre outros protocolos de rede que forneçam conexões bidirecionais ordenadas, sem perdas.
Nessa aula vamos conhecer um pouco da evolução do MQTT e suas versões.
Nessa aula vamos abordar as características do MQTT que são:
Publisher/Subscriber;
Endereçamento das mensagens;
Nível de serviço;
Controle de desconexão com notificação;
Segurança.
Agora vamos falar dos conceitos do MQTT que são:
Publisher, Subscriber, Message, Topic, Publish, Subscribe, Unsubscribe, Payload, QoS, Ping, Session, Clean e Retain.
Vamos conhecer como é a estrutura dos pacotes do protocolo MQTT.
Nessa aula iremos ver:
O formato da mensagem MQTT.
O cabeçalho da mensagem MQTT
Campos de mensagem e codificação
Exemplo de codificação de mensagens de controle
Nessa aula vamos ver na prática o que estudamos nas aulas passadas.
Utilizaremos um MQTT client chamado de MQTTBox e o Broken Mosquitto na nuvem.
Utilizaremos também o software Wireshark para monitorar a comunicação MQTT entre eles.
Assim poderemos comprovar na prática os conceitos que estudamos.
Nessa aula vamos comparar as características dos modelos Publish/Subscriber com o modelo Client/Server.
Vamos ver quais são as características que tornam o modelo Publish/Subscriber muito bom para aplicações de IOT.
O broker é o elemento responsável por gerir as publicações e as subscrições do protocolo MQTT.
Ele é como uma espécie de mediador entre as máquinas, capaz de fazer com que a comunicação de fato ocorra entre elas.
Nessa aula vamos aprender um pouco mais sobre as características da comunicação MQTT.
Os clientes MQTT são elementos capazes de interagir com o Broker, seja para enviar, receber ou os dois.
Nessa aula vamos confirmar o que vimos na teoria sobre a dinâmica de comunicação entre os Clientes MQTT (Plublisher e Subscriber) e o Broker.
Vamos utilizar como Client MQTT os simuladores MQTT Box qua já utilizamos no módulo passado e agora vamos utilizar também o simulado MQTT FX.
Nessa aula veremos um pouco mais sobre as mensagens do MQTT... Vamos ver o que é preciso para enviar e receber essas mensagens.
Nessa aula vamos tratar mais detalhes sobre o tópico no MQTT.
O tópico é o local de armazenamento da Mensagem no Broker MQTT.
Nessa aula você verá uma demonstração prática da utilização dos curingas dos tópicos com o MQTTBox e a instancia do Broker Mosquitto.
Quality of Service (QoS) em mensagens MQTT é um acordo entre o remetente e o destinatário sobre a garantia de entrega de uma mensagem.
Existem três níveis de QoS:
0 - no máximo uma vez
1 - pelo menos uma vez
2 - exatamente uma vez
Nessa aula vamos verificar na prática como funciona a questão do QOS nas mensagens MQTT.
Vamos utilizar novamente nosso simulador MQTTBox, a instancia publica do Broker Mosquitto (test.mosquitto.org) e o software Wireshark para analisar o tráfego MQTT.
Normalmente, se um publicador publica uma mensagem em um tópico e ninguém está inscrito nesse tópico, a mensagem é simplesmente descartada pelo broker.
No entanto, o publisher pode dizer ao broker para manter a última mensagem nesse tópico, definindo o sinalizador de mensagem retida (Retain).
Vamos falar um pouco da persistência de conexão no MQTT que permite ao Broker e ao Client estarem cientes de seu estado de conexão
Nessa aula vamos conhecer um pouco mais sobre a última vontade de um cliente MQTT ou a Last Will Message.
Para fixar bem o conceito da Last Will Message vamos realizar uma pequena prática com os simuladores MQTTBox e MQTTfx junto com o Broker Mosquito rodando agora localmente no PC.
Vamos falar sobre sessão e persistência no MQTT?
O que é uma sessão?
Período no qual o Client está conectado ao Broker
E o que é uma Sessão Persistida ?
Sessão cujos dados são armazenados pelo Broker
Vamos colocar em prática o que vimos na teoria, afim de consolidar o conhecimento.
Nos módulos anteriores aprendemos alguns conceitos básicos sobre o MQTT e utilizamos um Broker online e gratuito chamado Mosquitto (test.mosquitto.org) para a realização de testes, no entanto para um projeto finalizado é interessante utilizarmos uma host local por questões de segurança, já que é possível que qualquer usuário utilizando o teste do Mosquitto consiga visualizar os dados que estamos enviando para os tópicos ao assinar o tópico com #, que relembrando, assina todos os tópicos do Broker.
O Mosquitto é um intermediário de mensagens de código aberto que implementa as versões 5.0, 3.1.1 e 3.1 do protocolo MQTT, ele age como Broker e possui um host que pode ser utilizado para teste, como citado acima, ou ele pode ser baixado e configurado de acordo com as preferências do cliente no que tange exigências e segurança.
Nessa aula vamos aprender como instalar o nosso Broker Mosquito em nosso PC localmente.
Agora vamos testar o nosso Broker utilizando o modo verbose e os clientes publisher e subscriber do próprio Mosquitto.
O MQTT suporta várias autenticações e mecanismos de segurança de dados.
É importante observar que esses mecanismos de segurança são configurados no broker MQTT e cabe ao cliente cumprir os mecanismos em vigor.
O Broker Mosquitto permite que você imponha restrições de prefixo de id do cliente ao nome do cliente, e isso fornece alguma segurança básica do cliente.
Vamos aprender como configurar esse recurso nesta aula.
Um broker MQTT pode exigir um nome de usuário e senha válidos de um cliente antes que uma conexão seja permitida.
A combinação de nome de usuário/senha é transmitida em texto não criptografado e não é segura sem alguma forma de criptografia de transporte .
No entanto, fornece uma maneira fácil de restringir o acesso a um Broker e é provavelmente a forma mais comum de identificação usada.
Na tecnologia da informação, uma lista de controle de acesso (ACL, do inglês Access Control List) é uma lista que define as permissões de acesso de um usuário a um determinado componente ou serviço de um sistema.
No MQTT alem de restringir o acesso ao broker Mosquitto usando um nome de usuário e senha, você também pode restringir o acesso aos tópicos usando uma ACL (lista de controle de acesso).
Deixei em anexo a acl que criamos na aula para consulta.
Existem diversas formas de garantir a segurança de uma mensagem encaminhada, uma dessas formas é através da criptografia.
Nessa aula vamos ver como o MQTT pode transportar mensagens criptografadas sem problemas.
A segurança TLS ou como é mais comumente conhecida, a segurança SSL é a tecnologia usada na web.
Essa segurança faz parte do protocolo TCP/IP e não MQTT.
A segurança TLS fornecerá um canal criptografado no qual suas mensagens MQTT podem fluir.
Já o Certificados de cliente x509 é o método mais seguro de autenticação de cliente, mas também o mais difícil de implementar, porque você precisará implantar e gerenciar certificados em muitos clientes.
Essa forma de autenticação é realmente adequada apenas para um pequeno número de clientes que precisam de um alto nível de segurança.
Nessa aula vamos abordar esses dois assunto e implementar esse alto nível de segurança no nosso Broker Mosquitto local.
Vamos iniciar nosso módulo prático do MQTT com uma prática bem legal utilizando um Arduino Mega, uma Ethernet Shield e o nosso Broker Mosquitto.
Você pode obter mais informações sobre a biblioteca do Arduino utilizada na aula pelos links abaixo:
Nessa aula vamos aprender como podemos configurar os CLPs da família SIMATIC S7 da Siemens como Clientes MQTT.
Para executar essa tarefa utilizaremos uma biblioteca de comunicação chamada LMQTT.
O CLP utilizado será um SIMATIC S7 1212FC que será programado no software TIA Portal v17.
Nessa primeira parte vamos ver como importar a biblioteca para o TIA Portal e iniciar a configuração do bloco de comunicação LMQTT.
Dando continuidade a configuração do nosso CLP S71212FC como Cliente MQTT agora vamos configurar os dados da DB de comunicação e testar a conexão com o Broker Mosquitto.
Vamos testar a comunicação entre o CLP e outros clientes MQTT como o Arduino Mega e o MQTTBox.
Nas ultimas duas aulas aprendemos como configurar a comunicação MQTT com um CLP da família SIMATIC S7 da Siemens, realizamos essa configuração utilizando a porta padrão do MQTT sem criptografia.
Porem sabemos que com esse tipo de configuração nossos dispositivos ficam expostos, e por isso se você necessitar acessar um Broker que não esteja em uma rede local e sim na internet, essa não é a configuração mais adequada.
Vamos aprender então como podemos configurar nossa comunicação via TLS.
Nós aprendemos a utilizar nossos CLPs da familia SIMATIC S7 utilizando bibliotecas MQTT que possibilitavam enviar e receber arrays de Bytes como Payload.
Agora quero apresentar uma nova biblioteca que permite enviar as mensagens no formato de string.
Em anexo segue as bibliotecas utilizadas na aula.
Como conectar dispositivos que não tem acesso nativo ao MQTT?
Você tem algumas opções, como por exemplo utilizar um gateway SIMATIC IOT2040 da Siemens, ou qualquer outro Gateway IOT que tenha capacidade de se comunicar com o device e com o Broker MQTT.
Outra solução seria utilizar a plataforma Node-Red para fazer essa integração.
Ela pode estar instalada em um PC/Servidor local, na nuvem, ou até mesmo em um pequeno Raspberry PI.
Nessa aula vamos aprender como utilizar o Node-Red como um cliente MQTT.
Biblioteca utilizada para coletar os dados Modbus no Node-Red:
node-red-contrib-modbus
Código da função utilizada para gerar o valor da entrada Modbus como 0 ou 1:
var conv = msg.payload[0].toString()==='true'?1:0;
var in1 = {payload:conv};
return in1;
Nessa prática com MQTT vamos começar a conhecer as plataformas de IOT.
O IBM Watson IoT Platform pode ajudá-lo a obter um início rápido em seu próximo projeto de Internet das Coisas.
É um serviço totalmente gerenciado e hospedado na nuvem, projetado para simplificar a obtenção de valor de seus dispositivos da Internet das Coisas.
Ele fornece recursos como registro de dispositivo, conectividade, controle, visualização rápida e armazenamento de dados da Internet das Coisas.
Nessa aula vamos conhecer mais uma plataforma de IoT que podemos utilizar para realizar a comunicação dos nosso dispositivos via MQTT.
Aqui eu vou demostrar o passo a passo de como configurar se dispositivo para acessar essa plataforma.
A TagoIO oferece as ferramentas para sua empresa gerenciar dispositivos, armazenar dados, executar análises e integrar serviços.
Ela combina tudo com um aplicativo fácil de usar e um sistema de gerenciamento de usuários.
Exemplo do formato de dados que a plataforma espera receber:
{
"variable": "temperature",
"unit" : "F",
"value" : 55,
"time" : "2015-11-03 13:44:33",
"location": {"lat": 42.2974279, "lng": -85.628292}
}
Nessa aula eu quero demostrar que é possível acessar a plataforma de IoT TagoIO direto pelo CLP sem o uso de um gateway.
Vamos configurar o nosso S71212FC para acessar a plataforma diretamente.
O AWS IoT é uma plataforma de nuvem gerenciada que permite a interação fácil e segura de dispositivos conectados, ou seja, carros, lâmpadas, grades sensoras, etc., com aplicativos de nuvem e outros dispositivos.
Complementando a aula sobre acesso MQTT a AWS IOT vamos aprender como configurar a conexão dela diretamente com o CLP, sem utilizar nenhum Gateway.
O Cloud IoT Core é um serviço totalmente gerenciado na plataforma Google Cloud que permite aos desenvolvedores conectar, gerenciar e ingerir dados de dispositivos dispersos globalmente com segurança....
Os desenvolvedores podem controlar um dispositivo através do envio de uma configuração de dispositivo do Cloud IoT Core.
Além dos Controladores lógicos programáveis que podem se comunicar com o protocolo MQTT, também podemos ter outros ativos de automação que se comuniquem com esse protocolo.
Vamos ver um exemplo nessa aula, onde um software utilizado como sistema supervisório, estará atuando como um cliente MQTT e coletando dados do Broken Mosquitto.
Nessa aula vamos conhecer o software BluePant da Altus que pode ser usado como um sistema SCADA ou para programar IHMs.
Solução para supervisão, controle e aquisição de dados, o BluePlant alia design, desempenho e alta conectividade em um sistema rico em recursos e funcionalidades.
Com visual atraente e intuitivo, o supervisório possui uma arquitetura cliente-servidor com inúmeras opções de quantidades de tags de comunicação, além de simulador e ferramentas de depuração.
O foco aqui será demostrar como configura-lo como um Cliente MQTT para se comunicar e assinar tópicos do Broker Mosquitto.
Nessa nova aula vamos aprender como utilizar um broker mqtt diretamente na nossa plataforma do Node-Red. Em aulas passadas utilizamos o Node-red como um client mqtt, agora vamos utiliza-lo como um broker mqtt.
Para trabalhar com o protocolo MQTT nos controladores da B&R vamos precisar baixar e instalar duas Library no Automation Studio.
Vamos precisar da paho.mqtt.c-ar e da BrSecurity. Ambas podem ser baixadas no GitHub.
Nessa aula vamos instalar as Library e configurar o modo Publish em nosso controlador B&R.
Nessa próxima aula vamos trabalhar com nosso controlador B&R trabalhando como um Subscribe na comunicação MQTT.
Nessa aula estaremos aprendendo a configurar um Broker MQTT Mosquito no Gateway IOT2040 do fabricante Siemens.
O SIMATIC IOT2040 é uma plataforma com suporte à programação em linguagem de alto nível, aberta para o desenvolvimento e realização de ideias inovadoras para a Indústria 4.0 e IoT (Internet das Coisas).
Aplicações criativas poderão ser implementadas de forma rápida e com um hardware robusto e projetado para uma operação confiável 24/7, mesmo em condições adversas.
A plataforma em questão é open source (código livre), ou seja, você terá a liberdade para customizar software. No entanto ela não é open hardware, dificultando um pouco o seu uso, pois faltam informações essenciais que o fabricante não disponibilizou para um melhor aproveitamento do hardware.
Dando continuidade a o nosso estudo utilizando o gateway SIMATIC IOT2040 da Siemens como Broker MQTT vamos agora realizar a integração de um cliente MQTT utilizando um Raspberry Pi 4 rodando a plataforma CoDeSys.
Para realizar essa tarefa vamos precisar instalar uma biblioteca no CoDeSys assim como fizemos no Automation Studio da B&R.
Você pode fazer o download da biblioteca no link abaixo.
Link para a biblioteca: https://github.com/rossmann-engineering/CoDeSys-MQTT-library
Depois de instalada e configurada a biblioteca MQTT no CoDeSys vamos trocar dados via MQTT entre o Raspberry Pi e o Power Panel.
Você lida com Controladores Lógicos Programáveis (CLPs) da Rockwell/Allen Bradley em sua rotina profissional? Já imaginou o quão incrível seria capacitar a comunicação MQTT em seus controladores Rockwell sem depender de gateways, equipamentos externos ou software adicional? Essa habilidade não apenas simplificaria o processo, mas também abriria um leque de possibilidades para integração com dispositivos de Internet das Coisas Industrial (IIoT). No vídeo que segue, vou guiar você detalhadamente por todo o processo, mostrando como é possível alcançar essa integração para a linha de controladores Logix. Prepare-se para explorar novas fronteiras de conectividade e descobrir como esta implementação pode potencializar suas operações e ampliar suas capacidades de integração em ambientes industriais.
Você lida com os CLPs STEP 5 da Siemens? Sabemos que são dispositivos que remontam às décadas passadas, mas e se eu te dissesse que é possível dar a esses veteranos da automação uma nova vida na era digital? Imagine extrair os dados desses robustos equipamentos dos anos 80 e encaminhá-los para um broker MQTT. Isso abriria as portas para uma integração completa com dispositivos modernos, além de possibilitar a criação de aplicações e dashboards inteligentes baseados em dados históricos. Em nosso novo vídeo, vou te guiar por todo o processo, desde a coleta dos dados até a sua integração em um ambiente de Indústria 4.0. Junte-se a mim nesta jornada e descubra como revitalizar seus CLPs S5, transformando-os em peças-chave da sua estratégia de automação avançada. Não perca essa oportunidade de modernizar seu sistema e impulsionar a eficiência da sua operação. Estou ansioso para compartilhar esse conhecimento com você. Vamos lá
O Websockets é uma tecnologia que trafega sobre TCP/IP permitindo que o navegador conecte ao servidor e faça um link de mão dupla.
Os pacotes do MQTT vão trafegar dentro desse túnel bidirecional que é instituido no websockets.
O Websockets foi definido na RFC 6455 de Dezembro de 2011.
Na aula passada iniciamos a configuração de uma página Web para trabalhar como um subscriber MQTT via WebSocket e receber dados publicados por um CLP no Broker. Agora vamos complementar essa aplicação Web com um gráfico para representar os dados lidos.
Obrigado pela sua participação!!!
O MQTT (do inglês Message Queue Telemetry Transport) é um protocolo de comunicação entre máquinas (Machine to Machine - M2M) que se populariza a cada dia que passa.
Isto porque o MQTT está se tornando um dos principais protocolos para implementações de Internet das Coisas (IoT), uma tendência de aplicação na indústria ou mesmo no dia a dia das pessoas.
Nesse curso vamos estudar o protocolo e ao final teremos conhecimento abrangente sobre o protocolo MQTT e poderemos implementar uma infraestrutura completa e funcional em nosso ambiente industrial.
Objetivos do treinamento:
• Conhecer o Protocolo MQTT.
• Detalhar Características e Funcionalidades do MQTT.
• Implementar ambiente para utilização instalando broker Mosquitto.
• Realizar aplicações com CLPs reais e plataformas de IOT.
Por que devemos aprender e utilizar o MQTT?
A resposta é simples.....
• Ele é um protocolo Leve e Eficiente.
• Os clientes MQTT são muito pequenos e requerem recursos mínimos, portanto podem ser usados em pequenos microcontroladores.
• Os cabeçalhos das mensagens MQTT são pequenos para otimizar a largura de banda da rede.
• E hoje em dia você vai encontra-lo em diversos cenários como industrias, cidades inteligentes, prédios e casas inteligentes, fazendas inteligentes e muito mais.... Podemos dizer que o MQTT se tornou um padrão para o IoT.
Se você ficou curioso e quer aprender mais sobre essa tecnologia, e como ela pode ser aplicada na automação industrial assista a esse curso e fique preparado para a evolução do mercado de trabalho.