MQTT Parte 2: Enviando e recebendo mensagens

Na primeira parte sobre o protocolo MQTT (Message Queue Telemetry Transport) demos uma breve introdução ao assunto, explicando o seu funcionamento, brokers e clients.

Hoje o artigo é mais prático que teórico. Inicialmente vamos instalar/configurar o broker e após vamos criar em cliente MQTT que irá ser conectar ao broker para enviar ou receber mensagens.

Como broker iremos utilizar o Mosquitto. Esta escolha foi feita pela sua simplicidade e facilidade de instalação. Confira a página de download para saber como instalar em seu sistema operacional.

As configurações padrão do Mosquitto devem atender a nossa aplicação, mas caso você deseje alterar alguma, o arquivo de configuração na maioria das distribuições irá estar no caminho /etc/mosquitto/mosquitto.conf, e no caminho /etc/mosquitto/mosquitto.conf.example você poderá encontrar um arquivo de exemplo com todas as configurações e os respectivos comentários sobre cada uma.

Caso você não queira configurar um servidor local, você pode utilizar o servidor da Fundação Eclipse, disponível em iot.eclipse.org. O servidor da Fundação Eclipse escuta na porta 1883 (porta padrão do protocolo MQTTca) e não possui autenticação.

O cliente MQTT será desenvolvido em Python. Na parte 3 desta série de artigos iremos implementar um cliente MQTT no ESP8266 com o NodeMCU, para que se comunique com esta versão feita em Python. Nesta versão o cliente irá representar os papéis de publisher e subscriber, ou seja, as mensagens que ele enviará ao broker retornarão até ele, como um sistema de eco. Inicialmete vamos instalar a biblioteca MQTT desenvolvida pela Fundação Eclipse, para isto execute o comando:

pip install paho-mqtt

Após instalado, vamos ao código fonte.

Acima temos três callbacks: on_connect, responsável por se conectar ao tópico após se conectar ao servidor; on_subscribe, apenas para informar que se conectou ao tópico com sucesso e on_message, responsável por tratar mensagens recebidas.

Também temos as funções loop, responsável por criar o cliente MQTT que ficará escutando as mensagens e send_message, responsável por criar um cliente que envia uma mensagem.

Para executar o exemplo acima temos dois comandos, --serve e --send. Quando utilizamos nosso cliente em modo servidor ele fica em modo blocante, ou seja, nada mais pode ser executando naquele shell enquanto ele está em execução. Quando utilizamos nosso cliente para enviar mensagens, ele solicita uma mensagem ao usuário, envia e termina sua execução.

A execução é bem simples, basta executar os comandos:

python simple_client.py --serve ou python simple_client.py --send

Faça o teste, coloque um cliente em modo servidor e a partir do outro envie mensagens e veja os resultados.

Caso tenha dúvidas, deixe nos comentários que iremos lhe ajudar. Até a próxima parte.

  • Thiago Dantas

    Onde está o código fonte?