API verwenden

Wenn Sie ein Zugriffstoken haben und den ersten Aufruf der Geräteliste ausgeführt haben, können Sie jetzt mit der SDM API auf Ihr Gerät zugreifen und es steuern.

Strukturen und Geräte auflisten

Verwenden Sie curl, um einen einfachen GET-Aufruf an den Endpunkt structures zu senden:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Bei einem erfolgreichen Aufruf wird eine Liste von Strukturen für Konten zurückgegeben, die mit IhremDevice Access -Projekt verknüpft sind:

{
  "structures": [
    {
      "name": "enterprises/project-id/structures/structure-id",
      "traits": {
        "sdm.structures.traits.Info": {
          "customName": "structure-name"
        }
      }
    }
  ]
}

Wenn Sie dies noch nicht getan haben, rufen Sie einen GET-Aufruf an den Endpunkt devices auf, um eine Liste der Geräte abzurufen:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Bei einem erfolgreichen Aufruf wird eine Liste der Geräte zurückgegeben, die mit Ihrem Device Access Projekt verknüpft sind. Jedes Gerät hat eine eigene Liste verfügbarer Eigenschaften:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

Kopieren Sie die device-id für jedes Gerät. Sie benötigen sie für andere API-Aufrufe.

Informationen zu einem Gerät abrufen

Wenn Sie Informationen zu einem bestimmten Gerät abrufen möchten, führen Sie einen GET-Aufruf an den Endpunkt device-id aus:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Die Antwort sollte ähnlich sein wie zuvor, allerdings nur für das jeweilige Gerät:

{
  "name": "enterprises/project-id/devices/device-id",
  "type": "sdm.devices.types.device-type",
  "traits": { ... },
  "parentRelations": [
    {
      "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
      "displayName": "device-room-name"
    }
  ]
}

Befehl ausführen

Nachdem Sie Ihren Zugriff mit einem erfolgreichen GET-Aufruf validiert haben, versuchen Sie, je nach autorisiertem Gerätetyp einen Befehl auszuführen:

THERMOSTAT

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.ThermostatMode.SetMode",
    "params" : {
      "mode" : "HEAT"
    }
  }'

KAMERA

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
    "params" : {}
  }'

Wenn der Aufruf erfolgreich ist, werden die folgenden Ergebnisse ausgegeben:

THERMOSTAT

Sie erhalten eine leere Antwort und der physische Thermostat ändert seinen aktuellen Modus in den Modus, der in den Befehlsparametern angegeben ist.

{}

KAMERA

Sie erhalten eine Livestream-URL und zugehörige Tokens.

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Fehlerbehebung

Nicht authentifiziert

Zugriffstokens für die SDM API sind nur 1 Stunde lang gültig. Wenn Sie eine UNAUTHENTICATED-Antwort erhalten, ist das Token wahrscheinlich abgelaufen. Verwenden Sie Ihr Aktualisierungstoken, um ein neues Zugriffstoken abzurufen.

Weitere Fehler

Die vollständige Liste der Fehlercodes finden Sie in der Fehlercode-Referenz. Device Access