IoT Worlds
MQTT
BlogDispositivo inteligente

O significado do MQTT para conectar dispositivos IoT com aplicativos da Web

Com todos os protocolos de mensagens disponíveis, pode ser difícil escolher apenas um. E com tantas opções por aí, é muito fácil se encontrar em uma situação em que você tenta uma que não funciona para você ou sua equipe. O Mqtt é um protocolo leve que requer apenas clientes e corretores, por isso é perfeito para situações em que você não deseja problemas. Este artigo explorará do que esse protocolo é capaz e como ele alcança essas coisas!

O que é MQTT?

Mqtt é um protocolo de mensagens leve que requer apenas clientes e intermediários. É perfeito para situações em que você não quer nenhum aborrecimento ou confusão, porque exige muito pouco de você.

O que é um protocolo de mensagens?

Um protocolo de mensagens é um conjunto de regras usadas para permitir que aplicativos em diferentes máquinas se comuniquem. O Mqtt foi projetado especificamente para a Internet das Coisas (IoT). Com uma gama tão ampla de outros protocolos disponíveis, pode parecer estranho criar outro para essa finalidade. Mas, como muitos dispositivos e serviços dependem desse campo, provavelmente veremos mais e mais deles ao longo do tempo!

O que há de tão bom no MQTT?

O Mqtt é verdadeiramente único, porque oferece muito com quase nada. Você não precisa de um servidor ou encaminhador dedicado como muitos outros protocolos, o que significa que também não há problemas de infraestrutura. Tudo o que você precisa é de um corretor já existente e qualquer hardware com conexão à Internet. Graças à qualidade do seu trabalho e à sua leveza, este protocolo tem vindo a tornar-se cada vez mais popular. Por ser de código aberto e de uso gratuito, você pode começar facilmente sem ter que pagar taxas ou custos de assinatura. E com o suporte a corretores embutido na biblioteca MQTT para Arduino, estamos animados para ver quais grandes produtos virão em nosso caminho.

Quais são os recursos do MQTT?

O Mqtt é um dos melhores exemplos de um protocolo de mensagens simples e leve que você encontrará. Seu principal ponto de venda é a facilidade de uso – qualquer dispositivo com conexão à Internet pode aproveitar o que esse protocolo tem a oferecer. Mas há mais do que apenas facilidade de uso para este protocolo. Vamos explorar o que mais você pode esperar dele!

Exemplos de uso do MQTT

uma. Dispositivos IoT em uma fábrica controlando bombas e válvulas

b. Uma estação meteorológica com um sensor que reporta a um banco de dados na nuvem

c. Um sistema de alarme que informa quando as portas abrem ou fecham

d. Algumas luzes em um escritório acendendo quando o movimento é detectado

1. O que é MQTT e quais são suas características?

MQTT significa Transporte de Telemetria de Enfileiramento de Mensagens, o que pode parecer complicado, mas significa simplesmente que é uma maneira de os dispositivos IoT se comunicarem entre si usando a Internet. Ele roda em cima de TCP/IP como HTTP, SMTP etc., mas diferentemente do HTTP que é para comunicação pela internet, o MQTT é usado com dispositivos que estão conectados uns aos outros com uma rede, geralmente uma rede IP. É mais comumente usado em IoT com dispositivos embarcados de baixa potência que se conectam a coisas como Raspberry Pi ou placas Arduino.

2. Como funciona?

Funciona como um e-mail. Um dispositivo IoT publica uma mensagem em um tópico. É como enviar um e-mail para alguém, mas em vez de uma pessoa é um nome de tópico. A mensagem pode conter até 2kb de dados e é enviada como um pacote.

Um segundo assinante MQTT atende pacotes com seu próprio ID exclusivo ou ID do cliente. Ele então faz algo com a mensagem. É como quando alguém recebe um e-mail, faz algo com ele; lê-lo, enviá-lo para outro lugar etc.

O MQTT tem um nível de Qualidade de Serviço (QoS), o que significa que pode haver diferentes níveis de prioridade para mensagens. O nível de QoS é definido pelo cliente e cada pacote enviado tem esse nível de prioridade.

3. Benefícios do MQTT

É leve, roda em TCP/IP, menos sobrecarga que HTTP

As mensagens são armazenadas em uma fila até que possam ser enviadas ao dispositivo de destino

Possui suporte de reconexão integrado

Cada cliente pode ter sua própria configuração de segurança para autenticação e criptografia

QoS permite que os diferentes tipos de mensagens tenham diferentes níveis de prioridade

4. Aplicações do MQTT

Alguns exemplos de como está sendo usado no mundo real é com a M2M Alliance, um projeto que visa conectar “coisas” com uma plataforma segura para transferência de dados entre dispositivos. Outro caso de uso é com o projeto CEPH. Este é um sistema de armazenamento em nuvem que pode armazenar e compartilhar arquivos simultaneamente para vários usuários. Ele usa o MQTT para proteger o acesso distribuído criptografando os dados, o que permite que eles sejam transferidos entre dispositivos IoT usando vários gateways sem ter que se preocupar com a segurança dos dados.

5. Introdução ao MQTT

A primeira coisa que se precisa é de um cliente MQTT; este é o aplicativo que envia e recebe mensagens. A fundação Raspberry Pi tem um guia para começar a usar o MQTT no seu dispositivo Pi. Existem também outros guias disponíveis, como este do Hackster, que fornece o código para executar na linguagem de programação Python.

Os melhores cursos online de MQTT

  1. Dominando o MQTT
  2. Protocolo MQTT mestre
  3. Desenvolva o aplicativo Android do cliente MQTT
  4. Masterclass de MQTT
  5. Dominando o protocolo MQTT: um guia do nível iniciante ao avançado
  6. IoT: MQTT com Adafruit, App Inventor e ESP8266
  7. MQTT Nodemcu (ESP8266) com Nodered, Wifi e Bluetooth

TLS vs. SSL para construir um MQTT Broker

Prós de usar TLS:

-Segurança: TLS fornece uma conexão segura entre o cliente e o broker. Isso ajuda a proteger contra ataques man-in-the-middle e espionagem.

-Autenticação: TLS fornece autenticação do broker e do cliente, ajudando a garantir que apenas clientes autorizados possam se conectar ao broker.

-Criptografia: TLS fornece criptografia de dados entre o cliente e o corretor, ajudando a proteger as informações de serem vistas por indivíduos não autorizados.

Contras de usar TLS:

-Desempenho: o TLS pode adicionar sobrecarga às comunicações, o que pode reduzir o desempenho.

-Certificados: Para usar o TLS, você precisa de certificados para o cliente e o corretor. Esses certificados podem ser difíceis de obter e caros de usar, o que pode aumentar o custo do uso do TLS.

Prós de usar SSL:

-Segurança: SSL fornece uma conexão segura entre o cliente e o corretor, assim como o TLS. Também ajuda a proteger contra ataques man-in-the-middle e espionagem.

-Certificados: Como o SSL é construído sobre o TLS, você pode usar os mesmos certificados para criptografar o tráfego.

Contras de usar SSL:

-Desempenho: A criptografia entre o cliente e o corretor adicionará sobrecarga às comunicações, o que reduz o desempenho.

-Uso de memória: O protocolo SSL usará mais memória do que outros protocolos porque mantém uma sessão de criptografia/descriptografia com o broker.

– Problemas de versão: SSL é um protocolo mais antigo e não oferece suporte a alguns dos recursos que o TLS oferece (por exemplo, cifras mais recentes).

Como você pode ver, TLS e SSL fornecem segurança, autenticação e criptografia para comunicação entre clientes e corretores; no entanto, eles fazem isso de maneiras ligeiramente diferentes. Não há um vencedor claro quando se trata de decidir se você deve usar TLS ou SSL para seu MQTT Broker, pois a decisão dependerá do que você precisa de sua infraestrutura e quanto tempo/dinheiro você tem disponível para gastar.

Para concluir, diria que existe uma resposta certa dependendo das necessidades do projeto. Nesse caso, é melhor usar o TLS, pois oferece mais vantagens do que o SSL.

Os 5 principais motivos para usar o protocolo MQTT em seus projetos de IoT

O MQTT é um protocolo de mensagens máquina a máquina (M2M), projetado para dispositivos com recursos limitados, que conecta os dispositivos à nuvem.

1. É leve e fácil de usar: MQTT é um protocolo de mensagens de publicação/assinatura projetado para ser leve e fácil de usar.

2. Tem uma pegada pequena: o MQTT usa cerca de 1/10 da largura de banda do HTTP, tornando-o ideal para aplicativos de IoT com recursos de rede limitados.

3. Suporta QoS: MQTT suporta Qualidade de Serviço (QoS), que garante a entrega de mensagens na latência ou qualidade desejada.

4. Pode ser executado em qualquer rede: MQTT é um protocolo multiplataforma que pode ser executado em redes celulares WiFi, Bluetooth Low Energy (BLE) ou 2G/3G.

5. Possui várias bibliotecas de clientes disponíveis em várias linguagens de programação: Existem bibliotecas de clientes para C, C++, JavaScript, Arduino IDE, Python e Java.

Como configurar um MQTT Broker usando um Docker Container em seu PC ou um servidor VPS?

O MQTT é um protocolo de mensagens máquina a máquina (M2M)/”IoT”, projetado como um transporte de mensagens de publicação/assinatura extremamente leve. É útil para conexões com locais remotos onde é necessário um pequeno espaço de código e/ou a largura de banda da rede é um prêmio.

Neste artigo, mostraremos como configurar um broker MQTT usando um contêiner Docker em seu PC ou servidor VPS.

O Docker é um mecanismo de conteinerização que ajuda você a implantar facilmente seus aplicativos com todas as suas dependências. Ele fornece um ambiente consistente em cada host Docker, permite economizar tempo e aprimorar a portabilidade de seu código entre várias distribuições Linux. Por exemplo, se qualquer aplicativo que depende de um grande número de bibliotecas do sistema ou algumas versões raras de biblioteca e, portanto, não é facilmente portátil, você pode simplesmente empacotar tudo e implantar como um contêiner do Docker.

1) Instalando o Docker para Windows/Mac

O Docker está disponível para usuários do Microsoft Windows e Mac OS X. Você pode baixar a versão apropriada aqui: https://docs.docker.com/docker-for-windows/install/.

2) Instalando o Docker-compose em seu host

Para implantar facilmente nosso broker MQTT caseiro, usaremos a ferramenta docker-compose. Ele permite definir e executar aplicativos Docker de vários contêineres usando um arquivo YAML simples. Você pode aprender mais sobre o docker-compose aqui: https://docs.docker.com/compose/.

Você pode baixar a ferramenta docker-compose aqui: https://github.com/docker/compose/releases/. Feito isso, você poderá executar o comando ‘docker-compose’ em seu terminal e verificar sua versão ou usar qualquer um de seus subcomandos.

Terminologia básica do Docker para este artigo:

1) “Contêiner do Docker” é o processo que é executado em segundo plano quando você executa uma imagem usando o comando docker run. Uma instância em execução de uma imagem é chamada de ‘containter’, com relação à sua criação na compilação do docker.

2) “Imagem do Docker” é um modelo somente leitura com instruções para criar um contêiner docker. É composto por uma série de camadas do sistema de arquivos representando diferentes estados da imagem final que queremos criar

3) O comando copy at docker build cria uma imagem lendo sua descrição de um Dockerfile no diretório de trabalho atual e, em seguida, executando o comando apropriado em uma nova camada sobre a imagem atual.

4) “Volumes” são pastas que permitem mapear pastas locais em sua máquina host para diretórios dentro de seus contêineres docker. Isso é útil se, por exemplo, você deseja armazenar alguns dados sobre seu contêiner ou arquivos de configuração. Você pode criar um volume especificando o caminho da pasta do seu sistema host usando o docker run.

O arquivo YAML é um arquivo de configuração que contém informações para conexão com um banco de dados externo, servidor MQTT etc., além de informações sobre como e quais contêineres devem ser criados. Vamos criar um arquivo YAML para configurar nosso broker na próxima seção.

3) Criando o arquivo YAML para configurar seu MQTT Broker

Os arquivos YAML geralmente são compostos de vários pares de valores-chave, que são conectados por dois pontos (“:”). Você pode aprender mais sobre YAML aqui: https://en.wikipedia.org/wiki/YAML#Syntax.

No nosso caso, criaremos um arquivo YAML para configurar o broker MQTT da seguinte forma:

versão: “3”

Nesta seção do YAML, definimos o nome do container como “homer-mqtt” e especificamos a imagem que deve ser usada para criá-lo. Nesse caso, escolheremos a imagem “davidtgoldblatt/homer-mqtt” do Docker Hub daqui: https://hub.docker.com/_/homer-mqtt/.

Em nosso arquivo YAML, também declaramos alguns volumes da seguinte forma:

volumes:

– /var/run/docker.sock:/var/run/docker.sock

Esses volumes nos permitirão ter armazenamento persistente para o contêiner docker, permitindo que nossas configurações persistam por meio de reinicializações e falhas do servidor. Você pode aprender mais sobre volumes aqui: https://docs.docker.com/engine/userguide/dockervolumes/.

Para especificar os detalhes do nosso banco de dados, adicionamos uma seção “db_addresses” com as seguintes entradas:

db_addresses:

– “host=172.17.0.2 porta=3306 usuário=homer dbname=homer”

No exemplo acima, especificamos um host e uma porta para nossa instância de banco de dados. Observe que ao especificar um usuário, você deve adicionar um símbolo “@” antes do nome do usuário. Isso ocorre porque o nome de usuário consiste em letras e números em sistemas Unix. Se você omitir isso, o Docker reclamará com erros como este:

você tem que escapar caracteres especiais como @ ou *

Para especificar nossas credenciais de banco de dados, adicionamos uma seção “database_password” da seguinte forma:

database_password: “homerun1”

No exemplo acima, você deve usar a senha de sua escolha. Caso você queira configurar uma senha de banco de dados pela primeira vez, você pode ver nosso guia sobre como criar um novo usuário root sem senha aqui: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user .html

Para especificar os detalhes do nosso servidor MQTT, adicionamos uma seção “mqtt_server” com as seguintes entradas:

mqtt_server:

– nome: mqtt host: 172.17.0.1 porta: 8883 nome de usuário: “homerun” senha: “homerun1”

No exemplo acima, executamos o broker na porta 8883 e usamos o nome de usuário “homerun” e a senha “homerun1”, que criamos em nosso banco de dados.

4) Execute seu corretor MQTT com o Docker

Nesta etapa, criaremos um contêiner docker do nosso arquivo YAML e o executaremos.

Para fazer isso, vá para o diretório onde você tem o arquivo YAML e execute “docker-compose up” da seguinte forma:

$ docker-compose up

Este comando criará um novo contêiner docker com base na descrição em seu arquivo YAML e o iniciará.

Se você quiser iniciar isso em segundo plano, use “docker-compose up -d”. Se você quiser imprimir os logs do seu contêiner docker, execute “docker-compose logs mqttclient” da seguinte forma:

$ docker-compose logs mqttclient

Você também pode ver o contêiner docker ao vivo em tempo real usando “docker-compose ps” da seguinte forma:

$ docker-compose ps

5) Executando seu cliente MQTT com o Docker

Nesta etapa, criaremos um contêiner docker do nosso arquivo YAML e o executaremos.

Para fazer isso, vá para o diretório onde você tem o arquivo YAML e execute “docker-compose up” da seguinte forma:

$ docker-compose up

Este comando criará um novo contêiner docker com base na descrição em seu arquivo YAML e o iniciará.

Se você quiser iniciar isso em segundo plano, use “docker-compose up -d”. Você também pode ver o contêiner docker ao vivo em tempo real usando “docker-compose ps” da seguinte forma:

$ docker-compose ps

6) Usando seu cliente MQTT com o Docker

Agora que nosso arquivo YAML está configurado, podemos começar a usar nosso cliente MQTT com o Docker.

Para fazer isso, vá para o diretório onde você tem seu arquivo YAML e execute “docker exec” da seguinte forma:

$ docker exec -it mqttclient /bin/bash

Agora você deve ver um diretório chamado “/home/homerun” (que é o diretório inicial do nosso contêiner docker) e você deve estar dentro desse diretório.

Agora você pode ver seus bancos de dados digitando “mysql -uroot -proot” da seguinte forma:

$ mysql -uroot -proot

Você deve ver todos os seus bancos de dados na tela. Você pode ver como criar um novo usuário root sem senha para a instância MySQL aqui: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user.html

Para executar o comando do cliente MQTT no Docker, você precisa digitar “sbin/mqtt” da seguinte forma:

$ sbin/mqtt -c /home/homerun/config.yaml

No exemplo acima, especificamos um arquivo de configuração com o sinalizador -c, que lê nossas configurações de MQTT do arquivo de configuração que criamos neste tutorial.

Para verificar se seu cliente MQTT está funcionando, você pode usar “docker-compose ps” da seguinte forma:

$ docker-compose ps

No exemplo acima, nosso cliente MQTT foi iniciado com sucesso. Agora você deve ver todos os seus bancos de dados na tela.

Para executar o comando do cliente MQTT no Docker, você precisa digitar “sbin/mqtt” da seguinte forma:

$ sbin/mqtt -c /home/homerun/config.yaml

No exemplo acima, especificamos um arquivo de configuração com o sinalizador -c, que lê nossas configurações de MQTT do arquivo de configuração que criamos neste tutorial.

Para verificar se seu cliente MQTT está funcionando, você pode usar “docker-compose ps” da seguinte forma:

$ docker-compose ps

No exemplo acima, nosso cliente MQTT foi iniciado com sucesso. Agora você deve ver todos os seus bancos de dados na tela e pode tentar publicar algumas mensagens para testar se tudo está funcionando bem:

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt publish -t ‘teste’ -h 172.17.0.1 -m ‘olá mundo!’

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt subscribe -t ‘test’ -h 172.17.0.1 -u mqttuser

7) Limpando seu cliente MQTT com o Docker

Para parar seu contêiner docker, você precisa executar “docker-compose down” da seguinte forma:

$ docker-compose down

8) Limpando seu cliente MQTT com Docker Volumes

Para impedir que seu banco de dados mysql e usuário mqtt sejam criados, você pode usar o sinalizador -v.

$ docker-compose down -v

Você também pode limpar seu ambiente excluindo o diretório que contém seu arquivo YAML.

Banco de dados MySQL e usuário mqtt criados com sucesso! Eles serão removidos automaticamente quando você remover o contêiner docker. Agora você pode sair deste shell digitando “exit”.

Neste tutorial, vimos como configurar seu cliente MQTT por meio de um contêiner do Docker.

Conclusão

O MQTT é um protocolo de conectividade máquina a máquina (M2M) ou “Internet das Coisas”. Ele foi projetado como um transporte de mensagens de publicação/assinatura extremamente leve. O MQTT é útil para conectar sensores de baixo consumo, wearables e outras coisas minúsculas conectadas à Internet à nuvem. Como o MQTT usa um modelo de publicação/assinatura, é perfeito para dispositivos que precisam enviar dados com pouca frequência ou onde a largura de banda da rede é premium.

Interessado em desenvolver sua solução MQTT? Contate-Nos!

Related Articles

WP Radio
WP Radio
OFFLINE LIVE