As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implemente a AWS.DiscoverDevices operação
A descoberta de dispositivos alinha a lista de dispositivos físicos de propriedade do usuário final com as representações digitais desses dispositivos de usuário final mantidas em Integrações gerenciadas para. AWS IoT Device Management Ela é executada por um AWS cliente em dispositivos pertencentes ao usuário final. Para o OAuth 2.0, isso ocorre após a conclusão da vinculação da conta. Para a Autorização Geral, isso pode ocorrer após a criação da associação da conta.
A descoberta de dispositivos é um processo assíncrono em que as integrações gerenciadas AWS IoT Device Management chamam um conector para iniciar a solicitação de descoberta do dispositivo. Um conector C2C retorna uma lista de dispositivos de usuário final descobertos de forma assíncrona com um identificador de referência (chamado dedeviceDiscoveryId) gerado pelo Managed Integrations for. AWS IoT Device Management
Fluxo de trabalho do AWS.DiscoverDevices
O diagrama a seguir ilustra o fluxo de trabalho de descoberta de dispositivos entre o usuário final e as integrações gerenciadas para: AWS IoT Device Management
Etapas do fluxo de trabalho
-
O cliente inicia a descoberta do dispositivo - O cliente inicia o processo de descoberta do dispositivo em nome do usuário final.
-
Integrações gerenciadas geram ID de referência - Integrações gerenciadas para AWS IoT Device Management gerar um identificador de referência chamado
deviceDiscoveryIdpara a solicitação de descoberta do dispositivo gerada pelo AWS Cliente. -
Solicitação de descoberta de dispositivo enviada - Integrações gerenciadas para AWS IoT Device Management enviar uma solicitação de descoberta de dispositivo ao conector C2C usando a interface de
AWS.DiscoverDevicesoperação, incluindo informações de autorização (token de acesso ou AWS Secrets Manager referência do OAuth), bem como o.deviceDiscoveryId -
O conector armazena o dispositivo DiscoveryId - Seu conector armazena
deviceDiscoveryIdpara ser incluído noDEVICE_DISCOVERYevento. Esse evento também conterá uma lista dos dispositivos do usuário final descobertos e deverá ser enviado às Integrações Gerenciadas para que AWS IoT Device Management aSendConnectorEventAPI seja umDEVICE_DISCOVERYevento. -
O conector chama o servidor de recursos - Seu conector C2C deve chamar o servidor de recursos para buscar todos os dispositivos pertencentes ao usuário final.
-
O conector responde com ACK - Seu conector C2C Lambda responde à invocação do Lambda (
invokeFunction) com a resposta ACK de volta ao Managed Integrations for, atuando como a resposta inicial para a operação. AWS IoT Device ManagementAWS.DiscoverDevicesIntegrações gerenciadas para AWS IoT Device Management notificar o cliente com um ACK sobre o processo iniciado de descoberta de dispositivos. -
O servidor de recursos retorna a lista de dispositivos - Seu servidor de recursos envia a você uma lista de dispositivos pertencentes e operados pelo usuário final.
-
Converter formato do dispositivo - Seu conector converte cada dispositivo do usuário final nas integrações gerenciadas para o formato de dispositivo AWS IoT Device Management necessário
ConnectorDeviceId, incluindo um relatórioConnectorDeviceNamede capacidade para cada dispositivo. -
Fornecer UserId - O conector C2C também fornece informações sobre o
UserIdproprietário do dispositivo descoberto. Ele pode ser recuperado do seu servidor de recursos como parte da lista de dispositivos ou em uma chamada separada, dependendo da implementação do servidor de recursos. -
SendConnectorEvent API de chamada - Em seguida, seu conector C2C chamará as Integrações Gerenciadas para AWS IoT Device Management API
SendConnectorEvent, via SigV4 usando Conta da AWS credenciais e com o parâmetro de operação definido como “DEVICE_DISCOVERY”. Cada dispositivo na lista de dispositivos enviados para Integrações Gerenciadas AWS IoT Device Management será representado por parâmetros específicos do dispositivoconnectorDeviceId, como,connectorDeviceNamee a.capabilityReport-
Com base na resposta do servidor de recursos, você precisa notificar as integrações gerenciadas AWS IoT Device Management adequadamente.
-
Por exemplo, se seu servidor de recursos tiver uma resposta paginada à lista de dispositivos descobertos de um usuário final, para cada pesquisa você poderá enviar um evento de
DEVICE_DISCOVERYoperação individual, com umstatusCodeparâmetro de.3xxSe a descoberta do dispositivo ainda estiver em andamento, repita as etapas 5, 6 e 7.
-
-
Integrações gerenciadas notificam o cliente - Integrações gerenciadas AWS IoT Device Management enviam uma notificação ao cliente sobre a descoberta dos dispositivos do usuário final.
-
Notificação de conclusão - Se seu conector C2C enviar um evento de
DEVICE_DISCOVERYoperação com ostatusCodeparâmetro atualizado com um valor de 200, o Managed Integrations for AWS IoT Device Management notificará o cliente sobre a conclusão do fluxo de trabalho de descoberta do dispositivo.
Importante
As etapas 7 a 11 podem ocorrer antes da etapa 6, se desejado. Por exemplo, se sua plataforma de terceiros tiver uma API para listar os dispositivos de um usuário final, o evento DEVICE_DISCOVERY poderá ser enviado SendConnectorEvent antes que o conector C2C Lambda responda com o ACK típico.
Requisitos do conector C2C para descoberta de dispositivos
A lista a seguir descreve os requisitos do seu conector C2C para facilitar a descoberta bem-sucedida do dispositivo:
-
O conector C2C Lambda pode processar uma mensagem de solicitação de descoberta de dispositivo do Managed Integrations e lidar com a operação. AWS IoT Device Management
AWS.DiscoverDevices -
Seu conector C2C pode chamar as integrações gerenciadas para AWS IoT Device Management APIs via SigV4 usando as credenciais do usuário para registrar o conector. Conta da AWS
Processo de descoberta de dispositivos
Etapa 1: integrações gerenciadas acionam a descoberta de dispositivos
Envie uma solicitação POST para DiscoverDevices com uma das seguintes cargas JSON, dependendo do tipo de autorização:
Solicitação do 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": [] } }
nota
O connectorDeviceIdList parâmetro é um filtro opcional que permite especificar uma lista de IDs de dispositivos a serem descobertos. Quando estiver vazio ([]), todos os dispositivos associados à conta serão descobertos. Quando preenchidos com IDs de dispositivos específicos, somente esses dispositivos serão incluídos na resposta de descoberta.
Solicitação de autorização geral:
/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
nota
O connectorDeviceIdList parâmetro é um filtro opcional que permite especificar uma lista de IDs de dispositivos a serem descobertos. Quando estiver vazio ([]), todos os dispositivos associados à conta serão descobertos. Quando preenchidos com IDs de dispositivos específicos, somente esses dispositivos serão incluídos na resposta de descoberta.
Solicitação de autorização geral:
/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
nota
O connectorDeviceIdList parâmetro é um filtro opcional que permite especificar uma lista de IDs de dispositivos a serem descobertos. Quando estiver vazio ([]), todos os dispositivos associados à conta serão descobertos. Quando preenchidos com IDs de dispositivos específicos, somente esses dispositivos serão incluídos na resposta de descoberta.
Etapa 2: O conector confirma a descoberta
O conector envia uma confirmação com a seguinte resposta JSON:
{ "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }
Etapa 3: O conector envia o evento de descoberta do dispositivo
Envie uma solicitação POST para /connector-event/ com a seguinte carga JSON:{your_connector_id}
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"] }] }] } } ] }
Preencha a marca e o modelo dos dispositivos descobertos
Seu conector C2C pode, opcionalmente, incluir um DeviceMetadata objeto para cada dispositivo no DEVICE_DISCOVERY evento para relatar a marca e o modelo do dispositivo. Esses valores são então retornados nas ListManagedThingsrespostas ListDiscoveredDevicese.
Inclua um DeviceMetadata objeto em cada entrada e mapa do dispositivo:
-
DeviceMetadata.Brand(Sequência de caracteres) →Brand -
DeviceMetadata.Model(Sequência de caracteres) →Model
O exemplo a seguir mostra uma entrada de dispositivo DeviceMetadata incluída:
{ "ConnectorDeviceId": "Your_Device_Id_1", "ConnectorDeviceName": "Your-Device-Name", "CapabilityReport": { ... }, "DeviceMetadata": { "Brand": "ExampleBrand", "Model": "ExampleModel-X1" } }
Ambas as teclas fazem distinção entre maiúsculas e minúsculas. Se você omitirDeviceMetadata, omitir uma chave individual ou fornecer um valor que não seja uma string, o campo correspondente não estará disponível quando o dispositivo for recuperado.
Construa um CapabilityReport para o evento DISCOVER_DEVICES
Conforme visto na estrutura de eventos definida acima, cada dispositivo relatado em um evento DISCOVER_DEVICES, servindo como resposta a uma AWS.DiscoverDevices operação, exigirá CapbilityReport a descrição dos recursos do dispositivo correspondente. Um `CapabilityReport` indica integrações gerenciadas para os recursos do dispositivo AWS IoT Device Management em um formato compatível com Matter.
Campos obrigatórios em CapabilityReport
-
nodeId, String: identificador do nó do dispositivo contendo o seguinteendpoints -
version, String: versão deste nó do dispositivo, definida pelo desenvolvedor do conector -
endpoints, Lista<Cluster>: Lista de AWS implementações do Matter Data Model suportadas por esse endpoint de dispositivo.-
id, String: identificador de endpoint definido pelo desenvolvedor do conector -
deviceTypes, Lista<String>: lista dos tipos de dispositivos que esse endpoint captura, ou seja, “Câmera”. -
clusters, Lista<Cluster>: Lista de AWS implementações do Matter Data Model que esse endpoint suporta.-
id, String: identificador de cluster conforme definido pelo padrão Matter. -
revision, Integer: número da revisão do cluster conforme definido pelo padrão Matter. -
attributes, Mapa<String, Object>: Mapa dos identificadores de atributos e seus valores correspondentes do estado atual do dispositivo, com identificadores e valores válidos definidos pelo padrão da matéria.-
id, String: ID do atributo conforme definido pelas AWS implementações do Matter Data Model. -
value, Objeto: o valor atual do atributo definido pelo ID do atributo. O tipo de 'valor' pode mudar dependendo do atributo. Ovaluecampo é opcional para cada atributo e só deve ser incluído se o conector lambda puder determinar o estado atual durante a descoberta.
-
-
commands, Lista<String>: lista de IDs de comando compatíveis com esse cluster, conforme definido pelo padrão Matter. -
events, Lista<String>: Lista de IDs de eventos compatíveis com esse cluster, conforme definido pelo padrão Matter.
-
-
Para obter a lista atual de recursos suportados e suas AWS implementações correspondentes do Matter Data Model, consulte a versão mais recente da documentação do Data Model.