O que seria o protocolo MQTT?

Como funciona

O protocolo MQTT(MQ Telemetry Transport) é um protocolo voltado para a comunicação Máquina-a-Máquina(M2M) e Internet das Coisas(IoT), com foco em ser um protocolo leve e simples. Foi concebido para ser um protocolo que permite trabalhar com envio de mensagens, sendo assim, permite trabalhar com a publicação e assinatura(recebimento) das mensagens. O principal foco do protocolo é permitir que seja possível enviar dados, por exemplo, com link via satélite ou conexão dial-up, outro ponto é o baixo de consumo de energia e o tamanho do pacote enviado.

O MQTT utiliza a porta 1883, protocolo TCP.

Dentre os pontos positivos é possível realizar a coleta de dados, e adicionar outros dispositivos para "escutar" tais informações, e realizar algum tipo de tomada de decisão.

Para criar um modelo de restrição as lista(assinatura e publicação), é necessário passar alguns valores baseado no projeto, segue uma tabela padrão com as informações que devem ser obtidas do projeto:

Parâmetro Valor
Usuário O mesmo login do criador do projeto.
Senha O número da ApiKey do projeto.
Lista Deverá ser o prefixo escolhido para o projeto.

Assinatura de mensagem

Outro fator importante, é que é possível assinar a uma lista através de caracteres coringas. Por exemplo, se o prefixo do projeto for IOTWBS, e o projeto tenha dados de coleta(collect), gatilho(trigger) e atuadores(actuator):

Assinatura Significado
IOTWBS/# Acompanhar qualquer dado que seja publicado para a lista IOTWBS, mesmo sendo coleta, gatilho e atuadores.
IOTWBS/collect/# Acompanhar qualquer dado que esteja sendo coletado, em qualquer dispositivo.
IOTWBS/trigger/# Acompanhar qualquer dado que esteja sendo alterado, enquanto gatilho.
IOTWBS/actuator/# Acompanhar qualquer dado que esteja sendo alterado, enquanto atuador.

Como testar?

Uma das aplicações que podem ser utilizadas para realizar testes utilizado o MQTT é o Mosquitto, que é uma aplicação open-source que permite tal comunicação, tanto realizado a publicação como assinatura das mensagens enviadas.

Para realizar a instalação siga o tutorial: Download Mosquitto.

Para realizar a publicação de dados é utilizado o comando mosquitto_pub e para assinar a lista o comando mosquitto_sub.

Dispositivo de Coleta

Como realizar a publicação da coleta

Para realizar a coleta de dados, deverá ser utilizado a lista collect, prefixida da sigla do projeto e sufixida no número de série do dispositivo.

Os dados deverão ser enviadas em formato JSON, com todos os valores que se deseja armazenar para realização da coleta.

$ mosquitto_pub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t "IOTWBS/collect/IOTWBS0001" -m '{"data":{"temperatura":10,"umidade":30,"luminosidade":15}}'
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(collect) + Núm. de Série. IOTWBS/collect/IOTWBS0001
-m Data para envio em formato JSON com a chave data. {"data":{"temperatura":10,"umidade":30,"luminosidade":15}}

Como assinar os dados que estão sendo coletados

Para acompanhar a coleta de dados poderá ser assinado a lista, no caso, a lista de publicação dos dados coletados.

Tanto pode ser assinado conforme o exemplo ao lado, bem como utilizado o modo de assinatura da lista através de caracteres coringa.

$ mosquitto_sub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t 'IOTWBS/collect/IOTWBS0001' -v
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(collect) + Núm. de Série. IOTWBS/collect/IOTWBS0001
-v Utilizado para manter o console acompanhando as mensagens. -

Gatilhos

Como realizar a alteração do Gatilho

Utilizando a mesma premissa do que já foi exemplificado anteriormente, é possível alterar o estado de um gatilho através da lista trigger.

O formato do dado enviado é fixo, e apenas permite ativar (state:on) ou inativar o dispositivo (state:off).

Para habilitar o gatilho, segue exemplo de envio:

$ mosquitto_pub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t “IOTWBS/trigger/IOTWBS0002" -m '{"data":{“state”:”on"}}'
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(trigger) + Núm. de Série. IOTWBS/trigger/IOTWBS0002
-m Data para ativar o dispositivo utilizando o data. {"data":{“state”:”on"}}

Para desabilitar o gatilho, segue exemplo de envio:

$ mosquitto_pub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t “IOTWBS/trigger/IOTWBS0002" -m '{"data":{“state”:”off"}}'
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(trigger) + Núm. de Série. IOTWBS/trigger/IOTWBS0002
-m Data para inativar o dispositivo utilizando o data. {"data":{“state”:”off"}}

Como realizar o acompanhamento das alterações

É possível acompanhar as alterações de estado dos gatilhos. No exemplo ao lado está sendo acompanhado todas as alterações do dispositivo IOTWBS0002.

$ mosquitto_sub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t “IOTWBS/trigger/IOTWBS0002" -v
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(trigger) + Núm. de Série. IOTWBS/trigger/IOTWBS0002
-v Utilizado para manter o console acompanhando as mensagens. -

Atuadores

Apenas para assinar os dados Coletados

No caso do atuador, apenas é possível acompanhar os dados de alteração do estado. Para acompanhar é utilizado a lista actuator.

$ mosquitto_sub -h guardiao.cl -u "suporte@webonesystem.com.br" -P "497aa991-d8e6-4bb6-ad17-f01a13648333" -t ‘IOTWBS/actuator/IOTWBS0003' -v
Parâmetro Significado Valor no Exemplo
-h Host de conexão. guardiao.cl
-u Usuário do login. suporte@webonesystem.com.br
-P A senha de acesso, no caso, o número da ApiKey do projeto. 497aa991-d8e6-4bb6-ad17-f01a13648333
-t Prefixo do Projeto + Lista(actuator) + Núm. de Série. IOTWBS/actuator/IOTWBS0003
-v Utilizado para manter o console acompanhando as mensagens. -