Comprendre les fonctionnalités hors connexion étendues pour les appareils, modules et appareils enfants IoT EdgeUnderstand extended offline capabilities for IoT Edge devices, modules, and child devices

Azure IoT Edge prend en charge les opérations hors connexion étendues sur vos appareils IoT Edge et permet également certaines opérations hors connexion sur les appareils enfants non IoT Edge.Azure IoT Edge supports extended offline operations on your IoT Edge devices, and enables offline operations on non-IoT Edge child devices too. Dès lors qu’un appareil IoT Edge s’est connecté au moins une fois à IoT Hub, cet appareil et tous les appareils enfants peuvent continuer à fonctionner même s’ils sont déconnectés de façon prolongée ou intermittente.As long as an IoT Edge device has had one opportunity to connect to IoT Hub, that device and any child devices can continue to function with intermittent or no internet connection.

FonctionnementHow it works

Quand un appareil IoT Edge passe en mode hors connexion, le hub IoT Edge assure trois rôles.When an IoT Edge device goes into offline mode, the IoT Edge hub takes on three roles. Tout d’abord, il stocke tous les messages à acheminer en amont jusqu’à ce que l’appareil puisse se reconnecter.First, it stores any messages that would go upstream and saves them until the device reconnects. Ensuite, il authentifie, pour le compte d’IoT Hub, les modules et les appareils enfants afin qu’ils puissent continuer à fonctionner.Second, it acts on behalf of IoT Hub to authenticate modules and child devices so that they can continue to operate. Enfin, il rend possible la communication entre les appareils enfants qui communiquent normalement par le biais d’IoT Hub.Third, it enables communication between child devices that normally would go through IoT Hub.

L’exemple de scénario IoT Edge suivant montre le fonctionnement en mode hors connexion :The following example shows how an IoT Edge scenario operates in offline mode:

  1. Configurer des appareilsConfigure devices

    Sur les appareils IoT Edge, les fonctionnalités hors connexion sont automatiquement activées.IoT Edge devices automatically have offline capabilities enabled. Pour étendre ces fonctionnalités à d’autres appareils IoT, vous devez déclarer une relation parent-enfant entre les différents appareils dans IoT Hub.To extend that capability to other IoT devices, you need to declare a parent-child relationship between the devices in IoT Hub. Ensuite, vous configurez les appareils enfants pour qu’ils fassent confiance à l’appareil parent qui leur est affecté et acheminent les communications vers le cloud par l’intermédiaire du parent en tant que passerelle.Then, you configure the child devices to trust their assigned parent device and route the device-to-cloud communications through the parent as a gateway.

  2. Synchroniser avec IoT HubSync with IoT Hub

    Après l’installation du runtime IoT Edge, l’appareil IoT Edge doit être connecté au moins une fois pour pouvoir se synchroniser avec IoT Hub.At least once after installation of the IoT Edge runtime, the IoT Edge device needs to be online to sync with IoT Hub. Lors de cette synchronisation, l’appareil IoT Edge obtient des informations sur tous les appareils enfants qui lui sont assignés.In this sync, the IoT Edge device gets details about any child devices assigned to it. De plus, l’appareil IoT Edge met à jour en toute sécurité son cache local pour permettre les opérations hors connexion et il récupère les paramètres du stockage local des messages de télémétrie.The IoT Edge device also securely updates its local cache to enable offline operations and retrieves settings for local storage of telemetry messages.

  3. Passer en mode hors connexionGo offline

    Même quand ils ne sont plus connectés à IoT Hub, l’appareil IoT Edge, ses modules déployés et ses appareils IoT enfants peuvent continuer à fonctionner pendant une durée indéterminée.While disconnected from IoT Hub, the IoT Edge device, its deployed modules, and any children IoT devices can operate indefinitely. Les modules et les appareils enfants hors connexion peuvent démarrer et redémarrer en s’authentifiant auprès du hub IoT Edge.Modules and child devices can start and restart by authenticating with the IoT Edge hub while offline. Les données de télémétrie liées qui sont transmises en amont à IoT Hub sont stockées localement.Telemetry bound upstream to IoT Hub is stored locally. La communication entre les modules ou entre les appareils IoT enfants est maintenue par le biais de méthodes ou messages directs.Communication between modules or between child IoT devices is maintained through direct methods or messages.

  4. Reconnecter et resynchroniser avec IoT HubReconnect and resync with IoT Hub

    Après la restauration de la connexion à IoT Hub, l’appareil IoT Edge est resynchronisé.Once the connection with IoT Hub is restored, the IoT Edge device syncs again. Les messages stockés localement sont remis au hub IoT immédiatement, mais dépendent de la vitesse de la connexion, de la latence du hub IoT et d’autres facteurs associés.Locally stored messages are delivered to the IoT Hub right away, but are dependent on the speed of the connection, IoT Hub latency, and related factors. Ils sont remis dans l’ordre dans lequel ils ont été stockés.They are delivered in the same order in which they were stored.

    Les éventuelles différences entre les propriétés désirées et rapportées des modules et des appareils sont rapprochées.Any differences between the desired and reported properties of the modules and devices are reconciled. L’appareil IoT Edge apporte les modifications nécessaires aux appareils IoT enfants qui lui sont assignés.The IoT Edge device updates any changes to its set of assigned child IoT devices.

Restrictions et limitesRestrictions and limits

Les fonctionnalités hors connexion étendues décrites dans cet article sont disponibles pour la version 1.0.7 d’IoT Edge ou une version ultérieure.The extended offline capabilities described in this article are available in IoT Edge version 1.0.7 or higher. Les versions antérieures fournissent toutefois certaines fonctionnalités hors connexion.Earlier versions have a subset of offline features. Les appareils IoT Edge existants qui n’ont pas de fonctionnalités hors connexion étendues ne peuvent pas être mis à niveau en changeant de version de runtime. Pour bénéficier de ces fonctionnalités, ils doivent être reconfigurés avec une nouvelle identité d’appareil IoT Edge.Existing IoT Edge devices that don't have extended offline capabilities can't be upgraded by changing the runtime version, but must be reconfigured with a new IoT Edge device identity to gain these features.

Seuls des appareils non IoT Edge peuvent être ajoutés en tant qu’appareils enfants.Only non-IoT Edge devices can be added as child devices.

Les appareils IoT Edge et leurs appareils enfants assignés peuvent fonctionner en mode hors connexion pendant une durée indéterminée dès lors qu’ils ont été synchronisés une fois. Toutefois, le stockage des messages dépend du paramètre de durée de vie (TTL) et de l’espace disque disponible pour stocker les messages.IoT Edge devices and their assigned child devices can function indefinitely offline after the initial, one-time sync. However, storage of messages depends on the time to live (TTL) setting and the available disk space for storing the messages.

Configurer des appareils parents et enfantsSet up parent and child devices

Pour étendre les fonctionnalités hors connexion étendues d’un appareil IoT Edge aux appareils IoT enfants assignés, vous devez passer par deux étapes.For an IoT Edge device to extend its extended offline capabilities to child IoT devices, you need to complete two steps. Tout d’abord, déclarez les relations parent-enfant dans le Portail Azure.First, declare the parent-child relationships in the Azure portal. Ensuite, créez une relation d’approbation entre l’appareil parents et les appareils enfants, puis configurez l’acheminement des communications vers le cloud par l’intermédiaire du parent en tant que passerelle.Second, create a trust relationship between the parent device and any child devices, then configure device-to-cloud communications to go through the parent as a gateway.

Assigner des appareils enfantsAssign child devices

Les appareils enfants sont des appareils non IoT Edge inscrits auprès du même IoT Hub.Child devices can be any non-IoT Edge device registered to the same IoT Hub. Un appareil parent peut avoir plusieurs appareils enfants, mais un appareil enfant n’a qu’un appareil parent.Parent devices can have multiple child devices, but a child device only has one parent. Pour paramétrer les périphériques enfants sur un appareil Edge, trois moyens sont à votre disposition : le Portail Azure, l’interface de ligne de commande Azure et le SDK du service IoT Hub.There are three options to set child devices to an edge device: through the Azure portal, using the Azure CLI, or using the IoT Hub service SDK.

Les sections suivantes fournissent des exemples sur la manière dont vous pouvez déclarer la relation parent/enfant dans IoT Hub pour les appareils IoT existants.The following sections provide examples of how you can declare the parent/child relationship in IoT Hub for existing IoT devices. Si vous créez des identités d’appareil pour vos appareils enfants, consultez Authentifier un appareil en aval auprès d’Azure IoT Hub pour plus d’informations.If you're creating new device identities for your child devices, see Authenticate a downstream device to Azure IoT Hub for more information.

Option 1 : Portail IoT HubOption 1: IoT Hub Portal

Vous pouvez déclarer les relations parent-enfant au moment où vous créez un appareil.You can declare the parent-child relationship when creating a new device. Pour les appareils existants, vous pouvez déclarer les relations dans la page de détails de l’appareil IoT Edge parent ou de l’appareil IoT enfant.Or for existing devices, you can declare the relationship from the device details page of either the parent IoT Edge device or the child IoT device.

Gérer les appareils enfants à partir de la page de détails de l’appareil IoT Edge

Option n°2 : Utiliser l’outil de ligne de commande azOption 2: Use the az command-line tool

À l’aide de l’interface de ligne de commande Azure avec l’extension IoT (v0.7.0 ou version ultérieure), vous pouvez gérer les relations parent-enfant avec les sous-commandes device-identity.Using the Azure command-line interface with IoT extension (v0.7.0 or newer), you can manage parent child relationships with the device-identity subcommands. L’exemple ci-dessous utilise une requête pour affecter tous les appareils non IoT Edge dans le hub à des appareils enfants d’un appareil IoT Edge.The example below uses a query to assign all non-IoT Edge devices in the hub to be child devices of an IoT Edge device.

# Set IoT Edge parent device
egde_device="edge-device1"

# Get All IoT Devices
device_list=$(az iot hub query \
        --hub-name replace-with-hub-name \
        --subscription replace-with-sub-name \
        --resource-group replace-with-rg-name \
        -q "SELECT * FROM devices WHERE capabilities.iotEdge = false" \
        --query 'join(`, `, [].deviceId)' -o tsv)

# Add all IoT devices to IoT Edge (as child)
az iot hub device-identity add-children \
  --device-id $egde_device \
  --child-list $device_list \
  --hub-name replace-with-hub-name \
  --resource-group replace-with-rg-name \
  --subscription replace-with-sub-name

Vous pouvez modifier la requête pour sélectionner un autre sous-ensemble des appareils.You can modify the query to select a different subset of devices. L’exécution de la commande peut prendre plusieurs secondes si vous spécifiez un grand nombre d’appareils.The command may take several seconds if you specify a large set of devices.

Option 3 : Utiliser le SDK IoT Hub ServiceOption 3: Use IoT Hub Service SDK

Enfin, vous pouvez gérer les relations parent-enfants par programme en utilisant le SDK IoT Hub Service C#, Java ou Node.js.Finally, you can manage parent child relationships programmatically using either C#, Java or Node.js IoT Hub Service SDK. Voici un exemple d’affectation d’un appareil enfant avec le SDK C#.Here is an example of assigning a child device using the C# SDK.

Définir un appareil parent en tant que passerelleSet up the parent device as a gateway

Vous pouvez considérer une relation parent/enfant comme une passerelle transparente, dans laquelle l’appareil enfant possède sa propre identité dans IoT Hub mais communique avec le cloud via son parent.You can think of a parent/child relationship as a transparent gateway, where the child device has its own identity in IoT Hub but communicates through the cloud via its parent. Pour une communication sécurisée, l’appareil enfant doit pouvoir vérifier que l’appareil parent provient d’une source fiable.For secure communication, the child device needs to be able to verify that the parent device comes from a trusted source. Autrement, des tiers risqueraient de configurer des appareils malveillants pour usurper l’identité des parents et intercepter les communications.Otherwise, third-parties could set up malicious devices to impersonate parents and intercept communications.

Une façon de créer cette relation d’approbation est décrite en détail dans les articles suivants :One way to create this trust relationship is described in detail in the following articles:

Spécifier les serveurs DNSSpecify DNS servers

Pour améliorer la robustesse, il est vivement recommandé de spécifier les adresses de serveur DNS utilisées dans votre environnement.To improve robustness, it is highly recommended you specify the DNS server addresses used in your environment. Pour définir votre serveur DNS pour IoT Edge, consultez la solution au problème Le module Edge Agent rapporte en continu le message « fichier config vide » et aucun module ne démarre sur l’appareil dans l’article relatif à la résolution des problèmes.To set your DNS server for IoT Edge, see the resolution for Edge Agent module continually reports 'empty config file' and no modules start on device in the troubleshooting article.

Paramètres hors connexion facultatifsOptional offline settings

Si vos appareils se déconnectent, l’appareil parent IoT Edge stocke tous les messages destinés au cloud jusqu’à ce que la connexion soit rétablie.If your devices go offline, the IoT Edge parent device stores all device-to-cloud messages until the connection is reestablished. Le module hub IoT Edge gère le stockage et le transfert des messages hors connexion.The IoT Edge hub module manages the storage and forwarding of offline messages. Pour les appareils qui peuvent rester hors connexion pendant de longues périodes, optimisez les performances en configurant deux paramètres de hub IoT Edge.For devices that may go offline for extended periods of time, optimize performance by configuring two IoT Edge hub settings.

Tout d’abord, augmentez le temps de réponse en temps réel pour que le hub IoT Edge conserve les messages suffisamment longtemps et que votre appareil ait le temps de se reconnecter.First, increase the time to live setting so that the IoT Edge hub will keep messages long enough for your device to reconnect. Ajoutez ensuite l’espace disque supplémentaire pour le stockage des messages.Then, add additional disk space for message storage.

Durée de vieTime to live

Le paramètre de durée de vie définit la durée (en secondes) pendant laquelle un message peut attendre d’être remis avant d’expirer.The time to live setting is the amount of time (in seconds) that a message can wait to be delivered before it expires. La durée par défaut est de 7 200 secondes (deux heures).The default is 7200 seconds (two hours). La valeur maximale n’est limitée que par la valeur maximale d’une variable entière, qui est d’environ 2 milliards.The maximum value is only limited by the maximum value of an integer variable, which is around 2 billion.

Ce paramètre est une propriété désirée du hub IoT Edge, qui est stockée dans le jumeau du module.This setting is a desired property of the IoT Edge hub, which is stored in the module twin. Vous pouvez le configurer dans le Portail Azure ou directement dans le manifeste de déploiement.You can configure it in the Azure portal or directly in the deployment manifest.

"$edgeHub": {
    "properties.desired": {
        "schemaVersion": "1.0",
        "routes": {},
        "storeAndForwardConfiguration": {
            "timeToLiveSecs": 7200
        }
    }
}

Stockage hôte pour les modules systèmeHost storage for system modules

Les messages et les informations d’état du module sont stockés dans le système de fichiers du conteneur local du hub IoT Edge par défaut.Messages and module state information are stored in the IoT Edge hub's local container filesystem by default. Pour améliorer la fiabilité, en particulier lors d’une mise hors connexion, vous pouvez également dédier un stockage sur l’appareil hôte IoT Edge.For improved reliability, especially when operating offline, you can also dedicate storage on the host IoT Edge device. Pour plus d’informations, consultez Fournir à des modules l’accès au stockage local d’un appareilFor more information, see Give modules access to a device's local storage

Étapes suivantesNext steps

Découvrez comment configurer une passerelle transparente pour les connexions parents/enfants de votre appareil :Learn more about how to set up a transparent gateway for your parent/child device connections: