Implémentation des appareils et meilleures pratiques pour IoT Central

Cet article fournit des informations sur la façon d’implémenter des appareils qui se connectent à votre application IoT Central. Il présente également quelques meilleures pratiques. Pour en savoir plus sur le processus de connexion global, consultez Connecter un appareil.

Pour obtenir un exemple de code d’implémentation des appareils, consultez Tutoriel : Créer et connecter une application cliente à votre application Azure IoT Central.

Implémenter l’appareil

Les appareils qui se connectent à IoT Central doivent suivre les conventions IoT Plug-and-Play. L’une de ces conventions implique qu’un appareil envoie l’ID de modèle du modèle d’appareil qu’il implémente lorsqu’il se connecte. L’ID de modèle permet à l’application IoT Central d’affecter l’appareil au modèle d’appareil qui convient.

Un modèle d’appareil IoT Central comprend un modèle de capacité qui spécifie les comportements qu’un appareil de ce type doit implémenter. Les comportements incluent une télémétrie, des propriétés et des commandes.

Chaque modèle de capacité a un identificateur de modèle de jumeau numérique unique (DTMI), tel que dtmi:com:example:Thermostat;1. Lorsqu’un appareil se connecte à IoT Central, il envoie le DTMI du modèle de capacité qu’il implémente. IoT Central peut ensuite affecter le modèle d’appareil approprié à l’appareil.

IoT Plug-and-Play définit un ensemble de conventions qu’un appareil doit suivre quand il implémente un modèle DTDL (Digital Twin Definition Language).

Les kits Azure IoT device SDK incluent la prise en charge des conventions IoT Plug-and-Play.

Modèle de l’appareil

Pour IoT Central, un modèle d’appareil est défini à l’aide du langage de modélisation DTDL v2. Ce langage vous permet de définir :

  • La télémétrie envoyée par l’appareil. La définition comprend le nom et le type de données de la télémétrie. Par exemple, un appareil peut envoyer une télémétrie de température en tant que double.
  • Les propriétés signalées par l’appareil à IoT Central. Une définition de propriété comprend son nom et son type de données. Par exemple, un appareil peut signaler l’état d’une vanne en tant que valeur booléenne.
  • Les propriétés que l’appareil peut recevoir d’IoT Central. Si vous le souhaitez, vous pouvez marquer une propriété comme étant accessible en écriture. Par exemple, IoT Central peut envoyer une température cible en tant que double à un appareil.
  • Les commandes auxquelles un appareil répond. La définition comprend le nom de la commande ainsi que les noms et les types de données des éventuels paramètres. Par exemple, un appareil peut répondre à une commande de redémarrage qui spécifie le nombre de secondes à attendre avant le redémarrage.

Remarque

IoT Central définit certaines extensions au langage DTDL v2. Pour plus d’informations, consultez Extension IoT Central.

Un modèle DTDL peut être un modèle sans composant ou à plusieurs composants :

  • Modèle sans composant : Un modèle simple n’utilise pas de composants incorporés ou en cascade. Toutes les données de télémétrie, propriétés et commandes sont définies en tant que composant racine unique. Pour obtenir un exemple, consultez le modèle Thermostat.
  • Modèle à plusieurs composants : modèle plus complexe qui inclut deux composants ou plus. Ces composants incluent un composant racine unique et un ou plusieurs composants imbriqués. Pour obtenir un exemple, consultez le modèle Contrôleur de température.

Conseil

Vous pouvez importer et exporter un modèle d’appareil complet ou une interface individuelle à partir d’un modèle d’appareil IoT Central sous forme de fichier DTDL v2.

Pour en savoir plus sur les modèles d’appareil, consultez le guide de modélisation d’IoT Plug-and-Play.

Conventions

Un appareil doit respecter les conventions IoT Plug-and-Play lorsqu’il échange des données avec IoT Central. Ces conventions sont les suivantes :

  • Envoyer le DTMI lorsqu’il se connecte à IoT Central
  • Envoyer des charges utiles JSON et des métadonnées correctement mises en forme à IoT Central
  • Répondre correctement aux commandes et aux propriétés accessibles en écriture d’IoT Central
  • Respecter les conventions de nommage pour les commandes de composant

Remarque

Actuellement, IoT Central ne prend pas entièrement en charge les types de données DTDL Array et Geospatial.

Pour en savoir plus sur les conventions IoT Plug-and-Play, consultez Conventions IoT Plug-and-Play.

Pour en savoir plus sur le format des messages JSON qu’un appareil échange avec IoT Central, consultez Charges utiles de télémétrie, de propriétés et de commandes.

Kits de développement logiciel (SDK) d’appareil

Utilisez l’un des kits Azure IoT device SDK pour implémenter le comportement de votre appareil. Le code doit :

  • Inscrire l’appareil auprès de DPS et utiliser les informations de DPS pour se connecter au hub IoT interne de votre application IoT Central.
  • Annoncer le DTMI du modèle de capacité implémenté par l’appareil.
  • Envoyer la télémétrie au format spécifié par le modèle de capacité d’appareil. IoT Central utilise le modèle de capacité spécifié dans le modèle d’appareil afin de déterminer comment utiliser les données de télémétrie pour les visualisations et l’analyse.
  • Synchroniser les valeurs de propriété entre l’appareil et IoT Central. Le modèle de capacité spécifie les noms des propriétés et les types de données afin qu’IoT Central puisse afficher les informations.
  • Implémenter des gestionnaires de commandes pour les commandes spécifiées dans le modèle de capacité. Le modèle de capacité spécifie les noms des commandes et les paramètres que l’appareil doit utiliser.

Pour plus d’informations sur le rôle des modèles d’appareil, consultez Présentation des modèles d’appareils.

Le tableau suivant récapitule à quelles fonctionnalités des appareils Azure IoT Central correspondent les fonctionnalités IoT Hub :

Azure IoT Central Azure IoT Hub
Télémétrie Messages d’appareil-à-cloud
Commandes hors connexion Messages de cloud-à-appareil
Propriété Propriétés signalées du jumeau d’appareil
Propriété (accessible en écriture) Propriétés souhaitées et signalées du jumeau d’appareil
Commande Méthodes directes

Protocoles de communication

Les protocoles de communication qu’un appareil peut utiliser pour se connecter à IoT Central incluent MQTT, AMQP et HTTPS. En interne, IoT Central utilise un hub IoT pour activer la connectivité des appareils. Pour plus d’informations sur les protocoles de communication pris en charge par IoT Hub pour la connectivité des appareils, voir Choisir un protocole de communication.

Si votre appareil ne peut utiliser aucun des protocoles pris en charge, utilisez Azure IoT Edge pour procéder à une conversion de protocole. IoT Edge prend en charge d’autres scénarios avancés permettant de décharger l’application Azure IoT Central de certains traitements.

Timestamps de télémétrie

Par défaut, IoT Central utilise l’heure de mise en file d’attente du message lorsqu’il affiche les données de télémétrie sur les tableaux de bord et les graphiques. L’heure de mise en file d’attente des messages est défini en interne lorsque IoT Central reçoit le message de l’appareil.

Un appareil peut définir la propriété iothub-creation-time-utc lorsqu’il crée un message à envoyer à IoT Central. Si cette propriété est présente, IoT Central l’utilise lors de l’affichage des données de télémétrie sur les tableaux de bord et les graphiques.

Vous pouvez exporter l’heure de mise en file attente et la propriété iothub-creation-time-utc lorsque vous exportez des données de télémétrie à partir de votre application IoT Central.

Pour en savoir plus sur les propriétés des messages, consultez Propriétés système des messages IoT Hub d’appareil-à-cloud.

Bonnes pratiques

Ces recommandations montrent comment implémenter des appareils pour tirer parti de la haute disponibilité, de la récupération d’urgence et de la mise à l’échelle automatique intégrées à IoT Central.

Approvisionnement des appareils

Lorsque le nombre de hubs IoT de votre application change, un appareil peut avoir besoin de se connecter à un hub différent.

Avant qu’un appareil se connecte à IoT Central, il doit être inscrit et approvisionné dans les services sous-jacents. Lorsque vous ajoutez un appareil à une application IoT Central, IoT Central ajoute une entrée à un groupe d’inscription DPS. Les informations du groupe d’inscription, telles que l’étendue de l’ID, l’identité d’appareil et les clés, apparaissent dans l’interface utilisateur d’IoT Central.

Quand un appareil se connecte pour la première fois à votre application IoT Central, DPS approvisionne l’appareil dans l’un des hubs IoT liés du groupe d’inscriptions. L’appareil est alors associé à ce hub IoT. DPS utilise une stratégie d’allocation pour équilibrer la charge de l’approvisionnement entre les hubs IoT de l’application. Ce processus garantit que chaque hub IoT possède un nombre similaire d’appareils approvisionnés.

Pour en savoir plus sur l’inscription et l’approvisionnement dans IoT Central, consultez Guide de connectivité des appareils IoT Central.

Gérer les échecs de connexion

Pour des raisons de mise à l’échelle ou de récupération d’urgence, IoT Central peut mettre à jour ses hubs IoT sous-jacents. Pour maintenir la connectivité, le code de votre appareil doit gérer les erreurs de connexion spécifiques en établissant une connexion à un nouveau point de terminaison IoT Hub.

Si l’appareil reçoit l’une des erreurs suivantes lors de la connexion, il doit réapprovisionner l’appareil avec le service DPS pour obtenir une nouvelle chaîne de connexion. Ces erreurs signifient que la chaîne de connexion n’est plus valide :

  • Point de terminaison IoT Hub inaccessible.
  • Jeton de sécurité expiré.
  • Appareil désactivé dans IoT Hub.

Si l’appareil reçoit l’une des erreurs suivantes quand il se connecte, il doit utiliser une stratégie d’interruption pour réessayer la connexion. Ces erreurs signifient que la chaîne de connexion est toujours valide, mais que des conditions temporaires empêchent l’appareil de se connecter :

  • Appareil bloqué par l’opérateur.
  • Erreur interne 500 du service.

Pour en savoir plus sur les codes d’erreur des appareils, consultez Résolution des problèmes de connexion d’appareils.

Pour en savoir plus sur l’implémentation des reconnexions automatiques, consultez Gérer les reconnexions d’appareils pour créer des applications résilientes.

Actuellement, les appareils IoT Edge ne peuvent pas passer d’un hub IoT à l’autre.

Fonctionnalités de test de basculement

Azure CLI vous permet de tester les capacités de basculement du code de votre appareil. Le principe de la commande CLI consiste à basculer temporairement l’inscription de l’appareil vers un autre hub IoT interne. Pour vérifier que le basculement de l’appareil a fonctionné, vérifiez que l’appareil envoie toujours la télémétrie et répond aux commandes.

Pour effectuer le test de basculement de votre appareil, exécutez la commande suivante :

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

Conseil

Pour trouver l’ID d’application, accédez à Application > Gestion dans votre application IoT Central.

Si la commande réussit, la sortie ressemble à l’exemple suivant :

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

Pour plus d’informations sur la commande CLI, consultez az iot central device manual-failover.

Vous pouvez maintenant vérifier que la télémétrie de l’appareil parvient toujours à votre application IoT Central.

Conseil

Pour voir un exemple de code d’appareil qui traite les basculements dans différents langages de programmation, consultez Clients haute disponibilité IoT Central.

Étapes suivantes

Voici quelques suggestions pour continuer :