Protocole de configuration des paramètres des appareils IoT

9

MQTT est largement utilisé dans l'IoT lorsqu'il s'agit d'échanger des données d'application entre l'appareil final et le service hôte. Le modèle de publication-abonnement le rend facile à utiliser: pas de prise de contact, de négociation, etc. (au moins au-dessus de la couche de protocole MQTT). Il vise principalement à permettre aux producteurs de données de distribuer facilement leurs données aux consommateurs.

Cependant, quand il s'agit d'un serveur central souhaitant configurer les paramètres sur un appareil final, je ne suis pas sûr que le modèle soit très adapté. Le serveur voudra envoyer une commande à l'appareil et attendre une réponse (par exemple lire un paramètre spécifique, attendre une réponse), ce qui ne correspond pas vraiment au modèle de publication-abonnement de MQTT.

Je me demandais s'il existe des protocoles existants destinés à envoyer et recevoir des commandes et à configurer des périphériques distants?

Amr Bekhit
la source
1
Êtes-vous sûr que MQTT ne permet pas au client de s'abonner à un canal de contrôle? Je pense que c'est l'endroit idéal pour commencer à chercher des réponses, mais je ne suis pas assez bien à jour pour résumer une réponse en.wikipedia.org/wiki/Representational_state_transfer
Sean Houlihane
1
N'oubliez pas que le point de terminaison doit être celui qui initie le canal, il contrôle donc la consommation d'énergie.
Sean Houlihane
1
@SeanHoulihane Il est certainement possible d'utiliser MQTT pour envoyer et recevoir des commandes / paramètres comme vous le décrivez, mais la façon dont je le vois, idéalement, vous devez avoir un protocole "basé sur la session", c'est-à-dire que vous créez une session, envoyez une commande et recevoir une réponse dans cette même session, reliant ainsi facilement la réponse à la commande d'origine. MQTT est basé sur les messages, il n'y a donc rien du tout pour lier les messages entre eux - c'est à vous de gérer cette partie. Je me demandais s'il y avait un protocole facilement disponible que je pouvais utiliser à cette fin.
Amr Bekhit
1
en.wikipedia.org/wiki/OMA_LWM2M Je ne sais pas exactement comment, mais le cloud semble être capable de faire des appels PUT ou POST pour déclencher un rappel dans le client.
Sean Houlihane
MQTTv5 possède des champs d'en-tête pour marquer un message comme réponse à un message précédent.
hardillb

Réponses:

6

Cela ressemble à un travail pour CoAP :

Comme HTTP, CoAP est basé sur le modèle REST qui a connu un succès retentissant: les serveurs mettent les ressources à disposition sous une URL et les clients y accèdent à l'aide de méthodes telles que GET, PUT, POST et DELETE.

Du point de vue du développeur, CoAP ressemble beaucoup à HTTP. L'obtention d'une valeur à partir d'un capteur n'est pas très différente de l'obtention d'une valeur à partir d'une API Web.

Il peut apparemment être mis en œuvre avec des frais généraux très faibles:

CoAP a été conçu pour fonctionner sur des microcontrôleurs avec aussi peu que 10 Ko de RAM et 100 Ko d'espace de code

CoAP est spécifié dans la RFC 7252 , et il existe différentes implémentations (par exemple en C ).

Il est très fortement inspiré par REST tel qu'il est utilisé avec HTTP pour les API Web, donc si vous les connaissez, vous prendrez rapidement CoAP. Sinon, vous pourriez trouver cette présentation utile pour le contexte. L'idée est que chaque méthode HTTP a une signification sémantique, par exemple GETdemande des informations à l'appareil sans rien changer et POST, PUTet DELETEmute les données.

Comme vous le dites, les modèles de publication / abonnement ne fonctionneraient pas dans une situation où votre appareil agit en tant que «serveur» pour la coordination du système central (qui agit en tant que client pour chaque appareil). Au lieu de cela, un modèle similaire à HTTP est idéal, sauf que HTTP a beaucoup trop de frais généraux, c'est là que CoAP entre en jeu.

Aurora0001
la source
0

Je me demandais s'il existe des protocoles existants destinés à envoyer et recevoir des commandes et à configurer des périphériques distants?

Oui, il existe un meilleur protocole pour la gestion des appareils dans l'IoT. C'est LwM2M - Il est beaucoup plus efficace que MQTT et surtout COAP, MQTT et HTTP.

LwM2M est livré avec un modèle de gestion des données et des appareils bien défini, offrant une variété d'objets standard prêts à l'emploi (IPSO Smart Objects), une surveillance de la connectivité, des actions à distance des appareils et des mises à jour structurées FOTA et SOTA, alors que dans MQTT, ces fonctionnalités sont entièrement spécifique au fournisseur et à la plate-forme. Ce qui suit est qu'avec MQTT, les mises à jour du micrologiciel ou toute autre fonction de gestion doivent être créées à partir de zéro. À l'opposé, LwM2M propose des mises à niveau du micrologiciel comme l'une de ses fonctionnalités de base, il n'est donc pas nécessaire d'inventer de nouveaux blocs de construction pour la communication.

Ici, vous avez une comparaison MQTT vs LwM2M et un cours intensif complet.

Barbara Potter
la source