MQTT – Instalando e Testando Mosquitto em Raspberry Pi

Implementado MQTT com Mosquitto.

Este é o primeiro tutorial sobre IoT publicado pelo HackerLab.  O intuito é o de desenvolver uma série de artigos que permitam ao leitor implantar sensores e monitorá-los remotamete.

Iniciaremos com a implementação em um Raspberry Pi (RPi) do Message Queuing Telemetry Transport (MQTT) que é um protocolo de conectividade machine-to-machine (M2M) utilizado na Internet of Things (IoT). MQTT é utilizado para monitoramento remoto onde os dispositivos requerem código enxuto ou em situações onde existe limitação de banda para comunicação.

Este tutorial foi baseado em um post do .

Publish-Subscribe

É uma arquitetura de comunicação por meio de mensagens onde os dispositivos que controlam os sensores são os publishers e os dispositivos que monitoram os sinais enviados pelos sensores são os subscribers. Os subscribers podem selecionar as mensagens que lhes interessam por meio de filtros. Para que isto ocorra, as menssagens são publicadas por tópicos ou canais lógicos.

Para a implementação completa desta estrutura é necessário um terceiro elemento chamado message broker, que receberá as mensagens dos publishers, as colocará em uma fila e as enviará, filtrada, aos subscribers.

Neste tutoria abordarei a instalação e testes do Mosquitto, um message broker que implementa o protocolo MQTT. Trata-se de uma aplicação bastante apropriada para a implementacão da”Internet of Things” utilizando sensores, celulares, tablets, Arduino e Raspberry Pi.

Instalando o Mosquitto no RPi

Pelo fato do apt-get do RPi não implementar as versão mais recente do Mosquitto, será necesário preparar o RPi antes da instalação propriamente dita.

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get update
sudo apt-get install mosquitto

O próximo passo será a instalação das três partes do Mosquitto:

  • mosquitto: o broker MQTT;
  • mosquito-client: command line muito útil para depuração;
  • python-mosquitto: interfaces para a linguagem Python.
sudo apt-get install mosquitto mosquitto-clients python-mosquitto

Em alguns pacotes Linux o servidor MQTT é iniciado logo após a instalação.  Como teremos algumas modificações no arquivo de configuração, será necessário parar o servidor.

sudo /etc/init.d/mosquitto stop

Configurando o servidor Mosquitto

Antes de iniciarmos o uso do Mosquitto, será necessário adequar o arquivo de configuração localizado em /etc/mosquitto.

sudo nano /etc/mosquitto/mosquitto.conf

A configuração final do arquivo deverá ser conforme abaixo:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest topic


log_type error
log_type warning
log_type notice
log_type information

connection_messages true
log_timestamp true

include_dir /etc/mosquitto/conf.d

Iniciando o servidor Mosquitto

sudo /etc/init.d/mosquitto start

Testando o servidor Mosquitto

Serão necessários duas janelas de terminais.

No terminal 1 digite:

mosquitto_sub -d -t hello/world

Note que esta mensagem será publicada no canal hello/world.

No terminal 2 digite:

mosquitto_pub -d -t hello/world -m "HackerLab, - Nerd´s Playground"

Note que o subscriber está filtrando as mensagens do canal hello/world.

Após a intridução do comando no terminal 2, observe o terminal 1 com as seguintes mensagens:

~ $ sudo mosquitto_sub -d -t hello/world
Client mosqsub/3014-LightSwarm sending CONNECT
Client mosqsub/3014-LightSwarm received CONNACK
Client mosqsub/3014-LightSwarm sending SUBSCRIBE (Mid: 1, Topic: hello/world, QoS: 0)
Client mosqsub/3014-LightSwarm received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/3014-LightSwarm received PUBLISH (d0, q0, r0, m0, 'hello/world', ... (32 bytes)) HackerLab, - Nerd´s Playground

Pronto! Você instalou um broker Mosquitto com sucesso!