2017-07-20 1 views
0

properties.reported dans mon périphérique-jumeaux ne sont pas mis à jour.Dans le hub iot azure, dois-je explicitement copier les propriétés signalées dans le jumeau de l'appareil?

J'ai un projet en cours d'exécution qui suit ce tutoriel Azure SDK IOT (avec même matériel): https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-arduino-huzzah-esp8266-get-started

messages D2C sont envoyés à partir de l'appareil et reconnu par d'azur. Je peux surveiller l'arrivée des messages à travers Device Explorer et iothub-explorer, et je peux les voir s'accumuler dans le magasin de table, grâce à un autre tutoriel que j'ai fait pour essayer de prouver que les messages arrivaient réellement. Toutefois, le contenu des messages (propriétés signalées) ne sont pas reflétés dans le jumeau de l'appareil. properties.reported est vide sauf pour l'horodatage des métadonnées à partir du jour où le périphérique a été enregistré. Ai-je besoin d'écrire une fonction azur pour copier explicitement les données du message dans les propriétés signalées du jumeau?

FYI, les messages C2D (properties.desired dans le jumeau) communiquent très bien.

+0

Où et comment ajoutez-vous ces propriétés rapportées? –

+0

@Rita Han, dans les entrailles du code du tutoriel est un appel à IoTHubMessage_CreateFromByteArray() qui prend une chaîne JSON en entrée. Le résultat est ensuite envoyé à IoTHubClient_LL_SendEventAsync() et remis lors d'un appel à IoTHubClient_LL_DoWork(). Les messages arrivent dans le hub et sont enregistrés (via une fonction qui les copie simplement dans la table de stockage azure). Exemple direct à partir du journal: '{" deviceId ":" new-device "," messageId ": 2," température ": 22.29999," humidité ": 47.2} ' ... et oui j'ai un deviceId enregistré de " nouvel appareil". – zoidicus

Répondre

0

L'aide est arrivée dans un autre forum, j'ajoute donc les détails pertinents ici.
L'exemple I ci-dessus et les autres exemples que j'ai essayés envoyaient tous événements, au lieu de propriétés, même s'ils lisaient et réagissaient aux propriétés (souhaitées) envoyées depuis le cloud. Les propriétés signalées doivent être envoyées avec un appel à IoTHubClient_LL_SendReportedState (C) ou Client.UpdateReportedPropertiesAsync (C#).