Protocolo para definir configurações do dispositivo IoT

9

O MQTT é amplamente usado na IoT quando se trata de trocar dados de aplicativos entre o dispositivo final e o serviço host. O modelo de publicação-assinatura facilita o uso: sem handshake, negociação etc. (pelo menos acima da camada de protocolo MQTT). É voltado principalmente para que os produtores de dados possam distribuir seus dados facilmente aos consumidores.

No entanto, quando se trata de um servidor central que deseja definir configurações em um dispositivo final, não tenho certeza de que o modelo seja muito adequado. O servidor desejará enviar um comando para o dispositivo e aguardar uma resposta (por exemplo, leia uma configuração específica, aguarde resposta), o que realmente não se adequa ao modelo de publicação-assinatura do MQTT.

Fiquei me perguntando se existem protocolos existentes que são voltados para enviar e receber comandos e configurar dispositivos remotos?

Amr Bekhit
fonte
11
Tem certeza de que o MQTT não permite que o cliente se inscreva em um canal de controle? Acho que este é o lugar para começar a procurar por respostas, mas eu não estou bem o suficiente up-to-velocidade para sumarise em uma resposta en.wikipedia.org/wiki/Representational_state_transfer
Sean Houlihane
11
Não se esqueça, o terminal precisa iniciar o canal, por isso está no controle do consumo de energia.
21817 Sean Houlihane
11
@SeanHoulihane Certamente é possível usar o MQTT para enviar e receber comandos / configurações como você descreve, mas da maneira que eu vejo, o ideal é que você tenha um protocolo "baseado em sessão", ou seja, você cria uma sessão, envia um comando e receba uma resposta nessa mesma sessão, vinculando facilmente a resposta ao comando original. O MQTT é baseado em mensagens, portanto, não há nada para vincular mensagens entre si - cabe a você lidar com essa parte. Fiquei me perguntando se havia um protocolo prontamente disponível que eu pudesse usar para esse fim.
Amr Bekhit
11
pt.wikipedia.org/wiki/OMA_LWM2M Não sei exatamente como, mas a nuvem parece capaz de fazer chamadas PUT ou POST para acionar um retorno de chamada no cliente.
21817 Sean Houlihane
MQTTv5 possui campos de cabeçalho para marcar uma mensagem como uma resposta à mensagem anterior.
hardillb

Respostas:

6

Parece um trabalho para o CoAP :

Como o HTTP, o CoAP é baseado no modelo REST de grande sucesso: os servidores disponibilizam recursos em uma URL e os clientes acessam esses recursos usando métodos como GET, PUT, POST e DELETE.

Do ponto de vista do desenvolvedor, o CoAP se parece muito com HTTP. Obter um valor de um sensor não é muito diferente de obter um valor de uma API da Web.

Aparentemente, ele pode ser implementado com sobrecarga muito baixa:

O CoAP foi projetado para trabalhar em microcontroladores com até 10 KiB de RAM e 100 KiB de espaço de código

O CoAP é especificado na RFC 7252 e existem várias implementações (por exemplo, em C ).

Ele é muito inspirado pelo REST, usado com HTTP para APIs da web; portanto, se você estiver familiarizado com eles, você escolherá rapidamente o CoAP. Caso contrário, você pode achar esta apresentação útil para o contexto. A idéia é que cada método HTTP tem um significado semântico, por exemplo, GETsolicita informações a partir do dispositivo sem mudar nada e POST, PUTe DELETEtransformar os dados.

Como você diz, os modelos de publicação / assinatura não funcionam em uma situação em que seu dispositivo atua como um 'servidor' para a coordenação do sistema central (que atua como um cliente para cada dispositivo). Em vez disso, um modelo semelhante ao HTTP é ideal, exceto que o HTTP tem sobrecarga demais, e é aí que entra o CoAP.

Aurora0001
fonte
0

Fiquei me perguntando se existem protocolos existentes que são voltados para enviar e receber comandos e configurar dispositivos remotos?

Sim, existe um protocolo melhor para o gerenciamento de dispositivos na IoT. É LwM2M - é muito mais eficiente que o MQTT e acima de COAP, MQTT e HTTP.

O LwM2M vem com um modelo de gerenciamento de dados e dispositivos bem definido, oferecendo uma variedade de objetos padrão prontos para uso (IPSO Smart Objects), monitoramento de conectividade, ações de dispositivos remotos e atualizações estruturadas FOTA e SOTA, enquanto no MQTT esses recursos são totalmente fornecedor e específico da plataforma. O que se segue é que, com o MQTT, as atualizações de firmware ou quaisquer outros recursos de gerenciamento devem ser criados do zero. Em contraste, o LwM2M oferece atualizações de firmware como uma de suas funcionalidades básicas, portanto, não há necessidade de inventar novos blocos de construção para comunicação.

Aqui você tem comparação MQTT vs LwM2M e curso completo.

Barbara Potter
fonte