View a markdown version of this page

Mettre en œuvre l' AWS.DiscoverDevices opération - Intégrations gérées pour AWS IoT Device Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mettre en œuvre l' AWS.DiscoverDevices opération

La découverte des appareils aligne la liste des appareils physiques détenus par l'utilisateur final avec les représentations numériques de ces appareils gérés dans Managed Integrations for. AWS IoT Device Management Elle est exécutée par un AWS client sur des appareils appartenant à l'utilisateur final. Pour OAuth 2.0, cela se produit une fois la liaison des comptes terminée. Pour l'autorisation générale, cela peut se produire après la création de l'association de comptes.

La découverte d'appareils est un processus asynchrone dans le cadre duquel Managed Integrations for AWS IoT Device Management appelle un connecteur pour lancer la demande de découverte d'appareils. Un connecteur C2C renvoie une liste des appareils des utilisateurs finaux découverts de manière asynchrone avec un identifiant de référence (appelédeviceDiscoveryId) généré par Managed Integrations for. AWS IoT Device Management

Flux de travail AWS.DiscoverDevices

Le schéma suivant illustre le flux de travail de découverte des appareils entre l'utilisateur final et Managed Integrations pour AWS IoT Device Management :

AWS.DiscoverDevices flux de travail
Étapes du flux de travail
  1. Le client lance le processus de découverte des appareils : le client lance le processus de découverte des appareils pour le compte de l'utilisateur final.

  2. Les intégrations gérées génèrent un identifiant de référence - Managed Integrations pour AWS IoT Device Management génère un identifiant de référence appelé deviceDiscoveryId pour la demande de découverte de l'appareil générée par le AWS client.

  3. Demande de découverte de périphérique envoyée - Managed Integrations for AWS IoT Device Management envoie une demande de découverte de périphérique au connecteur C2C à l'aide de l'interface d'AWS.DiscoverDevicesexploitation, y compris les informations d'autorisation (jeton d'accès ou AWS Secrets Manager référence OAuth) ainsi que le. deviceDiscoveryId

  4. Le connecteur enregistre le périphérique DiscoveryId : votre connecteur stocke deviceDiscoveryId pour être inclus dans l'DEVICE_DISCOVERYévénement. Cet événement contiendra également une liste des appareils de l'utilisateur final découverts et doit être envoyé à Managed Integrations for AWS IoT Device Management with the SendConnectorEvent API en tant qu'DEVICE_DISCOVERYévénement.

  5. Le connecteur appelle le serveur de ressources - Votre connecteur C2C doit appeler le serveur de ressources pour récupérer tous les appareils appartenant à l'utilisateur final.

  6. Le connecteur répond par ACK - Votre connecteur C2C Lambda répond à l'appel Lambda invokeFunction () avec la réponse ACK à Managed Integrations AWS IoT Device Management for, agissant comme réponse initiale à l'opération. AWS.DiscoverDevices Managed Integrations for AWS IoT Device Management informe le client doté d'un ACK du processus de découverte des appareils qu'il a lancé.

  7. Le serveur de ressources renvoie la liste des appareils : votre serveur de ressources vous envoie une liste des appareils détenus et exploités par l'utilisateur final.

  8. Convertir le format de l'appareil : votre connecteur convertit chaque appareil de l'utilisateur final en intégrations gérées pour le format d'appareil AWS IoT Device Management requisConnectorDeviceId, ConnectorDeviceName y compris en un rapport de capacité pour chaque appareil.

  9. Fournir UserId : le connecteur C2C fournit également le nom UserId du propriétaire des appareils découverts. Il peut être extrait de votre serveur de ressources soit dans le cadre de la liste des appareils, soit dans le cadre d'un appel distinct en fonction de l'implémentation de votre serveur de ressources.

  10. SendConnectorEvent API d'appel - Ensuite, votre connecteur C2C appellera les intégrations gérées pour l' AWS IoT Device Management APISendConnectorEvent, via SigV4 à l'aide d'informations d' Compte AWS identification et avec le paramètre de fonctionnement défini comme « DEVICE_DISCOVERY ». Chaque appareil de la liste des appareils envoyés à Managed Integrations pour AWS IoT Device Management sera représenté par des paramètres spécifiques à l'appareil tels queconnectorDeviceId,connectorDeviceName, et a. capabilityReport

    • En fonction de la réponse de votre serveur de ressources, vous devez informer Managed Integrations en AWS IoT Device Management conséquence.

    • Par exemple, si votre serveur de ressources a paginé la réponse à la liste des appareils découverts pour un utilisateur final, vous pouvez envoyer un événement d'DEVICE_DISCOVERYopération individuel pour chaque sondage, avec un statusCode paramètre de3xx. Si la découverte de votre appareil est toujours en cours, répétez les étapes 5, 6 et 7.

  11. Les intégrations gérées avertissent le client - Managed Integrations for AWS IoT Device Management envoie une notification au client concernant la découverte des appareils de l'utilisateur final.

  12. Notification d'achèvement - Si votre connecteur C2C envoie un événement de DEVICE_DISCOVERY fonctionnement avec le statusCode paramètre mis à jour avec une valeur de 200, Managed Integrations for AWS IoT Device Management informera le client de la fin du flux de travail de découverte des appareils.

Important

Les étapes 7 à 11 peuvent avoir lieu avant l'étape 6, si vous le souhaitez. Par exemple, si votre plate-forme tierce dispose d'une API pour répertorier les appareils d'un utilisateur final, l'événement DEVICE_DISCOVERY peut être envoyé SendConnectorEvent avant que le connecteur Lambda C2C ne réponde avec l'ACK typique.

Exigences relatives au connecteur C2C pour Device Discovery

La liste suivante décrit les exigences relatives à votre connecteur C2C afin de faciliter la découverte réussie des appareils :

  • Le connecteur Lambda C2C peut traiter un message de demande de découverte d'appareil provenant de Managed Integrations et gérer AWS IoT Device Management l'opération. AWS.DiscoverDevices

  • Votre connecteur C2C peut appeler les intégrations gérées pour les AWS IoT Device Management API via SigV4 en utilisant les informations d'identification du connecteur Compte AWS utilisé pour enregistrer le connecteur.

Processus de découverte des appareils

Étape 1 : Les intégrations gérées déclenchent la découverte des appareils

Envoyez une requête POST à DiscoverDevices avec l'une des charges utiles JSON suivantes, en fonction du type d'autorisation :

Demande OAuth 2.0 :

/DiscoverDevices { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
Note

Le connectorDeviceIdList paramètre est un filtre facultatif qui vous permet de spécifier une liste d'identifiants d'appareils à découvrir. Lorsque le champ est vide ([]), tous les appareils associés au compte seront découverts. Lorsqu'ils sont renseignés avec des identifiants d'appareils spécifiques, seuls ces appareils seront inclus dans la réponse de découverte.

Demande d'autorisation générale :

/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
Note

Le connectorDeviceIdList paramètre est un filtre facultatif qui vous permet de spécifier une liste d'identifiants d'appareils à découvrir. Lorsque le champ est vide ([]), tous les appareils associés au compte seront découverts. Lorsqu'ils sont renseignés avec des identifiants d'appareils spécifiques, seuls ces appareils seront inclus dans la réponse de découverte.

Demande d'autorisation générale :

/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
Note

Le connectorDeviceIdList paramètre est un filtre facultatif qui vous permet de spécifier une liste d'identifiants d'appareils à découvrir. Lorsque le champ est vide ([]), tous les appareils associés au compte seront découverts. Lorsqu'ils sont renseignés avec des identifiants d'appareils spécifiques, seuls ces appareils seront inclus dans la réponse de découverte.

Étape 2 : Le connecteur confirme la découverte

Le connecteur envoie un accusé de réception avec la réponse JSON suivante :

{ "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }

Étape 3 : Le connecteur envoie un événement de découverte du périphérique

Envoyez une requête POST à /connector-event/{your_connector_id} avec la charge utile JSON suivante :

AWS API - /SendConnectorEvent URI – POST /connector-event/{your_connector_id} { "UserId": "6109342", "Operation": "DEVICE_DISCOVERY", "OperationVersion": "1.0", "StatusCode": 200, "DeviceDiscoveryId": "12345678", "ConnectorId": "Your_connector_Id", "Message": "Device discovery for discovery-job-id '12345678' successful", "Devices": [ { "ConnectorDeviceId": "Your_Device_Id_1", "ConnectorDeviceName": "Your-Device-Name", "CapabilityReport": { "nodeId":"1", "version":"1.0.0", "endpoints":[{ "id":"1", "deviceTypes":["Camera"], "clusters":[{ "id":"0x0006", "revision":1, "attributes":[{ "id":"0x0000", }], "commands":["0x00","0x01"], "events":["0x00"] }] }] } } ] }

Renseignez la marque et le modèle des appareils découverts

Votre connecteur C2C peut éventuellement inclure un DeviceMetadata objet pour chaque appareil afin de DEVICE_DISCOVERY signaler la marque et le modèle de l'appareil. Ces valeurs sont ensuite renvoyées dans les ListManagedThingsréponses ListDiscoveredDeviceset.

Incluez un DeviceMetadata objet dans chaque entrée d'appareil et cartographiez :

  • DeviceMetadata.Brand(Chaîne) → Brand

  • DeviceMetadata.Model(Chaîne) → Model

L'exemple suivant montre une entrée d'appareil avec la mention « DeviceMetadata inclus » :

{ "ConnectorDeviceId": "Your_Device_Id_1", "ConnectorDeviceName": "Your-Device-Name", "CapabilityReport": { ... }, "DeviceMetadata": { "Brand": "ExampleBrand", "Model": "ExampleModel-X1" } }

Les deux touches sont des chaînes distinguant majuscules et minuscules. Si vous omettezDeviceMetadata, omettez une clé individuelle ou fournissez une valeur autre qu'une chaîne, le champ correspondant n'est pas disponible lorsque le périphérique est récupéré.

Construit un CapabilityReport pour l'événement DISCOVER_DEVICES

Comme le montre la structure d'événements définie ci-dessus, chaque appareil signalé dans un événement DISCOVER_DEVICES, servant de réponse à une AWS.DiscoverDevices opération, aura besoin d'un CapbilityReport pour décrire les capacités du périphérique correspondant. Un CapabilityReport `indique les intégrations gérées pour les fonctionnalités des appareils AWS IoT Device Management dans un format compatible avec Matter.

Champs obligatoires dans CapabilityReport
  • nodeId, String : identifiant du nœud de l'appareil contenant les éléments suivants endpoints

  • version, String : version de ce nœud de périphérique, définie par le développeur du connecteur

  • endpoints, Liste <Cluster>: liste des AWS implémentations du modèle de données Matter prises en charge par ce point de terminaison de l'appareil.

    • id, String : identifiant du point de terminaison défini par le développeur du connecteur

    • deviceTypes, Liste <String>: Liste des types d'appareils capturés par ce terminal, c'est-à-dire « Appareil photo ».

    • clusters, Liste <Cluster>: liste des AWS implémentations du modèle de données Matter pris en charge par ce point de terminaison.

      • id, String : identifiant du cluster tel que défini par la norme Matter.

      • revision, Integer : numéro de révision du cluster tel que défini par la norme Matter.

      • attributes, Carte<String, Object> : carte des identifiants d'attributs et de leurs valeurs d'état actuelles de l'appareil correspondantes, avec les identifiants et les valeurs valides définis par la norme en la matière.

        • id, String : ID d'attribut tel que défini par AWS les implémentations du modèle de données Matter.

        • value, Objet : valeur actuelle de l'attribut défini par l'ID de l'attribut. Le type de « valeur » peut changer en fonction de l'attribut. Le value champ est facultatif pour chaque attribut et ne doit être inclus que si votre connecteur lambda peut déterminer l'état actuel lors de la découverte.

      • commands, Liste <String>: liste des identifiants de commande pris en charge par ce cluster, telle que définie par la norme Matter.

      • events, Liste <String>: liste des identifiants d'événements pris en charge par ce cluster, telle que définie par la norme Matter.

Pour la liste actuelle des fonctionnalités prises en charge et leurs AWS implémentations correspondantes du modèle de données de matière, reportez-vous à la dernière version de la documentation du modèle de données.