2016-09-14 2 views
0

Nous envisageons AWS IoT pour un projet à venir impliquant des périphériques avec des connexions réseau non fiables. Une exigence est d'envoyer des commandes aux périphériques. Les commandes doivent être livrées de manière fiable (ack'd) et les périphériques doivent également signaler le succès/l'échec lorsque les commandes sont terminées plus tard. Il semble que la simple publication de commandes sur un sujet MQTT ne garantira pas la livraison du message, étant donné qu'AWS ne prend pas en charge les sessions persistantes. Est-ce correct?Envoyer des commandes AWS IoT du cloud à l'appareil via des connexions non fiables

Nous avons spéculé à propos de piquer la commande dans un tableau de commandes dans l'état «désiré» de l'ombre de l'appareil. Le dispositif peut alors recevoir la commande en répliquant la commande dans l'état 'signalé' de l'ombre, et signaler le succès/l'échec en définissant un champ de résultat dans la commande à l'état 'signalé'. Compte tenu de notre manque d'expérience avec AWS IoT, cela semble-t-il être une approche sensée? Ou peut-on voir quelque chose de plus propre? Une chose désagréable à ce sujet est que l'ombre accumule des commandes terminées, ce qui signifie probablement que j'aurai éventuellement besoin d'une sorte de ménage pour supprimer les commandes terminées pour garder l'ombre à une taille raisonnable. Enfin, quelqu'un sait-il comment l'utilisation de la bande passante est intelligente - si mon serveur ajoute un élément à un tableau de cent éléments imbriqués profondément dans l'état «désiré», combien de données circule réellement sur le fil? Et de même quand mon appareil déplace l'élément dans l'état 'reporté'.

+0

Il est recommandé de considérer toute connexion réseau comme «non fiable». Dans l'espace IoT, toutes les connexions aux périphériques doivent être considérées comme «non fiables». –

+0

oui. C'est vraiment dommage qu'Amazon n'ait pas complètement mis en œuvre le MQTT: il a été bien conçu et laisser des traces semble un peu faible. –

Répondre

0

Vous avez raison: AWS IoT ne prend pas en charge les sessions de persistance ni la rétention des messages.

En ce qui concerne l'utilisation du périphérique fantôme pour stocker les files d'attente de commandes, cela dépend vraiment de la fréquence et de la variété des commandes que vous avez. Ce que je peux penser à:

  • Si elle est rarement utilisé (par exemple une fois par mois), puis probablement en utilisant un dispositif d'ombre est très bien de la gestion et de la perspective de la performance. Cependant, s'il y a peu de commandes toutes les quelques minutes, cela devient énorme rapidement.

  • S'il n'y a que peu de types de commandes (sans paramètres) et que chacune doit être exécutée une seule fois, alors la commande peut être la clé alors que "true"/"false" est la valeur. Le paramètre désiré peut définir "true" pour indiquer que le périphérique doit l'exécuter, puis une fois que le périphérique a terminé le travail, il signale "false".

Espérons que cela vous aide.

+0

Merci pour la réponse. Je pense que nous avons pratiquement décidé de ne pas utiliser l'IoT: l'exécution de notre propre MQTT pourrait être meilleure, les sessions persistantes sont probablement un problème plus difficile que tous ceux que l'IoT résout réellement. –