Existe um mecanismo RPC padronizado para o MQTT?

10

No Overflow de Pilha, há uma pergunta sobre a implementação da interação de solicitação / resposta no MQTT. Como uma resposta observa, você pode fazê-lo publicando a solicitação em um tópico e ouvindo a resposta em outro token que foi incluído na solicitação. É um pouco estranho, mas funciona.

Como o MQTT é usado extensivamente em toda a IoT, pergunto-me, houve alguma tentativa de padronizar essa interação do tipo RPC em prol da interoperabilidade?

Chris Steinbach
fonte
Apenas encontrei este que poderia ser a base para uma resposta: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . É certo que não é uma especificação de solicitação / resposta genérica sendo fortemente acoplada ao LWM2M.
Chris Steinbach

Respostas:

9

Não conheço nenhum desses padrões.

Como apontado nas respostas para a outra pergunta, pub / sub não se presta a RPC, mas pode ser dobrado para caber.

Um dos pontos fortes do MQTT é que a carga útil pode ser qualquer coisa, permitindo que um desenvolvedor faça a melhor escolha para seu projeto.

hardillb
fonte
4

Não tenho certeza de qual é o seu requisito para o método de comunicação RPC padronizado sobre o MQTT, mas ainda fiz uma pequena pesquisa e encontrei vários pontos a serem entregues a você.

Primeiro de tudo, sobre o método padrão. Em um projeto do Github rpc, a descrição meio que prega:

Este módulo fornece uma interface rpc para uma conexão mqtt; em essência, esta é uma estratégia de solicitação e resposta que usa uma estrutura de tópicos do MQTT como transporte.

O objetivo é usar o modelo de pilha (o modelo OSI é um padrão) e apenas usar o MQTT como uma das camadas da pilha.

Este projeto no json-rpc sobre mqtt usa protocolo padronizado ou pelo menos bem conhecido sobre MQTT.

Sobre o constrangimento, você não precisa criar o MQTT e o RPC sobre ele do zero, mas usar uma das bibliotecas vinculadas ou alguma outra encontrada no Github.

OK, para todos os idiomas não existe uma base pronta no Github, mas, nesse caso, a conformidade se torna um critério de planejamento e pode afetar todo o outro projeto, infelizmente.

mico
fonte
Não tenho nenhum requisito real. O ímpeto para a pergunta é comparar o CoAP (que possui mecanismos de solicitação / resposta e pub / sub definidos pela RFC ) ao MQTT, o que tenho quase certeza de que agora apenas padronizou o pub / sub. Certamente, ter algumas bibliotecas de código aberto para RPC é melhor do que nada.
21417 Chris Steinbach
4

O Hub IoT do Azure tem um conceito de métodos diretos:

O Hub IoT permite invocar métodos diretos em dispositivos da nuvem.

Isso é implementado no MQTT (o AMQP não é suportado), em que

Os dispositivos recebem solicitações de método direto no tópico MQTT:

$iothub/methods/POST/{method name}/?$rid={request id}.

Eles incluíram isso em seu SDK, para que os desenvolvedores não precisem se preocupar em monitorar especificamente o tópico. Você pode implementar uma abordagem semelhante.

Como em outras respostas, pub-sub não se presta a RPC, e não existem padrões, até onde eu saiba.

Mais documentação está aqui .

Simon Munro
fonte