Implemente a AWS. SendCommand operação - Integrações gerenciadas para AWS IoT Device Management

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. SendCommand operação

A AWS.SendCommand operação permite integrações gerenciadas para que o AWS IoT Device Management envie comandos iniciados pelo usuário final por meio AWS do cliente para seu servidor de recursos. Seu servidor de recursos pode oferecer suporte a vários tipos de dispositivos, onde cada tipo tem seu próprio modelo de resposta. A execução de comandos é um processo assíncrono em que integrações gerenciadas para o AWS IoT Device Management enviam uma solicitação de execução de comando com um `traceID`, que seu conector incluirá em uma resposta de comando enviada de volta às integrações gerenciadas por meio da API ``. SendConnectorEvent As integrações gerenciadas do AWS IoT Device Management esperam que o servidor de recursos retorne uma resposta confirmando que o comando foi recebido, mas não necessariamente indicando que o comando foi recebido executado.

O diagrama a seguir ilustra o fluxo de execução do comando com um exemplo em que o usuário final tenta acender as luzes de sua casa:

Fluxo de trabalho de execução de comandos do
Fluxo de trabalho de execução de comandos do
  1. Um usuário final envia um comando para acender uma luz usando o aplicativo do AWS cliente.

  2. O cliente retransmite as informações do comando para integrações gerenciadas do AWS IoT Device Management com as informações do dispositivo do usuário final.

  3. As integrações gerenciadas geram o “TraceID” que seu conector usará ao enviar respostas de comando de volta ao serviço.

  4. integrações gerenciadas para o AWS IoT Device Management enviam a solicitação de comando para o seu conector, usando AWS.SendCommand a interface de operação.

    1. A carga definida por essa interface consiste no identificador do dispositivo, nos comandos do dispositivo formulados como Matterendpoints/clusters/commands, no token de acesso do usuário final e em outros parâmetros necessários.

  5. Seu conector armazena o traceId a ser incluído na resposta do comando.

    1. Seu conector traduz a solicitação de comando de integrações gerenciadas para o formato apropriado do seu servidor de recursos.

  6. Seu conector UserId obtém o token de acesso do usuário final fornecido e o associa ao comando.

    1. O UserId pode ser recuperado do seu servidor de recursos usando uma chamada separada ou extraído do token de acesso no caso de JWT e tokens similares.

    2. A implementação depende dos detalhes do servidor de recursos e do token de acesso.

  7. Seu conector chama o servidor de recursos para “Ligar” a luz do usuário final.

  8. O servidor de recursos interage com o dispositivo.

    1. O conector retransmite às integrações gerenciadas do AWS IoT Device Management que o servidor de recursos entregou o comando, respondendo com um ACK como resposta inicial e síncrona do comando.

    2. Em seguida, as integrações gerenciadas as retransmitem para o aplicativo do cliente.

  9. Depois que o dispositivo acende a luz, esse evento do dispositivo é capturado pelo seu servidor de recursos.

  10. Seu servidor de recursos envia o evento do dispositivo para o conector.

  11. Seu conector transforma o evento do dispositivo gerado pelo servidor de recursos em integrações gerenciadas do tipo de operação do evento DEVICE_COMMAND_RESPONSE.

  12. Seu conector chama a SendConnectorEvent API com operação como “DEVICE_COMMAND_RESPONSE”.

    1. Ele anexa o traceId fornecido pelas integrações gerenciadas para o AWS IoT Device Management na solicitação inicial.

  13. As integrações gerenciadas notificam o cliente sobre a mudança no estado do dispositivo do usuário final.

  14. O cliente notifica o usuário final de que a luz do dispositivo está acesa.

    nota

    A configuração do servidor de recursos determina a lógica para lidar com mensagens de resposta e solicitação de comando do dispositivo com falha. Isso inclui tentativas de repetição de mensagens usando o mesmo ID de referência para o comando.

Requisitos do conector C2C para execução de comandos do dispositivo

A lista a seguir descreve os requisitos do conector C2C para facilitar a execução bem-sucedida do comando do dispositivo.

  • O conector C2C Lambda pode processar mensagens de solicitação de AWS.SendCommand operação de integrações gerenciadas para o AWS IoT Device Management.

  • Seu conector C2C deve acompanhar os comandos enviados ao seu servidor de recursos e mapeá-los com o `traceID` apropriado.

  • Você pode chamar integrações gerenciadas para as APIs do serviço AWS IoT Device Management via SigV4 AWS usando as credenciais usadas para registrar o conector Conta da AWS C2C.

  1. As integrações gerenciadas enviam o comando para o conector (consulte a etapa 4 no diagrama anterior).

    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 do conector C2C (consulte a etapa 7 no diagrama anterior, onde o conector envia ACK para as integrações gerenciadas do 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. O conector envia o evento Device Command Response (consulte a etapa 11 no diagrama anterior).

    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

    As alterações no estado do dispositivo como resultado da execução de um comando não serão refletidas nas integrações gerenciadas do AWS IoT Device Management até que o evento DEVICE_COMMAND_RESPONSE correspondente seja recebido por meio da API. SendConnectorEvent Isso significa que até que as integrações gerenciadas recebam o evento da etapa 3 anterior, independentemente de sua resposta de invocação do conector indicar sucesso ou não, o estado do dispositivo não será atualizado.

Interpretar “endpoints” de assuntos incluídos na AWS. SendCommand pedido

As integrações gerenciadas usarão os recursos do dispositivo relatados durante a descoberta do dispositivo para determinar quais comandos um dispositivo pode aceitar. Cada capacidade do dispositivo é modelada por meio de AWS implementações do Matter Data Model; portanto, todos os comandos recebidos serão derivados do campo `comandos` em um determinado cluster. É responsabilidade do seu conector analisar o campo `endpoints`, determinar o comando Matter correspondente e traduzi-lo de forma que o comando correto chegue ao dispositivo. Normalmente, isso significa traduzir o modelo de dados do Matter nas solicitações de API relacionadas.

Depois que o comando for executado, seu conector determina quais `atributos` definidos pelas AWS implementações do Matter Data Model foram alterados como resultado. Essas alterações são então reportadas às integrações gerenciadas do AWS IoT Device Management por meio de eventos da API DEVICE_COMMAND_RESPONSE enviados com a API. SendConnectorEvent

Considere o campo `endpoints` incluído no seguinte exemplo de carga útil: AWS.SendCommand

"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
A partir desse objeto, o conector pode determinar o seguinte:
  1. Defina as informações do endpoint e do cluster:

    1. Defina o endpoint id como “1".

      nota

      Se um dispositivo definir vários endpoints, como um único cluster (comoOn/Off) can control multiple capabilities (i.e. turn a light on/off as well as turning a strobe on/off), esse ID será usado para rotear o comando para o recurso correto.

    2. Defina o cluster id como “0x0202" (cluster de controle de ventilador).

  2. Defina as informações do comando:

    1. Defina o identificador do comando como “0xff01" (comando Atualizar estado definido por). AWS

    2. Atualize os identificadores de atributos incluídos com os valores fornecidos na solicitação.

  3. Atualize o atributo:

    1. Defina o identificador do atributo como “0x0000" (FanMode atributo do cluster de controle do ventilador).

    2. Defina o valor do atributo como “3" (Alta velocidade do ventilador).

As integrações gerenciadas definiram dois tipos de comando “personalizados” que não são estritamente definidos pelas AWS implementações do Matter Data Model: os comandos ReadState e. UpdateState Para obter e definir atributos de cluster definidos pelo Matter, as integrações gerenciadas enviarão ao seu conector uma AWS.SendCommand solicitação com o comando IDs referente a UpdateState (id: 0xff01) ou ReadState (id: 0xff02), com os parâmetros correspondentes dos atributos que devem ser atualizados ou lidos. Esses comandos podem ser invocados para QUALQUER tipo de dispositivo para atributos definidos como mutáveis (atualizáveis) ou recuperáveis (legíveis) a partir da AWS implementação correspondente do Matter Data Model.