Hoje em dia, o MQTT é um dos protocolos mais utilizados para implementações IoT (Internet of Things/Internet das Coisas). Utiliza um modelo leve de publicação/assinatura de mensagens, o que é ideal para a conectividade máquina-máquina (M2M), especialmente em condições de baixa largura de banda da rede e/ou capacidade de recursos limitada. Aqui, a base de qualquer infraestrutura do MQTT é representada com um intermediário/corretor/agente central de mensagens (servidor), destinado a gerenciar o intercâmbio de notificações e conectado a instâncias (clientes).
Neste artigo, consideramos o pacote de instalação de um clique Eclipse Mosquitto da Jelastic, que permite configurar esse agente MQTT em apenas um minuto. Projetado para lidar com uma grande quantidade de clientes simultâneos com uso mínimo de RAM, esta solução é igualmente adequada para administração de máquinas de potência total e sensores simples ou atuadores. Então, vamos investigar como obter rapidamente seu corretor de mensagens pessoal Mosquitto dentro de uma Nuvem e assumir o controle total de todos os dispositivos em sua rede IoT com sua ajuda.
Especificidades do Pacote Eclipse Mosquitto
O pacote Eclipse Mosquitto destina-se a configurar um corretor de mensagens Mosquitto MQTT pronto para o trabalho com um clique.
Após sua instalação, um ambiente com os seguintes detalhes de topologia é criado:
- Contém um único container Docker com imagem de eclipse-mosquitto implantada (tag mais recente)
- O limite padrão de dimensionamento de recursos para o contêiner Eclipse Mosquitto está configurado para 8 cloudlets dinâmicos, permitindo usar até 1 GiB de RAM e 3,2 GHz de CPU (esses limites podem ser ajustados manualmente a qualquer momento através do assistente de topologia de ambiente, se necessário)
- Um endpoint dedicado é automaticamente anexado a um node corretor, permitindo acessá-lo de qualquer lugar pela Internet (no entanto, para uso em produção, recomendamos atribuir o endereço IP público a esta instância após a instalação)
Como Funciona a Interação do Dispositivo através do Protocolo MQTT
Os princípios do protocolo MQTT são de certo modo semelhantes ao modelo cliente-servidor, uma vez que ele está operando com um único corretor central e vários clientes, conectados a ele. Aqui, toda a interação é realizada através da mensagem de inscrição/publicação. Isso permite manter os publicadores e assinantes (ou seja, clientes) desconhecidos uns dos outros, já que nunca estão conectados diretamente – apenas através do servidor MQTT.
A abordagem geral é bastante simples – qualquer cliente MQTT permite ao usuário se inscrever em um tópico e/ou publicar sobre ele. Aqui, cada nova mensagem de tópico passa por um corretor para ser retransmitido somente para os clientes que estão inscritos nesse tópico específico. Desta forma, o intercâmbio interno de mensagens entre dispositivos conectados é executado de forma implícita, enquanto você obtém todas as informações essenciais sobre a execução das operações prescritas e o estado do dispositivo quase que instantaneamente, obtendo o controle total sobre sua rede IoT
Como Implantar o Servidor do Eclipse Mosquitto MQTT para a Nuvem
Com a solução Eclipse Mosquitto pré-empacotada da Jelastic, todas as ações necessárias na configuração do servidor e a instalação apropriada do software são realizadas pelo sistema automaticamente. A única coisa que você precisa fazer é iniciar a implantação do pacote correspondente – vamos considerar isso em mais detalhes.
1- Faça login na sua conta Jelastic e proceda com um dos seguintes fluxos:
- Encontre o pacote Eclipse Mosquitto no Jelastic Marketplace e clique em Install
- Ou, importe o link manifest.jps do repositório apropriado: https://github.com/jelastic-jps/mosquitto/blob/master/manifest.jps
Clique em Importar para continuar.
2 – Dentro do quadro aberto, personalize os parâmetros do ambiente dedicado do Eclipse Mosquitto que seria criado após esta instalação da solução.
Aqui, os campos devem ser preenchidos da seguinte forma:
- Ambiente – configure o nome para o seu ambiente
- Nome de exibição – forneça um alias de ambiente, se necessário (opcional)
- Região – selecione a região de hardware preferencial da lista (se houver várias disponíveis)
Clique em Instalar e aguarde até que o Jelastic configure tudo para você.
3 – Em um minuto, você verá um quadro pop-up informando sobre a instalação bem sucedida do pacote.
É isso aí! Seu corretor Eclipse Mosquitto está pronto para funcionar agora. Posteriormente, o nome de domínio fornecido e a porta necessária podem ser usados para conectar clientes a este servidor MQTT.
Operando Dispositivos IoT com Corretor Mosquitto
Agora, vamos considerar um exemplo simples de mensagens MQTT através do servidor Eclipse Mosquitto. Para seguir o tutorial abaixo, você precisará de vários clientes MQTT (ou seja, dispositivos para constituir sua rede IoT – criamos um conjunto de containers dentro de um ambiente separado para esse fim) com o pacote mosquitto-clients sendo instalado em cada um deles (é necessário permitir a execução dos comandos de subscrição e publicação).
Sendo verdadeiramente universal, o protocolo MQTT permite configurar o monitoramento e a automação para quase qualquer dispositivo – por exemplo, você gostaria de comer algumas torradas quentes depois de um árduo dia de trabalho no escritório? Não há problema, tudo o que você precisa fazer é interligar os dispositivos apropriados (usaremos aliases para designar containers usados como Car/Carro, Toaster/Tostadeira e Mobile phone/Telefone celular):
O cenário que implementaremos é tão simples quanto útil, visando lhe salvar das ações rotineiras redundantes. Apenas três operações em uma cadeia:
- Car envia uma notificação quando você chega em casa
- Toaster reage a isso preparando torradas
- Mobile phone sinaliza quando a comida está pronta
Então, vejamos como realizar tal interação do dispositivo.
1 – Começaremos com a instância Mobile phone. Este está interessado apenas em um status da Toaster, então você só precisa se inscrever no tópico apropriado – para isso, execute o seguinte comando quando estiver conectado ao contêiner apropriado via SSH Gate:
mosquitto_sub -t {topic} -h {host} -p {port}
onde:
- {tópico} – nome do tópico para se inscrever na instância atual (por exemplo, demo/toast-status)
- {host} – endereço de domínio do ambiente Eclipse Mosquitto
- {port} – porta pública do seu endpoint (pode ser encontrada na seção Configurações do ambiente > Endpoints) para conexão de fora da plataforma Jelastic
Dica: Se estiver trabalhando dentro da rede interna da Plataforma, o valor da porta pode ser ignorado – o 1883 será usado por padrão.
2 – Para automatizar a execução das tarefas no componente Toaster, os seguintes scripts bash simples serão usados:
- script – rastreia mensagens no tópico demo/car-location para executar o segundo script
while read msg;dobash $msg;done < <(mosquitto_sub -t demo/car-location -h {host} -p {port})
- home – executa comandos personalizados que você define dentro dele (para este exemplo, apenas dormimos a torradeira por vários segundos para imitar o funcionamento de alguma operação) e publica uma mensagem para o tópico demo/toast-status
echo “Preparing toasts…”sleep 10secho “Done!”mosquitto_pub -t demo/toast-status -m “Toasts are ready!” -h {host} -p {port}
Agora, execute o script principal (primeiro) com o comando bash script:
3 – Tudo está configurado agora. Então, vamos publicar uma mensagem no “canal” node Car e ver o que acontecerá:
mosquitto_pub -t demo/car-location -m “home” -h {host} -p {port}
- Car – message is sent
- Toaster – a notificação da instância Car desencadeia a execução dos scripts personalizados apropriados; como resultado, outra mensagem é enviada para o Mobile Phone
- Mobile phone – mensagem de status da torrada é recebida com sucesso, iniciando o alarme apropriado
Ótimo! Tudo funciona bem e você pode desfrutar das torradas quentes que acabaram de ficar prontas logo após a sua chegada.
Embora esse seja apenas o exemplo mais simples da implementação da rede IoT através do corretor de mensagens do Eclipse Mosquitto, é bastante demonstrativo sobre os recursos e benefícios que esta ferramenta oferece. Use-a como base para construir suas próprias e mais complexas soluções IoT dentro da Jelastic Cloud agora mesmo!
***
Tetiana Markova faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://blog.jelastic.com/2017/09/20/eclipse-mosquitto-mqtt-for-iot-networks-in-the-cloud/