0
votes

Obtenir des appareilsId de Azure iothub / EventHub

J'essaie de lire l'ID de périphérique du moyeu d'événement (à l'arrière de iothub) mais ma syntaxe dans JS semble tort. XXX

La fonction renvoie une erreur: Exception: TypeError: impossible Lire la propriété 'iothub-Connection-Device-Device-ID' de indéfini

Je ne suis pas tout à fait sûr si "iothub-Connection-Device-ID" est le nom correct de l'attribut sur l'événement HUB, mais le problème semble être avec SystemProperties.

apprécie toute aide.


0 commentaires

4 Réponses :


0
votes

Tout d'abord, utilisez le JSON.Stringify pour vous imprimer la charge utile reçue. Deuxièmement, je pense que vous devriez pouvoir accéder à votre identifiant de votre appareil en procédant comme suit: Message.Annotations ["iothub-Connection-Device-ID"]. Pour plus d'informations, veuillez vous reporter aux exemples QuickStart que vous avez disponible dans le Microsoft GitHub . Naviguez jusqu'au dossier Io-Hub \ List-D2C-Messages et vous devez trouver l'exemple de traitement de la charge utile du message et d'impression de la sortie.


2 commentaires

Merci Hugo. Malheureusement, "annotations" n'est pas reconnue.


J'ai également vérifié les repos, mais encore une fois, ils ne disent rien à la récupération des périphériques du moyeu et non de la charge utile.



1
votes

Vous devriez lire des messages de cette façon. Lisez ceci pour plus d'informations sur le sujet - https://docs.microsoft.com/en-us/samples/azure-samples/fonctions-js-iot-hub-processing/processing- Data-iot-hub-with-azur-fonctions / xxx


3 commentaires

Merci, j'ai utilisé ce tutoriel initialement, mais cela ne montre que comment récupérer un attribut d'une chaîne passée comme message. Ce n'est pas un problème. Ce que je veux faire, c'est d'obtenir les appareilsID directement du hub afin que je n'ai pas besoin de l'avoir incorporé dans la charge utile.


Je n'obtiens pas ce que tu veux dire par "l'obtenir de hub". Hub n'aura pas d'affinité directe avec le périphérique, mais le message fera.


Chaque appareil doit s'authentifier sur ITHUB afin qu'il devrait toujours savoir quel appareil a envoyé la charge utile. C'est une propriété de métadonnées. Je sais comment les interroger à partir d'analyses de flux mais pas de FunctionApp.



2
votes

iothub-Connection-Device-ID est la touche droite à utiliser, il vous suffit de l'utiliser sur le sac de propriété correct. Un problème github sans rapport https://github.com/azure/azure- SDK-for-JS / Problèmes / 7801 montre comment cette clé est en effet disponible sur chaque message.

Selon la cardinalité dans votre fichier Fonctions.json, iothubMessages sera un tableau de messages ou un seul message. Voir iothubmessage.foreach n'est pas une fonction? pour plus de détails.

S'il s'agit d'un tableau de messages, accédez à SystemProperties directement dessus ne fonctionnera pas. Vous aurez besoin de boucler pour accéder à chaque message séparément.

Voyez-vous SystemProperties sur les messages individuels? Si oui, alors message.SystemProperties ["iothub-connexion-Device-ID"]] devrait fonctionner.


0 commentaires

0
votes

J'ai atterri sur cette question lorsque vous recherchez les appareilsID lorsqu'un DeviceTwinChange se produit sur Azure Iot Hub et le message informatique a été acheminé par une hub d'événement à ma fonction d'azur. Dans iothubMessage, je ne fais que faire des informations signalées ou désirées. Je cherchais les appareilsID donc je savais quel appareil it provenait de

propriétés: { signalé: { // tout dans ma section rapportée } }

mais j'ai découvert ceci: xxx

L'ID de périphérique est dans la variable de contexte. Je n'ai juste pas fait sur azure iot hub à l'aide d'une fonction azur. xxx

un peu ennuyant que les métadonnées sont conservées dans son contexte et qu'il n'y a pas de documentation à ce sujet.

Points supplémentaires: Il n'y a pas de propriétés d'application dans le contexte. Est-ce que quelqu'un sait comment obtenir les propriétés de l'application dans l'envoi d'informations à la fonction Azure? Ceci est pour quand vous enrichissez les données de Azure Iot Hub

Il s'agit des informations dans Azure Iot Hub lorsque vous effectuez le routage. Il suffit de ne pas avoir vu les informations de ma fonction azur.

ajouter jusqu'à 10 enrichements de message par hub iot. Celles-ci sont ajoutées en tant que propriétés de l'application aux messages envoyés au ou les points d'extrémité choisis.


0 commentaires