View a markdown version of this page

Implementieren Sie die AWS.SendCommand Operation - Verwaltete Integrationen für AWS IoT Device Management

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Implementieren Sie die AWS.SendCommand Operation

Dieser AWS.SendCommand Vorgang ermöglicht es Managed Integrations for AWS IoT Device Management , Befehle, die vom Endbenutzer initiiert wurden, über den AWS Kunden an Ihren Ressourcenserver zu senden. Ihr Ressourcenserver unterstützt möglicherweise mehrere Gerätetypen, wobei jeder Typ sein eigenes Antwortmodell hat.

Die Befehlsausführung ist ein asynchroner Prozess, bei dem Managed Integrations for eine Anfrage zur Befehlsausführung mit a AWS IoT Device Management sendettraceId, die Ihr Connector in eine Befehlsantwort einbezieht, die AWS IoT Device Management über die API an Managed Integrations zurückgesendet wird. SendConnectorEvent Managed Integrations for AWS IoT Device Management erwartet, dass der Ressourcenserver eine Antwort zurückgibt, in der bestätigt wird, dass der Befehl empfangen wurde, aber nicht unbedingt angibt, dass der Befehl ausgeführt wurde.

Arbeitsablauf für die Ausführung von Gerätebefehlen

Das folgende Diagramm veranschaulicht den Ablauf der Befehlsausführung anhand eines Beispiels, bei dem der Endbenutzer versucht, die Beleuchtung seines Hauses einzuschalten:

Arbeitsablauf bei der Ausführung von Gerätebefehlen
Workflow-Schritte
  1. Endbenutzer sendet einen Befehl — Ein Endbenutzer sendet mithilfe der AWS Kundenanwendung einen Befehl zum Einschalten eines Lichts.

  2. Kunde leitet den Befehl weiter — Der Kunde leitet die Befehlsinformationen AWS IoT Device Management zusammen mit den Geräteinformationen des Endbenutzers an Managed Integrations weiter.

  3. Managed Integrations generiert traceId — Managed Integrations for AWS IoT Device Management generiert „traceId“, die Ihr Connector verwendet, wenn er Befehlsantworten zurück an den Service sendet.

  4. Befehlsanforderung an Konnektor gesendet — Managed Integrations for AWS IoT Device Management sendet die Befehlsanforderung über die Bedienoberfläche an Ihren Connector. AWS.SendCommand

    • Die durch diese Schnittstelle definierte Nutzlast besteht aus der Gerätekennung, den als Matter endpoints/clusters /commands formulierten Gerätebefehlen, dem Zugriffstoken des Endbenutzers und anderen erforderlichen Parametern.

  5. Connector speichert traceId — Ihr Connector speichert dietraceId, die in die Befehlsantwort aufgenommen werden sollen.

    • Ihr Connector übersetzt Managed Integrations for AWS IoT Device Management Command Request in das entsprechende Format Ihres Ressourcenservers.

  6. Connector ruft UserId ab UserId — Ihr Connector ruft das Zugriffstoken des bereitgestellten Endbenutzers ab und ordnet es dem Befehl zu.

    • Das UserId kann entweder mit einem separaten Aufruf von Ihrem Ressourcenserver abgerufen oder im Fall von JWT und ähnlichen Token aus dem Zugriffstoken extrahiert werden.

    • Die Implementierung hängt von Ihrem Ressourcenserver und den Details des Zugriffstokens ab.

  7. Der Connector ruft den Ressourcenserver auf — Ihr Connector ruft den Ressourcenserver auf, um das Licht des Endbenutzers einzuschalten.

  8. Der Ressourcenserver interagiert mit dem Gerät — Der Ressourcenserver interagiert mit dem Gerät.

    • Der Connector leitet an Managed Integrations weiter AWS IoT Device Management , wenn der Ressourcenserver den Befehl übermittelt hat. Als erste synchrone Befehlsantwort gibt er ein ACK zurück.

    • Managed Integrations for leitet ihn AWS IoT Device Management dann zurück an die Kundenanwendung.

  9. Das Gerät führt den Befehl aus — Nachdem das Gerät das Licht eingeschaltet hat, wird dieses Geräteereignis von Ihrem Ressourcenserver erfasst.

  10. Ressourcenserver sendet Geräteereignis — Ihr Ressourcenserver sendet das Geräteereignis an den Connector.

  11. Ereignis für Connector-Transformation — Ihr Connector wandelt das vom Ressourcenserver generierte Geräteereignis in den Vorgangstyp „Managed Integrations for AWS IoT Device Management DEVICE_COMMAND_RESPONSE“ um.

  12. Connector-Aufrufe SendConnectorEvent — Ihr Connector ruft die SendConnectorEvent API mit der Operation „DEVICE_COMMAND_RESPONSE“ auf.

    • Er fügt die von Managed Integrations in der ersten Anfrage traceId bereitgestellten Informationen an. AWS IoT Device Management

  13. Verwaltete Integrationen benachrichtigen den Kunden — Managed Integrations for AWS IoT Device Management benachrichtigt den Kunden über die Änderung des Gerätestatus des Endbenutzers.

  14. Kunde benachrichtigt Endbenutzer — Der Kunde benachrichtigt den Endbenutzer darüber, dass das Licht des Geräts eingeschaltet ist.

Anmerkung

Ihre Ressourcenserverkonfiguration bestimmt die Logik für den Umgang mit fehlgeschlagenen Gerätebefehlen, Anforderungs- und Antwortnachrichten. Dies schließt Versuche ein, Nachrichten erneut zu versuchen, wobei dieselbe ReferenceID für den Befehl verwendet wurde.

Anforderungen an den C2C-Anschluss für die Ausführung von Gerätebefehlen

In der folgenden Liste sind die Anforderungen für Ihren C2C-Anschluss aufgeführt, um eine erfolgreiche Ausführung von Gerätebefehlen zu ermöglichen.

  • Der C2C-Konnektor Lambda kann AWS.SendCommand Betriebsanforderungsnachrichten von verwalteten Integrationen für AWS IoT Device Management verarbeiten.

  • Ihr C2C-Konnektor muss die an Ihren Ressourcenserver gesendeten Befehle verfolgen und ihnen die entsprechende `TraceId` zuordnen.

  • Sie können verwaltete Integrationen für AWS IoT Device Management Service APIs über Sigv4 aufrufen, indem Sie die AWS Anmeldeinformationen verwenden, die für die Registrierung des C2C-Connectors AWS-Konto verwendet wurden.

Prozess der Befehlsausführung

Schritt 1: Managed Integrations sendet den Befehl an den Connector

Senden Sie je nach Autorisierungstyp eine POST-Anfrage mit einer der folgenden Payloads:

OAuth 2.0-Anfrage:

/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” } }] }] }] } }

Allgemeine Autorisierungsanfrage:

/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" } }] }] }] } }

Schritt 2: ACK-Befehl für den C2C-Anschluss

{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }

Schritt 3: Der Connector sendet ein Befehlsantwortereignis für das Gerät

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” } ] }] } }
Anmerkung

Änderungen des Gerätestatus als Ergebnis einer Befehlsausführung werden AWS IoT Device Management erst in Managed Integrations berücksichtigt, wenn das entsprechende DEVICE_COMMAND_RESPONSE-Ereignis über die API empfangen wurde. SendConnectorEvent Das bedeutet, dass der Gerätestatus erst aktualisiert wird, wenn Managed Integrations for das Ereignis aus dem vorherigen Schritt 3 AWS IoT Device Management empfängt, unabhängig davon, ob Ihre Antwort auf den Connector-Aufruf erfolgreich war oder nicht.

Wichtig

Nehmen Sie keine Attribute in die Payload DEVICE_COMMAND_RESPONSE auf, es sei denn, das Gerät hat bestätigt, dass die Statusänderung tatsächlich vorgenommen wurde. Ein DEVICE_COMMAND_RESPONSE ohne Attribute dient als Bestätigung dafür, dass der Befehl an den Drittanbieter gesendet wurde, und führt zu einer DEVICE_COMMAND-Benachrichtigung. Um zu melden, dass die Attributwerte auf dem Gerät aktualisiert wurden, senden Sie ein separates DEVICE_EVENT mit den aktualisierten Attributen. Diese Unterscheidung verhindert Fehlalarme, wenn ein Befehl erfolgreich zu sein scheint, das Gerät die Statusänderung aber nie erhalten hat, z. B. wenn ein Gerät kürzlich getrennt wurde.

In der Anfrage sind die „Endpunkte“ des Dolmetscherthemas enthalten AWS.SendCommand

Verwaltete Integrationen verwenden die bei der Geräteerkennung gemeldeten Gerätefunktionen, um zu ermitteln, welche Befehle ein Gerät annehmen kann. Jede Gerätefunktion wird durch AWS Implementierungen des Matter Data Model modelliert. Somit werden alle eingehenden Befehle aus dem Feld „Befehle“ innerhalb eines bestimmten Clusters abgeleitet. Es liegt in der Verantwortung Ihres Konnektors, das Feld „Endpunkte“ zu analysieren, den entsprechenden Matter-Befehl zu ermitteln und ihn so zu übersetzen, dass der richtige Befehl das Gerät erreicht. In der Regel bedeutet dies, das Matter-Datenmodell in die entsprechenden API-Anfragen zu übersetzen.

Nachdem der Befehl ausgeführt wurde, ermittelt Ihr Konnektor, welche `Attribute`, die durch die AWS Implementierungen des Matter-Datenmodells definiert wurden, sich dadurch geändert haben. Diese Änderungen werden dann über API-DEVICE_COMMAND_RESPONSE-Ereignisse, die mit der API gesendet werden, an verwaltete Integrationen für AWS IoT Device Management gemeldet. SendConnectorEvent

Betrachten Sie das Feld `endpoints`, das in der folgenden Beispielnutzlast enthalten ist: AWS.SendCommand

"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
Aus diesem Objekt kann der Konnektor Folgendes ermitteln:
  1. Legen Sie die Endpunkt- und Clusterinformationen fest:

    1. Stellen Sie den Endpunkt id auf „1" ein.

      Anmerkung

      Wenn ein Gerät mehrere Endpunkte definiert, sodass ein einzelner Cluster (z. B. On/Off) mehrere Funktionen steuern kann (d. h. sowohl ein Licht on/off als auch ein Strobe einschalten on/off), wird diese ID verwendet, um den Befehl an die richtige Funktion weiterzuleiten.

    2. Stellen Sie den Cluster id auf „0x0202“ (Fan Control Cluster) ein.

  2. Stellen Sie die Befehlsinformationen ein:

    1. Setzen Sie die Befehlskennung auf „0xff01" (Befehl „Status aktualisieren“, definiert von). AWS

    2. Aktualisieren Sie die enthaltenen Attributbezeichner mit den in der Anfrage angegebenen Werten.

  3. Aktualisieren Sie das Attribut:

    1. Setzen Sie die Attribut-ID auf „0x0000" (FanMode Attribut des Fan Control Clusters).

    2. Setzen Sie den Attributwert auf „3" (Hohe Lüftergeschwindigkeit).

Managed Integrations hat zwei „benutzerdefinierte“ Befehlstypen definiert, die nicht unbedingt durch AWS Implementierungen des Matterdatenmodells definiert sind: Die Befehle ReadState und UpdateState . Um vom Thema definierte Clusterattribute abzurufen und festzulegen, sendet Managed Integrations Ihrem Connector eine AWS.SendCommand Anfrage mit Befehls-IDs, die sich auf UpdateState (id: 0xff01) oder ReadState (id: 0xff02) beziehen, mit entsprechenden Attributparametern, die entweder aktualisiert oder gelesen werden müssen. Diese Befehle können für JEDEN Gerätetyp für Attribute aufgerufen werden, die in der entsprechenden Implementierung des Matter-Datenmodells als veränderbar (aktualisierbar) oder abrufbar (lesbar) festgelegt sind. AWS