O Message Queuing Telemetry Transport - MQTT é um dos protocolos mais comuns para a IoT e comunicação Machine-to-Machine - M2M (comunicação entre máquinas), foi desenvolvido sobre a pilha de protocolos TCP e utiliza o TCP para realizar a comunicação. O MQTT aplica o paradigma publish/subscribe que provê três Qualidades de Serviço - QoS para garantir a troca de mensagens entre os dispositivos.
O protocolo MQTT define dois tipos de entidades na rede: um message broker e inúmeros clientes.
O broker é um servidor que recebe todas as mensagens dos clientes e, em seguida, roteia essas mensagens para os clientes de destino relevantes, ou seja, é o elemento responsável por gerir as publicações e as subscrições do protocolo MQTT.
Um cliente é qualquer coisa que possa interagir com o broker e receber mensagens. Um cliente pode ser um sensor de IoT em campo ou um aplicativo em um data center que processa dados de IoT.
A ThingSpeak™ possui um broker MQTT na URL mqtt.thingspeak.com e na porta 1883. O intermediário ThingSpeak suporta tanto o MQTT publish quanto o MQTT subscribe, conforme mostrado nos diagramas abaixo.
O cliente conecta-se ao broker enviando uma mensagem CONNECT. A mensagem CONNECT pede para estabelecer uma conexão do cliente com o broker.
O cliente receberá uma mensagem CONNACK do broker. A mensagem CONNACK tem os parâmetros:
Depois que uma conexão for estabelecida, o cliente poderá enviar uma ou mais mensagens SUBSCRIBE ao broker para indicar que ele receberá mensagens do broker de determinados tópicos.
Depois que o cliente tiver assinado um tópico com sucesso, o broker retornará uma mensagem SUBACK com um ou mais parâmetros returnCode.
Existe um código de retorno para cada um dos tópicos no comando SUBSCRIBE. Os valores de retorno são os seguintes.