Implemente AWS. DiscoverDevices operación - Integraciones gestionadas para AWS IoT Device Management

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente AWS. DiscoverDevices operación

La detección de dispositivos alinea la lista de dispositivos físicos propiedad del usuario final con las representaciones digitales de esos dispositivos de usuario final mantenidas en las integraciones administradas para AWS IoT Device Management. Lo realiza un AWS cliente en dispositivos propiedad del usuario final solo después de que se haya completado la vinculación de la cuenta entre el usuario y las integraciones administradas para AWS IoT Device Management. La detección de dispositivos es un proceso asíncrono en el que las integraciones administradas de AWS IoT Device Management llaman a un conector para iniciar la solicitud de detección de dispositivos. Un conector C2C devuelve una lista de los dispositivos de los usuarios finales detectados de forma asíncrona con un identificador de referencia (denominado «) generado por las integraciones administradas. deviceDiscoveryId

El siguiente diagrama ilustra el flujo de trabajo de descubrimiento de dispositivos entre el usuario final y las integraciones gestionadas para AWS IoT Device Management:

AWS. DiscoverDevices flujo de trabajo
AWS. DiscoverDevices flujo de trabajo
  1. El cliente inicia el proceso de descubrimiento del dispositivo en nombre del usuario final.

  2. Las integraciones gestionadas AWS IoT Device Management generan un identificador de referencia utilizado deviceDiscoveryId para la solicitud de descubrimiento del dispositivo generada por el AWS cliente.

  3. Integraciones gestionadas para AWS IoT Device Management enviar una solicitud de descubrimiento de dispositivos al conector C2C mediante la interfaz de AWS.DiscoverDevices operación, incluida una válida OAuth accessToken del usuario final y la. deviceDiscoveryId

  4. Su conector se almacenará deviceDiscoveryId para ser incluido en el DEVICE_DISCOVERY evento. Este evento también contendrá una lista de los dispositivos de los usuarios finales descubiertos y, como DEVICE_DISCOVERY evento, debe enviarse a las integraciones gestionadas de AWS IoT Device Management con la SendConnectorEvent API.

  5. El conector C2C llamará al servidor de recursos para buscar todos los dispositivos propiedad del usuario final.

  6. Su conector C2C Lambda responde a la invocación de Lambda invokeFunction () y la respuesta ACK se devuelve a las integraciones administradas para AWS IoT Device Management, que actúa como respuesta inicial para la operación. AWS.DiscoverDevices Managed Integrations notifica al cliente mediante un ACK el proceso de descubrimiento de dispositivos que ha iniciado.

  7. El servidor de recursos le envía una lista de los dispositivos que son propiedad del usuario final y que son operados por él.

  8. El conector convierte cada dispositivo del usuario final en las integraciones administradas para el formato de dispositivo requerido por AWS IoT Device ManagementConnectorDeviceId, ConnectorDeviceName incluido un informe de capacidad para cada dispositivo.

  9. El conector C2C también proporciona información sobre el UserId propietario del dispositivo descubierto. Se puede recuperar del servidor de recursos como parte de la lista de dispositivos o mediante una llamada independiente, según la implementación del servidor de recursos.

  10. A continuación, su conector C2C llamará a las integraciones administradas de la API AWS IoT Device Management mediante SigV4 mediante Cuenta de AWS credenciales y con los parámetros de operación establecidos como «DEVICE_DISCOVERY». SendConnectorEvent Cada dispositivo de la lista de dispositivos enviados a las integraciones administradas para AWS IoT Device Management se representará mediante parámetros específicos del dispositivoconnectorDeviceId, comoconnectorDeviceName, y a. capabilityReport

    1. En función de la respuesta del servidor de recursos, debe notificar en consecuencia las integraciones gestionadas de AWS IoT Device Management.

      Por ejemplo, si su servidor de recursos tiene una respuesta paginada a la lista de dispositivos descubiertos para un usuario final, puede enviar un evento DEVICE_DISCOVERY operativo individual para cada encuesta, con un statusCode parámetro de. 3xx Si el descubrimiento del dispositivo aún está en proceso, repita los pasos 5, 6 y 7.

  11. Integraciones gestionadas para AWS IoT Device Management enviar una notificación al cliente sobre los dispositivos descubiertos por el usuario final.

  12. Si su conector C2C envía un evento de DEVICE_DISCOVERY operación con el statusCode parámetro actualizado con un valor de 200, las integraciones gestionadas notificarán al cliente la finalización del flujo de trabajo de detección del dispositivo.

    importante

    Si lo desea, los pasos 7 a 11 pueden realizarse antes del paso 6. Por ejemplo, si su plataforma de terceros tiene una API para enumerar los dispositivos de un usuario final, el evento DEVICE_DISCOVERY se puede enviar SendConnectorEvent antes de que el conector C2C Lambda responda con el ACK típico.

Requisitos del conector C2C para la detección de dispositivos

En la siguiente lista se describen los requisitos del conector C2C para facilitar la detección correcta del dispositivo.

  • El conector C2C Lambda a puede procesar un mensaje de solicitud de descubrimiento de dispositivos desde integraciones administradas para AWS IoT Device Management y gestionar la operación. AWS.DiscoverDevices

  • Su conector C2C puede llamar a las integraciones gestionadas de AWS IoT Device Management APIs mediante SiGv4 con las credenciales Cuenta de AWS utilizadas para registrar el conector.

Proceso de descubrimiento de dispositivos

Los siguientes pasos describen el proceso de descubrimiento de dispositivos con su conector C2C y las integraciones administradas para AWS IoT Device Management.

Proceso de descubrimiento de dispositivos
  1. Las integraciones gestionadas activan el descubrimiento del dispositivo:

    1. Envía una solicitud POST a DiscoverDevices con la siguiente carga útil JSON:

      /DiscoverDevices { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678" } }
  2. El conector confirma el descubrimiento:

    1. El conector envía un acuse de recibo con la siguiente respuesta JSON:

      { "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }
  3. El conector envía el evento de detección de dispositivos:

    1. Envíe una solicitud POST a /connector-event/{your_connector_id} con la siguiente carga útil JSON:

      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"] }] }] } } ] }

Construye una CapabilityReport para el evento DISCOVER_DEVICES

Como se ve en la estructura de eventos definida anteriormente, cada dispositivo registrado en un evento DISCOVER_DEVICES, que sirva como respuesta a una AWS.DiscoverDevices operación, necesitará describir las capacidades del dispositivo correspondiente. CapbilityReport A `CapabilityReport` indica las integraciones gestionadas de las capacidades de los dispositivos AWS IoT Device Management en un formato compatible con Matter. Se deben proporcionar los siguientes campos en el ` CapabilityReport`:

  • nodeId, String: identificador del nodo del dispositivo que contiene lo siguiente endpoints

  • version, String: versión de este nodo de dispositivo, establecida por el desarrollador del conector

  • endpoints, Lista<Cluster>: Lista de AWS implementaciones del modelo de datos de materia compatibles con este punto final del dispositivo.

    • id, String: identificador de punto final establecido por el desarrollador del conector

    • deviceTypes, Lista<String>: lista de los tipos de dispositivos que captura este terminal, es decir, «Cámara».

    • clusters, Lista<Cluster>: Lista de AWS implementaciones del modelo de datos de materia compatible con este punto final.

      • id, String: identificador de clúster según lo define el estándar Matter.

      • revision, Entero: número de revisión del clúster tal como se define en el estándar Matter.

      • attributes, Mapa<String, Object>: mapa de los identificadores de atributos y sus correspondientes valores de estado actual del dispositivo, con los identificadores y los valores válidos definidos por el estándar de la materia.

        • id, String: ID de atributo tal como se define en AWS las implementaciones del modelo de datos de materia.

        • value, Objeto: el valor actual del atributo definido por el ID del atributo. El tipo de «valor» puede cambiar en función del atributo. El value campo es opcional para cada atributo y solo debe incluirse si el conector lambda puede determinar el estado actual durante el descubrimiento.

      • commands, Lista<String>: la lista de comandos IDs compatible con este clúster, tal como se define en el estándar Matter.

      • events, Lista<String>: la lista de eventos es IDs compatible con este clúster, tal como se define en el estándar Matter.

Para ver la lista actual de capacidades compatibles y sus correspondientes AWS implementaciones del modelo de datos Matter, consulte la última versión de la documentación del modelo de datos.