Como fazer o corretor Raspberry Pi MQTT

Como fazer o corretor Raspberry Pi MQTT

MQTT (Message Queuing Telemetry Transport) é um protocolo de mensagens simples frequentemente usado em aplicativos IoT. O protocolo é baseado em um sistema de publicação-assinatura onde ambos os tipos de dispositivos que publicam e assinam mensagens MQTT são chamados de clientes MQTT. A troca de mensagens entre os editores e assinantes é feita com o auxílio de uma corretora, que deve estar rodando em um dispositivo computacional que deverá permanecer ativo por tempo indeterminado.

Em grandes projetos de IoT, um sistema ou serviço em nuvem é frequentemente atribuído como um corretor MQTT. Os serviços em nuvem têm quase 100% de disponibilidade e podem ser acessados ​​de qualquer lugar. Portanto, os corretores MQTT baseados em nuvem podem conectar editores e assinantes MQTT em todo o mundo. Para projetos de IoT locais ou de pequena escala, como automação residencial ou automação industrial, os serviços em nuvem para corretores MQTT são mais que suficientes, mas não são econômicos. Para tais aplicações, é muito mais econômico utilizar microcomputadores ou computadores de placa única. Microcomputadores como o Raspberry Pi podem ficar ligados o tempo todo com baixo consumo de energia e custo operacional. Esses microcomputadores podem se conectar facilmente a redes WiFi, facilitando uma rede IoT que se estende por uma rede de área ampla (WAN). Até mesmo as redes WiFi utilizadas por corretores de microcomputadores podem ser facilmente estendidas usando repetidores WiFi ou pontos de acesso sempre que necessário. Com muitos corretores MQTT, é ainda possível conectar-se com clientes MQTT em todo o mundo, mesmo que o corretor esteja instalado em um microcomputador.

Neste artigo, discutiremos a função de um corretor no sistema de publicação-assinatura MQTT e discutiremos como um Raspberry Pi pode ser configurado como um corretor MQTT.

O que é o protocolo MQTT?
MQTT) é um protocolo de mensagens projetado para conexões de Internet de baixa largura de banda, adequado para troca de dados entre dispositivos restritos, como aqueles frequentemente implantados em redes IoT. O protocolo permite a comunicação de dados para vários dispositivos simultaneamente. Além disso, vários dispositivos podem transmitir dados ao mesmo tempo.

O MQTT é completamente diferente dos protocolos típicos da Internet, nos quais os dados são frequentemente comunicados ponto a ponto em um modelo cliente-servidor. Em vez disso, o MQTT segue um sistema de publicação-assinatura. No MQTT, ambos os tipos de dispositivos que transmitem dados e aqueles que recebem dados são clientes MQTT. Os clientes podem publicar dados sobre um tópico específico e receber dados sobre um tópico específico. Caso contrário, poderão estar apenas publicando dados sobre temas específicos ou recebendo dados sobre temas subscritos. Até mesmo um dispositivo pode publicar e assinar mensagens sobre o mesmo tópico. Os dados MQTT publicados ou recebidos por um cliente MQTT estão sempre no contexto de um tópico específico. O broker MQTT define os tópicos e gerencia toda a comunicação de dados entre os clientes MQTT.

Como funciona
O sistema de publicação e assinatura MQTT por meio do qual o corretor MQTT define tópicos específicos. Os tópicos são representados por strings separadas por uma barra que serve para separar os níveis dos tópicos. A seguir está um exemplo válido de tópico para um sistema de automação residencial.
casa/quarto1/ventilador

A string 'home/bedroom1/fan' é um tópico específico. As strings 'home', 'bedroom1' e 'fan' são níveis de tópico diferentes. A barra é o separador de nível de tópico. Os dispositivos/clientes MQTT que precisam publicar mensagens/dados relacionados a um tópico são registrados como publicadores para o tópico específico no broker MQTT. Os dispositivos/clientes MQTT precisam receber mensagens/dados relacionados a um tópico e registrar-se como assinantes do tópico específico no broker MQTT. Por exemplo, um controle remoto ou dispositivo móvel usado para controlar o ventilador será registrado como editor no tópico 'casa/quarto1/ventilador'. Enquanto um dispositivo que controla o regulador do ventilador será registrado como assinante do tópico 'home/bedroom1/fan'. Sempre que o publicador (controle remoto) transmitir alguma mensagem referente ao tema, ela será encaminhada ao assinante (circuito regulador do ventilador) pelo corretor MQTT. O editor pode assinar mensagens como “ligado”, “desligado” ou níveis de velocidade como “1”, “2”, “3” etc. para controlar o ventilador.

É importante notar que os tópicos diferenciam maiúsculas de minúsculas. Um tópico ' home/bedroom1/fan ' é diferente de ' Home/bedroom1/fan ' ou ' home/bedroom1/Fan ' e assim por diante. Freqüentemente, em pequenas redes IoT, como automação residencial, placas de desenvolvimento WiFi como ESP8266, ESP32 ou plataformas específicas de controle de automação são configuradas como editores.

Mensagens são dados textuais comunicados sobre tópicos específicos e podem conter dados dos nós sensores ou comandos de um dispositivo de controle. Os dispositivos que precisam transmitir dados de sensores pela rede IoT ou aqueles que precisam comunicar comandos de controle sempre se registram como publicadores. Os clientes MQTT que precisam agir com base em dados de sensores remotos ou comandos remotos são registrados como assinantes.

Conforme já mencionado, um dispositivo ou cliente MQTT pode publicar e assinar. No entanto, um dispositivo também pode publicar e assinar o mesmo tópico. O caso pode ser que um dispositivo esteja publicando mensagens para determinados tópicos e possa ter se inscrito para receber dados para outros tópicos. Tudo isso depende da natureza da aplicação.

Alguns tópicos podem ser definidos de forma que muitos clientes MQTT possam assiná-los. Neste caso, quando a mensagem relacionada a tal tema é publicada, ela é recebida por todos os assinantes. Por exemplo, numa casa inteligente, pode haver relógios inteligentes em todos os quartos. Um cliente MQTT específico pode publicar mensagens para tópicos como ‘data-hora’, ‘temperatura’ e ‘umidade’. Todos os relógios inteligentes podem ter subscrito estes tópicos e podem receber mensagens para eles simultaneamente.

Todas as mensagens entre clientes MQTT são gerenciadas por um corretor MQTT, que pode ser executado em um microcomputador ou plataforma em nuvem. Os corretores MQTT executados em microcomputadores são ainda capazes de comunicar mensagens para dispositivos IoT que não fazem parte da rede local usando a Internet. Uma das coisas importantes para um corretor MQTT é que ele deve ter 100% de tempo de atividade porque os clientes MQTT podem publicar dados a qualquer momento e podem precisar de dados sobre tópicos assinados a qualquer momento.

Aplicações do protocolo MQTT
Curiosamente, o MQTT começou como um protocolo proprietário da IBM para comunicação com sistemas SCADA na indústria de petróleo e gás. Mais tarde, tornou-se um protocolo de código aberto mantido pela Organização para o Avanço dos Padrões de Informação Estruturada (OASIS). Atualmente, algumas das aplicações notáveis ​​do protocolo MQTT incluem automação residencial, medição inteligente, sensoriamento remoto, agricultura inteligente e IoT vestível. Até a Meta usa o protocolo MQTT para seu Facebook Messenger e bate-papos no Instagram.

Corretores MQTT
Em um sistema de publicação e assinatura MQTT, o corretor atua como um servidor para clientes MQTT. O corretor é responsável por receber mensagens publicadas por clientes MQTT, filtrar as mensagens, descobrir os assinantes e comunicar mensagens aos clientes MQTT inscritos. Os corretores MQTT são basicamente programas de servidor projetados para gerenciar a comunicação MQTT. Alguns dos melhores corretores MQTT incluem Mosquitto, Cassandana, Hive MQ, EMQ X, Ejjaberd, EMQ, EMQ Pulse, Apache ActiveMQ, Apache ActiveMQ Pulse, MQTTnet, RabbitMQ, RabbitMQ Pulse, Wave, VerneMQ, VerneMQ Pulse, Mosquitto Pulse, Mosca, e Pulso Mosca.

Preparando Raspberry Pi para corretor MQTT
Raspberry Pi é uma ótima opção para instalar um corretor MQTT. Este computador de placa única pode ficar ligado o tempo todo sem complicações, assim como um modem ou roteador permanece ligado o tempo todo. A placa consome muito pouca energia e pode continuar executando de maneira confiável um aplicativo de alto nível sem falhas. A placa também pode ser facilmente conectada a um display para solução de problemas ou como uma interface gráfica de usuário para um aplicativo IoT.

Primeiramente, você precisa configurar seu Raspberry Pi e instalar o Raspbian na placa, configurando-o como um sistema desktop. Confira este tutorial para instalar o Raspbian e preparar o Raspberry Pi. O corretor MQTT que instalaremos no Raspberry Pi é o Mosquitto.

Instalando o corretor Mosquitto no Raspberry Pi
Depois de preparar o Raspberry Pi com o Raspbian instalado, você pode instalar o corretor MQTT nele. Abra a janela do terminal navegando até Acessórios-> Terminal ou clicando no ícone Terminal. Execute o seguinte comando para atualizar o sistema.
atualização do sudo apt

Atualizando Raspberry Pi

Após atualizar o Raspberry Pi, atualize o sistema executando o seguinte comando.
sudo apt atualizar

Atualizando Raspberry Pi

Pressione Y e Enter quando solicitado a baixar pacotes. A atualização do Raspberry Pi levará de 10 a 20 minutos. Agora instale o Mosquitto Broker executando o seguinte comando.
sudo apt install -y mosquito mosquito-clientes

Instalando o Mosquitto Broker e o Mosquitto Client no Raspberry Pi

Verifique a instalação do Mosquitto executando o seguinte comando. O comando retornará a versão da instalação do Mosquitto.
mosquito -v

Testando a versão do Mosquitto no Raspberry Pi

Você pode fazer o Mosquitto Broker rodar na inicialização executando o seguinte comando.
sudo systemctl habilitar mosquito.service

Habilitando acesso remoto no Raspberry Pi
Os clientes MQTT não podem se comunicar com o Mosquitto Broker no Raspberry Pi até que o acesso remoto seja habilitado no microcomputador. No Mosquitto 2.0 e superior, você precisa escolher explicitamente as opções de autenticação antes de conectar clientes MQTT. Nas versões anteriores, os clientes se conectam ao corretor por padrão sem autenticação.

Para habilitar o acesso remoto, você precisa criar ou editar um arquivo de configuração. Para abrir o arquivo de configuração do Mosquitto mosquitto.conf no editor nano, execute o seguinte comando no Terminal.
sudo nano etc/mosquitto/mosquitto.conf

Editando mosquitto.conf no Raspberry Pi para permitir acesso remoto

Isso abrirá o mosquitto.conf no editor nano, conforme mostrado na imagem abaixo.

Editando mosquitto.conf no Raspberry Pi para permitir acesso remoto

Vá para o final do arquivo usando as teclas de seta e digite as seguintes linhas.
ouvinte 1883
permitir_anônimo verdadeiro

Feche o arquivo pressionando Ctrl + X e salve as alterações pressionando Y e Enter.

Editando mosquitto.conf no Raspberry Pi para permitir acesso remoto

Após salvar o arquivo, reinicie o Mosquitto Broker executando o seguinte comando no Terminal, para que as alterações no arquivo mosquitto.conf tenham efeito.
sudo systemctl reiniciar mosquito

Reiniciando o Mosquitto Broker

Habilitando autenticação no broker MQTT
Para adicionar uma autenticação de usuário/senha ao Mosquitto Broker, execute o seguinte comando no Terminal.
sudo mosquitto_passwd -c /etc/mosquitto/passwd NOME DE USUÁRIO

Observe que você precisará substituir 'NOME DE USUÁRIO' pelo nome de usuário desejado. Ao pressionar Enter, você será solicitado a criar um nome de usuário e a inserir uma senha. Ao inserir a senha, nenhum caracter será exibido. Você será solicitado a digitar novamente sua senha. Digite a mesma senha novamente e pressione Enter. Novamente, nenhum caracter será exibido ao inserir a senha. Um arquivo de senha passwd será criado no diretório /etc/mosquitto.

Agora que para permitir a autenticação com este nome de usuário e senha, você precisa modificar o arquivo mosquitto.conf. Abra o arquivo mosquitto.conf no editor nano executando o seguinte comando no Terminal.
sudo nano /etc/mosquitto/mosquitto.conf

Adicione as seguintes linhas no topo do arquivo.
per_listener_settings verdadeiro

As linhas acima devem ser adicionadas no topo do arquivo. Caso contrário, estas linhas não terão qualquer efeito. Em seguida, adicione as seguintes linhas no final do arquivo.
permitir_anônimo falso
ouvinte 1883
arquivo_senha /etc/mosquitto/passwd

Se o arquivo mosquitto.conf tiver sido editado anteriormente para acesso remoto sem autenticação, remova as seguintes linhas antes de adicionar as linhas mencionadas acima.
ouvinte 1883
permitir_anônimo verdadeiro

O arquivo mosquitto.conf ficará parecido com o mostrado na imagem abaixo após a edição.

Editando mosquitto.conf no Raspberry Pi para ativar a autenticaçãoFeche o arquivo pressionando Ctrl + X e salve as alterações pressionando Y e Enter. Após salvar o arquivo, reinicie o Mosquitto Broker executando o seguinte comando no Terminal, para que as alterações no arquivo mosquitto.conf tenham efeito.
sudo systemctl reiniciar mosquito

Uma vez habilitada a autenticação com nome de usuário e senha, qualquer cliente MQTT disposto a se comunicar com o MQTT Broker precisará fornecê-los para autenticação.

Você pode alterar a senha do nome de usuário existente executando o seguinte comando no Terminal.
mosquitto_passwd

Por exemplo, execute o seguinte comando para alterar a senha do nome de usuário criado com o arquivo passwd. Substitua USERNAME pelo seu próprio nome de usuário.
sudo mosquitto_passwd /etc/mosquitto/passwd NOME DE USUÁRIO

Você será solicitado a inserir uma nova senha. Nenhum caracter será exibido enquanto você digita a senha. Após inserir a senha desejada, pressione Enter. Agora você será solicitado a digitar novamente a senha. Digite a mesma senha e pressione Enter. Novamente, nenhum caracter será exibido ao inserir a senha.

Após já criar um nome de usuário, para adicionar mais nome de usuário-senha, execute o seguinte comando no Terminal com um arquivo de senha diferente.
mosquitto_passwd

Por exemplo, você pode criar outro arquivo de senha passwd2 da seguinte maneira.
sudo mosquitto_passwd /etc/mosquitto/passwd2 NOME DE USUÁRIO

Observe que você precisa substituir USERNAME pelo seu próprio nome de usuário no comando acima. Você pode configurar o Mosquitto Broker para usar o novo nome de usuário-senha modificando o mosquitto.conf e adicionando a seguinte linha no final do arquivo.
arquivo_senha /etc/mosquitto/passwd2

Editando mosquitto.conf no Raspberry Pi para adicionar mais senhas de usuário

Acessando Raspberry Pi por WLAN
Além do nome de usuário e senha (se a autenticação estiver habilitada), os clientes MQTT precisam saber o endereço IP do Raspberry Pi para se conectarem ao corretor. O endereço IP do Raspberry Pi pode ser encontrado executando o seguinte comando no Terminal.
nome do host -I

Isso retornará endereços IPv4 e IPv6. O primeiro endereço retornado é o endereço IPv4. Somente o endereço IPv4 pode ser encontrado executando o seguinte comando no Terminal.
nome do host -i

Testando o corretor Mosquitto no Raspberry Pi
O próprio corretor também pode publicar mensagens. Portanto, se o cliente Mosquitto também estiver instalado no Raspberry Pi, é útil testar o Mosquitto Broker no Raspberry Pi. Já havíamos instalado o cliente Mosquitto executando o seguinte comando no Terminal.
sudo apt install -y mosquito mosquito-clientes

Primeiro de tudo, você precisa executar o Mosquitto Broker em segundo plano, executando o seguinte comando no Terminal.
mosquito -d

Agora podemos inscrever um tópico de teste no cliente Mosquitto executando o seguinte comando no Terminal.
mosquitto_sub -d -t testTopic

Inscrever-se no tópico MQTT no Raspberry Pi

Inscrever-se no tópico MQTT no Raspberry PiA seguir, abra uma nova janela do Terminal e execute o seguinte comando na nova janela para publicar uma mensagem sobre o tópico de teste.
mosquitto_pub -d -t testTopic -m “Bem-vindo ao protocolo MQTT!”

Se o Mosquitto Broker for instalado com sucesso, você poderá perceber que ele está recebendo a mensagem publicada, conforme imagem abaixo.

Publicando mensagens para clientes MQTT no Raspberry Pi

Como também instalamos o cliente Mosquitto no Raspberry Pi, podemos receber uma mensagem publicada tanto na corretora quanto no cliente MQTT. Abra mais uma janela do Terminal e execute um cliente Mosquitto executando o seguinte comando nessa janela.
mosquitto_sub -d -t testTopic

Agora, novamente, publique uma nova mensagem executando o seguinte comando na segunda janela do Terminal.
mosquitto_pub -d -t testTopic -m “outra mensagem”

Você pode ver que tanto a corretora quanto o cliente através da corretora recebem a mensagem, conforme mostra a imagem abaixo.

Cliente MQTT recebendo mensagens no Raspberry Pi

Conclusão
O broker MQTT atua como um servidor no sistema de publicação-assinatura MQTT e é responsável pela comunicação de mensagens entre os clientes MQTT. É bastante conveniente usar Raspberry Pi como corretor MQTT em sistemas IoT de pequena escala, como automação residencial, automação de escritório ou automação industrial. Os corretores MQTT como o Mosquitto podem ser facilmente instalados e configurados no Raspberry Pi. O Raspberry Pi pode ficar ligado indefinidamente, para que os clientes MQTT conectados por meio dele possam se comunicar a qualquer momento. Como também podemos instalar o cliente Mosquitto no Raspberry Pi junto com o Mosquitto Broker, testar o corretor é muito simples e não requer outros dispositivos como ESP8266, ESP32 ou Arduino para se conectar como cliente MQTT.

Conteúdo Relacionado

ESP32-CAM é um módulo de câmera compacto que combina...
Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
O impacto dos enrolamentos da armadura CC no desempenho...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Вернуться к блогу

Комментировать

Обратите внимание, что комментарии проходят одобрение перед публикацией.