MQTT-SN: MQTT para rede de sensores

MQTT SN 1

O MQTT é muito usado em projetos de IoT. Apesar de não ser um protocolo novo, tem um bom desempenho para aplicações atuais. Porém, o MQTT depende de uma camada de transporte que entregue uma sequência ordenada e sem perda de pacotes, como TCP por exemplo, para o seu funcionamento. Os sensores e atuadores geralmente são dispositivos com baixa capacidade de processamento, armazenamento e muitas vezes são alimentados por baterias. Tais dispositivos não estão preparados para trabalhar com TCP-IP, já que é um protocolo pesado e com diversos recursos para envio de pacotes, que geralmente não são necessários para uma rede de sensores.

Então, como podemos usar as vantagens do MQTT para uma rede de sensores?

Assim nasceu o MQTT-SN (MQTT for Sensor Network), um protocolo específico para redes de sensores e não dependente do TCP-IP para operar. Pode operar sobre qualquer camada de transporte, como ZigBee, bluetooth, UDP, comunicação serial cabeada, entre outras. Também é otimizado para implementação em dispositivos de baixo custo e baixo consumo (alimentados por bateria), com processamento e recursos de armazenamento limitados.

MQTT vs MQTT-SN

O MQTT-SN foi desenvolvido para ser o mais próximo possível do MQTT, porém adaptado para comunicação sem fio com restrições.

Em comparação ao MQTT, pode-se citar as seguintes diferenças:

 

MQTT

MQTT-SN

Comunicação

TCP-IP

UDP, não IP

Rede

Ethernet, WIFI, 3G

Zigbee, Bluetooth, RF, etc

Tamanho mínimo de mensagem

2 bytes – PING

1 byte

Tamanho máximo de mensagem

<= 24 MB

< 128 bytes

Alimentação por bateria

 

SIM

Clientes em modo Sleep

 

SIM

Connectionless mode (QoS -1)

 

SIM

Além disso, o MQTT-SN tem suporte ao tópico ID ao invés do nome do tópico. O tópico ID usa 2 bytes, reduzindo a quantidade de memória e processamento.

Arquitetura do MQTT-SN

A arquitetura é exibida na figura 1, a seguir:

Figura 1 – Arquitetura.

Conforme podemos observar na figura 1, a arquitetura é composta por 3 tipos de componentes:

Os clientes MQTT são conectados ao broker MQTT via gateways MQTT usando o protocolo MQTT-SN. Há também casos onde o cliente acessa o broker através de forwarders, nesse caso o forwarder apenas encapsula os pacotes MQTT-SN e envia para o Gateway MQTT-SN.

Exemplos de projetos

Caso tenha interesse em explorar esse protocolo, você pode usar os seguintes projetos como base:

Saiba mais

MQTT – Protocolos para IoT

Use o MQTT DASH para controlar uma lâmpada remotamente

Conectando-se ao DeviceHub com NodeMCU e MQTT

Referências

MQTT For Sensor Networks (MQTT-SN) Protocol Specification

MQTT-SN: MQTT for UDP, ZigBee and Other Transports