View a markdown version of this page

Implementare l' AWS.DiscoverDevices operazione - Integrazioni gestite per AWS IoT Device Management

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementare l' AWS.DiscoverDevices operazione

Device Discovery allinea l'elenco dei dispositivi fisici di proprietà dell'utente finale con le rappresentazioni digitali di tali dispositivi degli utenti finali gestite in Managed Integrations for. AWS IoT Device Management Viene eseguito da un AWS cliente su dispositivi di proprietà dell'utente finale. Per OAuth 2.0, ciò si verifica dopo il completamento del collegamento dell'account. Per l'autorizzazione generale, ciò può verificarsi dopo la creazione dell'associazione dell'account.

Il rilevamento dei dispositivi è un processo asincrono in cui Managed Integrations for AWS IoT Device Management richiama un connettore per avviare la richiesta di rilevamento del dispositivo. Un connettore C2C restituisce un elenco di dispositivi degli utenti finali rilevati in modo asincrono con un identificatore di riferimento (denominato) generato da Managed Integrations for. deviceDiscoveryId AWS IoT Device Management

Flusso di lavoro di AWS.DiscoverDevices

Il diagramma seguente illustra il flusso di lavoro di individuazione dei dispositivi tra l'utente finale e Managed Integrations per: AWS IoT Device Management

AWS.DiscoverDevices flusso di lavoro
Fasi del flusso di lavoro
  1. Il cliente avvia il processo di rilevamento del dispositivo: il cliente avvia il processo di rilevamento del dispositivo per conto dell'utente finale.

  2. Le integrazioni gestite generano un ID di riferimento - Managed Integrations per AWS IoT Device Management generare un identificatore di riferimento chiamato deviceDiscoveryId per la richiesta di rilevamento del dispositivo generata dal Cliente. AWS

  3. Richiesta di rilevamento del dispositivo inviata: Managed Integrations for AWS IoT Device Management invia una richiesta di rilevamento del dispositivo al connettore C2C utilizzando l'interfaccia AWS.DiscoverDevices operativa, incluse le informazioni di autorizzazione (token o riferimento di accesso OAuth) e il. AWS Secrets Manager deviceDiscoveryId

  4. Il connettore memorizza il dispositivo DiscoveryId: gli archivi dei connettori deviceDiscoveryId da includere nell'evento. DEVICE_DISCOVERY Questo evento conterrà anche un elenco dei dispositivi dell'utente finale rilevati e deve essere inviato a Managed Integrations for AWS IoT Device Management with the SendConnectorEvent API come DEVICE_DISCOVERY evento.

  5. Il connettore chiama il server di risorse: il connettore C2C chiamerà il server di risorse per recuperare tutti i dispositivi di proprietà dell'utente finale.

  6. Il connettore risponde con ACK - Il connettore C2C Lambda risponde all'invocazione Lambda (invokeFunction) con la risposta ACK a Managed Integrations for, fungendo da risposta iniziale per l'operazione. AWS IoT Device ManagementAWS.DiscoverDevices Managed Integrations for AWS IoT Device Management notifica al cliente con un ACK il processo di scoperta del dispositivo avviato.

  7. Il server di risorse restituisce l'elenco dei dispositivi: il server di risorse invia un elenco di dispositivi di proprietà e gestiti dall'utente finale.

  8. Converti il formato del dispositivo: il connettore converte ogni dispositivo dell'utente finale nelle integrazioni gestite per il formato del dispositivo AWS IoT Device Management richiestoConnectorDeviceId, ConnectorDeviceName incluso il rapporto sulle funzionalità per ciascun dispositivo.

  9. Fornisci UserId: il connettore C2C fornisce anche informazioni sul proprietario UserId dei dispositivi rilevati. Può essere recuperato dal server di risorse come parte dell'elenco dei dispositivi o in una chiamata separata a seconda dell'implementazione del server di risorse.

  10. Chiama SendConnectorEvent API - Successivamente, il connettore C2C chiamerà Managed Integrations for AWS IoT Device Management APISendConnectorEvent, tramite SigV4 utilizzando le Account AWS credenziali e con il parametro operativo impostato come «DEVICE_DISCOVERY». Ogni dispositivo nell'elenco dei dispositivi inviati a Managed Integrations per AWS IoT Device Management sarà rappresentato da parametri specifici del dispositivo come, e a. connectorDeviceId connectorDeviceName capabilityReport

    • In base alla risposta del server di risorse, devi notificare di conseguenza a Managed Integrations. AWS IoT Device Management

    • Ad esempio, se il tuo server di risorse ha una risposta in pagine all'elenco dei dispositivi rilevati per un utente finale, per ogni sondaggio puoi inviare un singolo evento DEVICE_DISCOVERY operativo, con un parametro di. statusCode 3xx Se il rilevamento dei dispositivi è ancora in corso, ripeti i passaggi 5, 6 e 7.

  11. Managed Integrations avvisa il cliente - Managed Integrations for AWS IoT Device Management invia una notifica al cliente in merito al rilevamento dei dispositivi dell'utente finale.

  12. Notifica di completamento: se il connettore C2C invia un evento DEVICE_DISCOVERY operativo con il statusCode parametro aggiornato con un valore di 200, Managed Integrations for AWS IoT Device Management notificherà al cliente il completamento del flusso di lavoro di individuazione dei dispositivi.

Importante

Se lo si desidera, i passaggi da 7 a 11 possono verificarsi prima del passaggio 6. Ad esempio, se la piattaforma di terze parti dispone di un'API per elencare i dispositivi di un utente finale, l'evento DEVICE_DISCOVERY può essere inviato SendConnectorEvent prima che il connettore C2C Lambda risponda con il tipico ACK.

Requisiti del connettore C2C per Device Discovery

L'elenco seguente descrive i requisiti del connettore C2C per facilitare la corretta individuazione del dispositivo:

  • Il connettore C2C Lambda può elaborare un messaggio di richiesta di rilevamento del dispositivo da Managed Integrations e gestire l' AWS IoT Device Management operazione. AWS.DiscoverDevices

  • Il connettore C2C può chiamare Managed Integrations for AWS IoT Device Management APIs tramite SigV4 utilizzando le credenziali del connettore utilizzato per la registrazione del connettore. Account AWS

Processo di individuazione dei dispositivi

Fase 1: Le integrazioni gestite attivano l'individuazione dei dispositivi

Invia una richiesta POST a DiscoverDevices con uno dei seguenti payload JSON, a seconda del tipo di autorizzazione:

Richiesta 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

Il connectorDeviceIdList parametro è un filtro opzionale che consente di specificare un elenco di ID di dispositivo da scoprire. Quando è vuoto ([]), verranno rilevati tutti i dispositivi associati all'account. Se compilati con ID di dispositivo specifici, solo tali dispositivi verranno inclusi nella risposta di rilevamento.

Richiesta di autorizzazione generale:

/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

Il connectorDeviceIdList parametro è un filtro opzionale che consente di specificare un elenco di ID di dispositivo da scoprire. Quando è vuoto ([]), verranno rilevati tutti i dispositivi associati all'account. Se compilati con ID di dispositivo specifici, solo tali dispositivi verranno inclusi nella risposta di rilevamento.

Richiesta di autorizzazione generale:

/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

Il connectorDeviceIdList parametro è un filtro opzionale che consente di specificare un elenco di ID di dispositivo da scoprire. Quando è vuoto ([]), verranno rilevati tutti i dispositivi associati all'account. Se compilati con ID di dispositivo specifici, solo tali dispositivi verranno inclusi nella risposta di rilevamento.

Fase 2: Connector conferma la scoperta

Il connettore invia una conferma con la seguente risposta JSON:

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

Fase 3: Il connettore invia un evento di rilevamento del dispositivo

Invia una richiesta POST a /connector-event/{your_connector_id} con il seguente payload 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"] }] }] } } ] }

Inserisci marca e modello per i dispositivi rilevati

Il connettore C2C può facoltativamente includere un DeviceMetadata oggetto per ogni dispositivo in DEVICE_DISCOVERY caso di segnalazione della marca e del modello del dispositivo. Questi valori vengono quindi restituiti nelle risposte e. ListDiscoveredDevicesListManagedThings

Includi un DeviceMetadata oggetto in ogni voce e mappa del dispositivo:

  • DeviceMetadata.Brand(Stringa) → Brand

  • DeviceMetadata.Model(Stringa) → Model

L'esempio seguente mostra una voce relativa al dispositivo con DeviceMetadata included:

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

Entrambi i tasti fanno distinzione tra maiuscole e minuscole. Se si ometteDeviceMetadata, si omette una singola chiave o si fornisce un valore non di stringa, il campo corrispondente non è disponibile quando il dispositivo viene recuperato.

Costruisci un per l'evento DISCOVER_DEVICES CapabilityReport

Come illustrato nella struttura degli eventi sopra definita, ogni dispositivo segnalato in un evento DISCOVER_DEVICES, che funge da risposta a un'AWS.DiscoverDevicesoperazione, richiederà una CapbilityReport descrizione delle funzionalità del dispositivo corrispondente. Un `CapabilityReport` indica le integrazioni gestite per le funzionalità dei dispositivi AWS IoT Device Management in un formato conforme a Matter.

Campi obbligatori in CapabilityReport
  • nodeId, String: identificatore per il nodo dei dispositivi contenente quanto segue endpoints

  • version, String: versione di questo nodo del dispositivo, impostata dallo sviluppatore del connettore

  • endpoints, Elenco<Cluster>: Elenco delle AWS implementazioni del Matter Data Model supportate da questo endpoint del dispositivo.

    • id, String: identificatore dell'endpoint impostato dallo sviluppatore del connettore

    • deviceTypes, Elenco<String>: elenco dei tipi di dispositivi acquisiti da questo endpoint, ad esempio «Fotocamera».

    • clusters, Elenco<Cluster>: Elenco delle AWS implementazioni del Matter Data Model supportate da questo endpoint.

      • id, String: identificatore del cluster come definito dallo standard Matter.

      • revision, Numero intero: numero di revisione del cluster definito dallo standard Matter.

      • attributes, Mappa<String, Object>: mappa degli identificatori degli attributi e dei corrispondenti valori di stato correnti del dispositivo, con identificatori e valori validi definiti dallo standard Matter.

        • id, String: ID dell'attributo definito dalle AWS implementazioni del Matter Data Model.

        • value, Oggetto: il valore corrente dell'attributo definito dall'attributo ID. Il tipo di «valore» può cambiare a seconda dell'attributo. Il value campo è facoltativo per ogni attributo e deve essere incluso solo se il connettore lambda è in grado di determinare lo stato corrente durante il rilevamento.

      • commands, Elenco<String>: Elenco degli ID di comando supportati da questo cluster come definito dallo standard Matter.

      • events, Elenco<String>: Elenco degli ID di evento supportati da questo cluster come definito dallo standard Matter.

Per l'elenco corrente delle funzionalità supportate e le relative AWS implementazioni del Matter Data Model, fate riferimento all'ultima versione della documentazione del modello di dati.