MQTT: mudanças entre as edições
Linha 17: | Linha 17: | ||
* '''Tópicos e subscrições''': As mensagens MQTT são publicadas em '''tópicos''' ('''topic'''), que são áreas de interesse. | * '''Tópicos e subscrições''': As mensagens MQTT são publicadas em '''tópicos''' ('''topic'''), que são áreas de interesse. | ||
*:Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas hierarquicamente, com o cliente usando '''wildcards''' ('''#''') para receber mensagens de uma variedade de tópicos. | *:Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas hierarquicamente, com o cliente usando '''wildcards''' ('''#''' ou '''+''') para receber mensagens de uma variedade de tópicos. | ||
*:*'''topic''': / | *:*'''topic''': /truck/sensors/speed | ||
*:*'''wildcard''': / | *:*'''topic''': /truck/sensors/location | ||
*:*'''wildcard multilevel''': /truck/# -> match /truck/sensors/speed and /truck/sensors/location | |||
*:*'''wildcard sigle level''': /truck/+ -> match /truck/sensors | |||
* '''Qualidade de Serviço''': O MQTT define três níveis de Qualidade de Serviço ('''QoS'''): | * '''Qualidade de Serviço''': O MQTT define três níveis de Qualidade de Serviço ('''QoS'''): |
Edição das 18h17min de 2 de abril de 2020
MQTT - Message Queue Telemetry Transport
MQTT (Message Queue Telemetry Transport) é um protocolo de mensagens para sensores e pequenos dispositivos móveis, baseado no modelo Publicador/Subscritor, ideal para aplicações de Internet das Coisas, em particular para a comunicação máquina a máquina (M2M - Machine to Machine).
Referências:
- Livro (LAMPKIN etal, 2012) [1].
- Site: MQTT Essentials [2].
As aplicações de Internet das Coisas podem envolver abordagens avançadas de telemetria, de forma a poder conectar diferentes dispositivos inteligentes em atividades de sensoreamento, monitoramento e controle, além da conexão dos mesmos a Internet ou a sistemas de controle central [1].
MQTT - Conceitos básicos
Conceitos básicos [1]:
- Publicador/Subscritor: O protocolo MQTT é baseado no princípio de publicar mensagens (publisher) e subscrever tópicos (subscriber) para receber mensagens, conhecido como modelo publisher/subscriber.
- Um cliente pode subscrever tópicos e receber mensagens de atualizações quando algo for publicado sobre este tópico. Alternativamente, um cliente pode publicar mensagens relativas a um dado tópico e deixá-la disponível para os assinantes.
- Tópicos e subscrições: As mensagens MQTT são publicadas em tópicos (topic), que são áreas de interesse.
- Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas hierarquicamente, com o cliente usando wildcards (# ou +) para receber mensagens de uma variedade de tópicos.
- topic: /truck/sensors/speed
- topic: /truck/sensors/location
- wildcard multilevel: /truck/# -> match /truck/sensors/speed and /truck/sensors/location
- wildcard sigle level: /truck/+ -> match /truck/sensors
- Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas hierarquicamente, com o cliente usando wildcards (# ou +) para receber mensagens de uma variedade de tópicos.
- Qualidade de Serviço: O MQTT define três níveis de Qualidade de Serviço (QoS):
- (0) best effort, envia a mensagem uma vez;
- (1) envia a mensagem várias vezes;
- (2) assegura o recebimento da mensagem.
- Retem as mensagens: Mantém as mensagens enviadas no brocker mesmo depois de enviada a todos os subscritores.
- Conexões duráveis e sessões limpas: Quando um cliente se conecta a um servidor e seta o clean session flag = true. Desta forma, quando desconectar, todas as subscrições serão removidas. Se o clean session flag = false a conexão é tratada como durável e as subscrições do cliente continuam mesmo após uma desconexão.
- Wills: Quando um cliente se conecta a um servidor e pode informar que possui uma will, isto é, mensagens importantes que deveriam ser publicadas, mesmo em caso de desconexão involuntária. Isto é importante para sensores de alerta, que informam o sistema caso percam o contato com a rede.
O modelo publisher/subscriber oferece uma alternativa ao modelo cliente/servidor. No modelo cliente/servidor o cliente se comunica diretamente o servidor num serviço fim a fim. No modelo publisher/subscriber o publicador e o subscritor não se comunicam diretamente. A comunicação é realizada por um terceiro componente, o brocker [2].
MQTT e sensores
O MQTT tem aplicabilidade especial para dispositivos para sensoriamento remoto [1].
- Sensores
- Sensores medem parâmetros do ambiente ou de um sistema e reportam a informação para humanos ou outros dispositivos ou sistemas. Com a ajuda do a informação obtida pelos sensores pode ser realizada via rede.
- Múltiplos sensores podem ser posicionados para reportar vários parâmetros, dando uma visão completa das condições de operação de um dispositivo ou sistema.
- Atuadores
- Atuadores são dispositivos que atuam sobre variáveis de um sistema visando alterar seu comportamento.
O controle de um sistema normalmente envolve sensores monitorando parâmetros do sistema e atuadores visando corrigir sua operação. A ação de controle é realizada a partir de um algoritmo de controle, que pode ser executado por controlador central, ou diretamente pelos sensores/atuadores, que neste caso devem ter processamento no próprio sensor/atuador.
O modelo publisher/subscriber do MQTT pode ser bastante útil para interligar sensores, atuadores e sistemas de controle em diferentes tipos de aplicações, em particular àquelas que envolvem as chamadas tecnologias de Internet das Coisas.
Referências
- ↑ 1,0 1,1 1,2 1,3 Valerie Lampkin; Weng Tat Leong; Leonardo Olivera; Sweta Rawat; Nagesh Subrahmanyam; Rong Xiang. Building Smarter Planet Solutions with MQTT and IBM WebSphere MQ Telemetry, ibm.com/redbooks, 2012.
- ↑ 2,0 2,1 MQTT Essentials: The Ultimate Kickstart For MQTT Beginners, https://www.hivemq.com/mqtt-essentials/.
Evandro.cantu (discussão) 11h27min de 25 de março de 2020 (-03)