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.SendCommand operazione
L'AWS.SendCommandoperazione consente a Managed Integrations AWS IoT Device Management di inviare comandi avviati dall'utente finale tramite il AWS cliente al server di risorse. Il server di risorse può supportare più tipi di dispositivi, ognuno dei quali ha il proprio modello di risposta.
L'esecuzione dei comandi è un processo asincrono in cui Managed Integrations for AWS IoT Device Management invia una richiesta di esecuzione del comando con untraceId, che il connettore includerà in una risposta al comando rinviata a Managed Integrations per tramite l'API. AWS IoT Device Management SendConnectorEvent Managed Integrations for AWS IoT Device Management prevede che il server di risorse restituisca una risposta che confermi che il comando è stato ricevuto, ma non indichi necessariamente che il comando è stato eseguito.
Workflow di esecuzione dei comandi del dispositivo
Il diagramma seguente illustra il flusso di esecuzione del comando con un esempio in cui l'utente finale tenta di accendere le luci della propria casa:
Fasi del flusso di lavoro
-
L'utente finale invia un comando: un utente finale invia un comando per accendere una luce utilizzando l'applicazione del AWS cliente.
-
Il cliente trasmette il comando: il cliente trasmette le informazioni sul comando a Managed Integrations per unirle AWS IoT Device Management alle informazioni sul dispositivo dell'utente finale.
-
Le integrazioni gestite generano TraceID: integrazioni gestite AWS IoT Device Management per generare «traceID» che il connettore utilizzerà durante l'invio delle risposte ai comandi al servizio.
-
Richiesta di comando inviata al connettore - Managed Integrations for AWS IoT Device Management invia la richiesta di comando al connettore, utilizzando l'interfaccia operativa.
AWS.SendCommand-
Il payload definito da questa interfaccia è costituito dall'identificatore del dispositivo, dai comandi del dispositivo formulati come Matter endpoints/clusters /commands, dal token di accesso dell'utente finale e da altri parametri richiesti.
-
-
Il connettore memorizza il traceID: il connettore memorizza
traceIdil codice da includere nella risposta al comando.-
Il connettore traduce le integrazioni gestite per la richiesta di AWS IoT Device Management comando nel formato appropriato del server di risorse.
-
-
Il connettore ottiene UserId: il connettore riceve
UserIddal token di accesso fornito dall'utente finale e lo associa al comando.-
UserIdPuò essere recuperato dal server di risorse utilizzando una chiamata separata o estratto dal token di accesso nel caso di JWT e token simili. -
L'implementazione dipende dal server di risorse e dai dettagli del token di accesso.
-
-
Il connettore chiama il server di risorse: il connettore chiama il server di risorse per «accendere» la luce dell'utente finale.
-
Il server di risorse interagisce con il dispositivo: il server di risorse interagisce con il dispositivo.
-
Il connettore si inoltra a Managed Integrations quando il server di risorse ha fornito il comando, rispondendo con un ACK come risposta iniziale sincrona al comando. AWS IoT Device Management
-
Managed Integrations lo inoltra AWS IoT Device Management quindi all'applicazione del cliente.
-
-
Il dispositivo esegue il comando: dopo che il dispositivo ha acceso la luce, l'evento del dispositivo viene catturato dal server di risorse.
-
Il server di risorse invia l'evento del dispositivo: il server di risorse invia l'evento del dispositivo al connettore.
-
Il connettore trasforma l'evento: il connettore trasforma l'evento del dispositivo generato dal server di risorse in Managed Integrations for AWS IoT Device Management DEVICE_COMMAND_RESPONSE, il tipo di operazione di evento.
-
Chiamate al connettore: il connettore chiama l'API con l' SendConnectorEventoperazione «DEVICE_COMMAND_RESPONSE».
SendConnectorEvent-
Allega il modulo
traceIdfornito da Managed Integrations nella richiesta iniziale. AWS IoT Device Management
-
-
Managed Integrations notifica al cliente - Managed Integrations per AWS IoT Device Management notificare al cliente la modifica dello stato del dispositivo dell'utente finale.
-
Il cliente avvisa l'utente finale: il cliente notifica all'utente finale che la luce del dispositivo si è accesa.
Nota
La configurazione del server di risorse determina la logica per la gestione dei messaggi di richiesta e risposta dei comandi del dispositivo non riusciti. Ciò include i tentativi di riprovare i messaggi utilizzando lo stesso ReferenceID per il comando.
Requisiti del connettore C2C per l'esecuzione dei comandi del dispositivo
L'elenco seguente descrive i requisiti del connettore C2C per facilitare la corretta esecuzione dei comandi del dispositivo.
-
Il connettore C2C Lambda può elaborare i messaggi di richiesta
AWS.SendCommandoperativa provenienti da integrazioni gestite per AWS IoT Device Management. -
Il connettore C2C deve tenere traccia dei comandi inviati al server di risorse e mapparli con il `traceID` appropriato.
-
Puoi chiamare integrazioni gestite per le API del servizio AWS IoT Device Management tramite SigV4 utilizzando AWS le credenziali Account AWS utilizzate per la registrazione del connettore C2C.
Processo di esecuzione dei comandi
Fase 1: Managed Integrations invia il comando al connettore
Invia una richiesta POST con uno dei seguenti payload, a seconda del tipo di autorizzazione:
Richiesta OAuth 2.0:
/Send-Command { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }] } }
Richiesta di autorizzazione generale:
/Send-Command { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3" } }] }] }] } }
Fase 2: Comando ACK del connettore C2C
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
Fase 3: Il connettore invia un evento di risposta al comando del dispositivo
AWS-API: /SendConnectorEvent URI: POST /connector-event/{Your-Connector-Id} { "UserId": "End-User-Id", "Operation": "DEVICE_COMMAND_RESPONSE", "OperationVersion": "1.0", "StatusCode": 200, "Message": “Example message”, "ConnectorDeviceId": "Your_Device_Id", "TraceId": "traceId-3241u78123419", "MatterEndpoint": { "id": "1", "clusters": [{ "id": "0x0202", "attributes": [ { "0x0000": “3” } ], "commands": [ "0xff01": { "0x0000": "3” } ] }] } }
Nota
Le modifiche allo stato del dispositivo dovute all'esecuzione di un comando non si rifletteranno nelle integrazioni gestite AWS IoT Device Management fino a quando l'evento DEVICE_COMMAND_RESPONSE corrispondente non sarà stato ricevuto tramite l'API. SendConnectorEvent Ciò significa che fino a quando Managed Integrations for non AWS IoT Device Management riceverà l'evento del passaggio 3 precedente, indipendentemente dal fatto che la risposta alla chiamata del connettore indichi l'esito positivo o meno, lo stato del dispositivo non verrà aggiornato.
Importante
Non includete gli attributi nel payload DEVICE_COMMAND_RESPONSE a meno che il dispositivo non abbia confermato che la modifica di stato è stata effettivamente applicata. Un DEVICE_COMMAND_RESPONSE senza attributi conferma che il comando è stato inviato alla terza parte e genera una notifica DEVICE_COMMAND. Per segnalare che i valori degli attributi sono stati aggiornati sul dispositivo, invia un DEVICE_EVENT separato con gli attributi aggiornati. Questa distinzione impedisce la comparsa di falsi positivi quando un comando sembra avere esito positivo ma il dispositivo non ha mai ricevuto la modifica di stato, ad esempio quando un dispositivo è stato disconnesso di recente.
L'interpretazione degli «endpoint» degli argomenti inclusi nella richiesta AWS.SendCommand
Le integrazioni gestite utilizzeranno le funzionalità del dispositivo riportate durante l'individuazione del dispositivo per determinare quali comandi un dispositivo può accettare. Ogni funzionalità del dispositivo è modellata attraverso AWS implementazioni del Matter Data Model; pertanto, tutti i comandi in entrata verranno derivati dal campo `commands` all'interno di un determinato cluster. È responsabilità del connettore analizzare il campo `endpoints`, determinare il comando Matter corrispondente e tradurlo in modo che il comando corretto raggiunga il dispositivo. In genere, ciò significa tradurre il modello di dati Matter nelle relative richieste API.
Dopo l'esecuzione del comando, il connettore determina quali `attributi` definiti dalle AWS implementazioni del Matter Data Model sono cambiati di conseguenza. Queste modifiche vengono quindi segnalate alle integrazioni gestite per AWS IoT Device Management tramite eventi API DEVICE_COMMAND_RESPONSE inviati con l'API. SendConnectorEvent
Considera il campo `endpoints` incluso nel payload di esempio seguente: AWS.SendCommand
"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
Da questo oggetto, il connettore può determinare quanto segue:
-
Imposta le informazioni sull'endpoint e sul cluster:
-
Imposta l'endpoint
idsu «1".Nota
Se un dispositivo definisce più endpoint in modo tale che un singolo cluster (ad esempio On/Off) possa controllare più funzionalità (ad esempio accendere una luce on/off e accendere una luce stroboscopica on/off), questo id viene utilizzato per indirizzare il comando alla funzionalità corretta.
-
Imposta il cluster
idsu «0x0202" (cluster Fan Control).
-
-
Imposta le informazioni sul comando:
-
Imposta l'identificatore del comando su «0xff01" (comando Update State definito da). AWS
-
Aggiorna gli identificatori degli attributi inclusi con i valori forniti nella richiesta.
-
-
Aggiorna l'attributo:
-
Imposta l'identificatore dell'attributo su «0x0000" (FanMode attributo del Fan Control Cluster).
-
Imposta il valore dell'attributo su «3" (alta velocità della ventola).
-
Managed Integrations ha definito due tipi di comandi «personalizzati» che non sono strettamente definiti dalle AWS implementazioni del Matter Data Model: i ReadState comandi and. UpdateState Per ottenere e impostare gli attributi del cluster definiti da Matter, Managed Integrations invierà al connettore una AWS.SendCommand richiesta con ID di comando relativi a UpdateState (id: 0xff01) o ReadState (id: 0xff02), con i corrispondenti parametri di attributi che devono essere aggiornati o letti. Questi comandi possono essere richiamati per QUALSIASI tipo di dispositivo per attributi impostati come mutabili (aggiornabili) o recuperabili (leggibili) dall' AWS implementazione corrispondente del Matter Data Model.