Implementa AWS. SendCommand 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à.

Implementa AWS. SendCommand operazione

L'AWS.SendCommandoperazione consente alle integrazioni gestite per AWS IoT Device Management di inviare comandi avviati dall'utente finale tramite il AWS cliente al server di risorse. Il tuo server di risorse può supportare diversi tipi di dispositivi, ognuno dei quali ha il proprio modello di risposta. L'esecuzione dei comandi è un processo asincrono in cui le integrazioni gestite per AWS IoT Device Management inviano una richiesta di esecuzione del comando con un `TraceID`, che il connettore includerà in una risposta al comando inviata alle integrazioni gestite tramite la `` SendConnectorEvent API. Le integrazioni gestite per AWS IoT Device Management si aspettano che il server di risorse restituisca una risposta che confermi che il comando è stato ricevuto, ma non indica necessariamente che il comando è stato eseguito.

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:

Workflow di esecuzione dei comandi del dispositivo
Workflow di esecuzione dei comandi del dispositivo
  1. Un utente finale invia un comando per accendere una luce utilizzando l'applicazione del AWS cliente.

  2. Il cliente inoltra le informazioni sui comandi alle integrazioni gestite per AWS IoT Device Management con le informazioni sul dispositivo dell'utente finale.

  3. Le integrazioni gestite generano un «traceID» che il connettore utilizzerà per inviare le risposte ai comandi al servizio.

  4. le integrazioni gestite per AWS IoT Device Management inviano la richiesta di comando al connettore, utilizzando l'interfaccia AWS.SendCommand operativa.

    1. Il payload definito da questa interfaccia è costituito dall'identificatore del dispositivo, dai comandi del dispositivo formulati come Matterendpoints/clusters/commands, dal token di accesso dell'utente finale e da altri parametri richiesti.

  5. Il connettore traceId memorizza i dati da includere nella risposta al comando.

    1. Il connettore traduce la richiesta di comando di integrazioni gestite nel formato appropriato del server di risorse.

  6. Il connettore riceve UserId dal token di accesso fornito dall'utente finale e lo associa al comando.

    1. UserIdPuò essere recuperato dal server di risorse utilizzando una chiamata separata o estratto dal token di accesso nel caso di JWT e token simili.

    2. L'implementazione dipende dal server di risorse e dai dettagli del token di accesso.

  7. Il connettore richiama il server di risorse per «accendere» la luce dell'utente finale.

  8. Il server di risorse interagisce con il dispositivo.

    1. Il connettore comunica alle integrazioni gestite per AWS IoT Device Management che il server di risorse ha fornito il comando, rispondendo con un ACK come risposta iniziale sincrona al comando.

    2. Le integrazioni gestite le inoltrano quindi all'applicazione del cliente.

  9. Dopo che il dispositivo ha acceso la luce, l'evento del dispositivo viene catturato dal server di risorse.

  10. Il server di risorse invia l'evento del dispositivo al connettore.

  11. Il connettore trasforma l'evento del dispositivo generato dal server di risorse in un tipo di operazione di evento DEVICE_COMMAND_RESPONSE di integrazioni gestite.

  12. Il connettore chiama l'API con l'operazione «DEVICE_COMMAND_RESPONSESendConnectorEvent».

    1. Allega le integrazioni traceId fornite da managed integrations per AWS IoT Device Management nella richiesta iniziale.

  13. Le integrazioni gestite notificano al cliente la modifica dello stato del dispositivo dell'utente finale.

  14. 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.SendCommand operativa 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.

  1. Le integrazioni gestite inviano il comando al connettore (fare riferimento al passaggio 4 nel diagramma precedente).

    1. /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” } }] }] }] } }
  2. Comando ACK del connettore C2C (fare riferimento al passaggio 7 del diagramma precedente in cui il connettore invia ACK alle integrazioni gestite per AWS IoT Device Management Service).

    1. { "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
  3. Il connettore invia l'evento Device Command Response (fare riferimento al passaggio 11 nel diagramma precedente).

    1. 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 a seguito dell'esecuzione di un comando non si rifletteranno nelle integrazioni gestite per 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 le integrazioni gestite non riceveranno l'evento della fase 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.

Interpretazione degli «endpoint» della materia inclusa in AWS. SendCommand richiesta

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:
  1. Imposta le informazioni sull'endpoint e sul cluster:

    1. Imposta l'endpoint id su «1".

      Nota

      Se un dispositivo definisce più endpoint, ad esempio un singolo cluster, questo id viene utilizzato per indirizzare il comando alla funzionalità corretta. On/Off) can control multiple capabilities (i.e. turn a light on/off as well as turning a strobe on/off

    2. Imposta il cluster id su «0x0202" (cluster Fan Control).

  2. Imposta le informazioni sul comando:

    1. Imposta l'identificatore del comando su «0xff01" (comando Update State definito da). AWS

    2. Aggiorna gli identificatori degli attributi inclusi con i valori forniti nella richiesta.

  3. Aggiorna l'attributo:

    1. Imposta l'identificatore dell'attributo su «0x0000" (FanMode attributo del Fan Control Cluster).

    2. 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, le integrazioni gestite invieranno al connettore una AWS.SendCommand richiesta con il comando IDs relativo a UpdateState (id: 0xff01) o ReadState (id: 0xff02), con i parametri corrispondenti degli attributi che devono essere aggiornati o letti. Questi comandi possono essere richiamati per QUALSIASI tipo di dispositivo per attributi impostati come modificabili (aggiornabili) o recuperabili (leggibili) dalla corrispondente implementazione del Matter Data Model. AWS