obtenir l'état des appareils en ligne et hors ligne dans azure iot Hub à l'aide des fonctions azure
3 Réponses :
Le champ connectionState n'est pas fiable et ne doit pas être utilisé pour interroger l'état du périphérique. Voir ici a> pour plus de détails.
À la place, il est recommandé d’implémenter les battements cardiaques envoyés depuis vos appareils. Vous pouvez également créer un abonnement Azure EventGrid sur les événements de connexion d'appareil et écouter ceux-ci: https://docs.microsoft.com/en-us/azure/iot-hub/iot- hub-how-to-order-connection-state-events # configure-subscription-for-iot-hub-events
// edit: Vous pouvez en fait utiliser la nouvelle fonctionnalité Function durable avec état pour votre cas d'utilisation, en conjonction avec EventGrid: https://docs.microsoft.com/de-de/azure/azure-functions/durable/durable-functions-preview
Commencez par configurer les événements à publier depuis votre hub IoT. Plus spécifiquement, les événements DeviceConnected et DeviceDisconnected résoudront votre objectif.
Ensuite, implémentez enfin EventHub Trigger dans la fonction Azure pour obtenir les événements.
@claymodel Je pense que c'est en fait la même chose que l'implémentation interne de connectionState dans la section Appareils IoT du portail Azure.
La raison pour laquelle je pense qu'il en est ainsi est que l'événement DeviceDisconnected atteint la fonction Azure à peu près au même moment où il est affiché dans la section des propriétés DeviceTwin . p >
Cela signifie que c'est fondamentalement aussi peu fiable que l'implémentation sous-jacente. Je n'ai été informé de la déconnexion qu'au bout de quelques minutes - donc inutile
Je dois maintenant interroger l'appareil à chaque fois avant d'effectuer une opération, juste pour m'assurer que l'appareil est réellement connecté.
C'est un vrai cauchemar! Une autre chose à savoir: il existe deux façons d'être notifié des événements du cycle de vie de l'appareil:
Il y a donc un énorme désalignement entre les sections sur l'IoT Hub.
Pour être honnête, je n'ai aucune idée s'il existe une bonne réponse pour vérifier la connectivité des appareils de manière fiable. J'espère qu'ils feront réellement quelque chose à ce sujet dans un proche avenir
Azure IoT Hub gère le jumeau d'appareil pour chaque appareil qu'il enregistre. Ce jumeau d'appareil est une information au format JSON sur l'appareil et il contient la propriété «connectionState» qui peut être vérifiée dans votre fonction Azure si elle est «Connecté» ou «Déconnecté».