Skip to content

well1ngt0nso/MQTT_MOSQUITTO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

🚧 MQTT_MOSQUITTO 🚧

Então, pessoal, o principal objetivo do repositório é descomplicar a utilização do protocolo MQTT, mostrar as etapas de instalação/configuração, como enviar e receber valores, além de dicas e soluções de possíveis problemas, irei estar utilizando o Broker MOSQUITTO para gerenciamento, mas nada impede de ser outro, porém recomendo iniciar por ele

Badge em Desenvolvimento Badge em Desenvolvimento Badge em Desenvolvimento

O que veremos:

  • O que é o protocolo MQTT:
  • O QUE É UM BROKER:
  • Como instalar e configurar o Mosquitto
  • Como utilizar, efetuando Publish e Subscribe
  • Solução para alguns problemas

O QUE É O PROTOCOLO MQTT?

É uma forma de comunicação entre duas ou mais partes que reune todo um conjunto características, definições ou regras para que a comunicação seja bem efetuada. Em outras palavras o protocolo MQTT é como se fosse um idioma que permite a comunucação entre sistemas. Temos diferentes protocolos existentes, alguns que demandam uma comunicação física (i2C) outros apenas a conexão wirelles (http), o protocolo MQTT se encaixa nesse último. Pensado em termos de diferenciação podemos destinguir os mesmos como diferentes idiomas, cada qual com sua especificidade. Optei iniciar pelo MQTT por sua simples manipulação e por já está a muito temppo no mercado.

O QUE É UM BROKER?

O broker nada mais é que o intermediário, quem faz o gerenciamento da comunicação entre ambas as partes. Esse sistema pode estar instalado em um servidor ou em uma máquina local, no nosso caso estaremos instalando no PC (nosso servidor temporário) e por meio dele vamos estabelecer a comunicar entre Esp32, Esp8266, Arduino, Telefone, PC, TV....

Descrição da imagem

A imagem acima estabelece diretamente como é feita a comunicação, temos um Broker (Intermediário) e os clientes que podem publicar ou receber algo.. O protocolo MQTT funciona por meio de tópicos, assim conseguimos diferenciar a natureza dos valores além de criar ramificações(veremos isso)

Entendendo os tópicos: Quando trabalhamos com MQTT estamos trabalhando com envio e recebimento de dados, mas como eu diferencio os dados que envio? Por exemplo, suponha que eu tenha um sistema que me envie a temperatura de dois quartos A e B, nos dois quartos temos dispositivos que estabelecem comunicação com meu Broker, um desses quartos envia a temperatura, como diferencio? Utilizamos tópicos! Entenda tópico como o local onde o dado foi publicado, o nome é da escolha do desenvolvedor, basta acrescentar a barra "/" (/quartoA e /quartoB), ou seja, quando recebo um dado eu sei de qual tópico ele veio. O ato de publicar em um tópico também é muito conhecido no termo em inglês "PUBLISH".

Agora temos outro problema: Quando eu envio um dado para o Broker todos os clientes conectados recebem? Se eu conectar meu telefone em um Broker de 1000 tópicos, eu automaticamente recebo os dados dos 1000 tópicos? Não, o cliente recebe apenas as mensagens dos tópicos que quer monitorar, o cliente increve-se nos tópicos... também muito conhecido no inglês pelo termo "SUBSCRIBE"

Processo de inscrição em um tópico:

  • O cliente envia uma mensagem SUBSCRIBE para o broker, especificando o tópico em que deseja se inscrever.
  • O broker armazena a inscrição do cliente e associa-a ao tópico.
  • O broker começa a enviar todas as mensagens publicadas no tópico para o cliente.

Comportamento do broker após a inscrição:

  • O broker monitora continuamente novas mensagens publicadas nos tópicos.
  • Quando uma nova mensagem é publicada em um tópico, o broker verifica se há clientes inscritos nesse tópico.
  • Se houver clientes inscritos, o broker envia a mensagem para cada um desses clientes

Instalação

  1. Baixe o Mosquitto MQTT:

    • Acesse o site oficial do Mosquitto e faça o download do instalador para o seu sistema operacional.
  2. Acesse a pasta do Mosquitto:

    • Navegue até a pasta onde o Mosquitto foi instalado (ex_windows: C:\Program Files\mosquitto).

Configuração do arquivo mosquitto.conf

  1. Abra o arquivo mosquitto.conf:

    • Este é um arquivo de texto que contém várias configurações comentadas.
  2. Entenda as configurações:

    • Para ativar uma configuração, remova o # do início da linha.
    • Exemplo:
      • Para habilitar o listener na porta 1883, altere:

        #listener 1883
        

        para

        listener 1883
        
  3. Execução sem modificações:

    • O Mosquitto pode ser executado sem alterações no arquivo de configuração, mas apenas em localhost (127.0.0.1).

Habilitando Autenticação

  1. Conexão inicial:

    • Você pode se conectar ao Mosquitto sem senha, por exemplo, usando um ESP8266.
  2. Habilite a autenticação:

    • Descomente as seguintes linhas no mosquitto.conf:
      #anonymous true
      #password_file /path/to/passwordfile
      
    • Altere para:
      anonymous false
      password_file caminho/do/arquivo/de/senha
      

Observações Importantes

  • Apenas as linhas que têm espaço antes do # são configurações válidas para serem alteradas.
  • Por exemplo, o caso 1 pode ser modificado
     # list (caso 1)
     #list (caso 2)
    

Verificando o Funcionamento do Mosquitto

Usando MQTT Explorer

  1. Baixe e Instale:

    • Uma das maneiras mais simples de verificar a conexão MQTT é usar uma interface gráfica. Recomendo o MQTT Explorer.
  2. Assine um Tópico:

    • Após abrir o MQTT Explorer, inscreva-se em um tópico de sua escolha, por exemplo, \teste.
  3. Publique uma Mensagem:

    • Utilize outra interface (como o CMD) ou um cliente MQTT separado para publicar uma mensagem no mesmo tópico (\teste).

    Observação: Se ambas as interfaces estiverem rodando no mesmo dispositivo e você conseguir enviar e receber mensagens, a configuração local do broker está funcionando corretamente.

  4. Teste com Outro Dispositivo:

    • Para uma validação mais robusta, tente conectar a partir de outro dispositivo externo a rede (telefone por exmeplo tem apps). Se funcionar, ótimo! Se não, o broker pode estar configurado para escutar apenas localhost (127.0.0.1).

Ajustando Configurações do Broker

Se você precisar que o Mosquitto aceite conexões de outros dispositivos, siga estas etapas:

  1. Localize o Arquivo de Configuração:

    • Vá até a pasta onde o Mosquitto está instalado, tipicamente em C:\Program Files\mosquitto\ e abra o arquivo mosquitto.conf.
  2. Modifique o Arquivo de Configuração:

    • Encontre e ajuste as seguintes linhas:

      bind_address 127.0.0.1  # Remova ou comente esta linha para permitir conexões externas
      listener 1883 #Porta onde o broler está ouvind
      allow_anonymous false  # Para permitir conexões anônimas (sem credenciais), mude para true
      password_file C:\Program Files\mosquitto\pwfile.example  # Este arquivo é para autenticação
      
  3. Reinicie o Mosquitto:

    • Para aplicar as mudanças, você precisará salvar as mudanças e reiniciar o serviço do Mosquitto. Faça isso através do Painel de Serviços do Windows:

      >> Serviços >> Mosquitto >> Parar >> Iniciar
      
  4. Verifique o Firewall:

    • Se você ainda tiver problemas de conexão fora da rede local, pode ser que o firewall esteja bloqueando a porta 1883. Verifique as configurações do firewall para garantir que ele permita conexões na porta MQTT (Falo mais embaixo).

Usando o CMD para Testes

  1. Publicar uma Mensagem: Uma alternativa para softwares externos é rodar clientes em abas do cmd...

    • Navegue até a pasta onde o Mosquitto está instalado e use o seguinte comando para publicar uma mensagem:

      mosquitto_pub -h 127.0.0.1 -t "seu/topico" -m "Sua mensagem aqui"
  2. Inscrever-se em um Tópico:

    • Da mesma forma, você pode se inscrever em um tópico com o comando:

      mosquitto_sub -h 127.0.0.1 -t "seu/topico"

⚠️Obs: Abas diferentes do CMD

Configurando o Firewall

OSS: Caso a comunicação esteja funcionando apenas localmente libere a conexão nessa porta nas configurações do Firewall

  1. Acesse o Firewall do Windows:

    • Abra o menu Iniciar e digite wf.msc para abrir o Gerenciador de Firewall do Windows.
  2. Criar nova regra:

    • Clique em "Regras de Entrada" (canto superior esquerdo) e depois em "Nova Regra" (canto superior direito).
  3. Configuração da porta:

    • Selecione "Porta", clique em "Avançar", selecione "TCP" e insira "1883" no campo de porta.
    • Clique em "Avançar" até concluir, nomeando a regra como "mqtt".

OUTRA FORMA DE VER A COMUNICAÇÃO DO BROKER:

Digite no CMD:

    netstat -ano | findstr :1883
  TCP    0.0.0.0:1883           0.0.0.0:0              LISTENING       3752
  TCP    192.168.1.2:1883       192.168.1.2:61095      ESTABLISHED     3752
  TCP    192.168.1.2:1883       192.168.1.6:40668      ESTABLISHED     3752
  TCP    192.168.1.2:61095      192.168.1.2:1883       ESTABLISHED     24396
  TCP    [::]:1883              [::]:0                 LISTENING       3752

Basicamente está informando que a porta está liberada para qualquer conexão e que está ouvindo, além de mostratar algumas interações....

Vamos entender melhor:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published