API verwenden

Mit einem Zugriffstoken und dem ersten Aufruf der Geräteliste können Sie jetzt mit der SDM API auf Ihr Gerät zugreifen und es steuern.

Gebäude 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 der Gebäude 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"
        }
      }
    }
  ]
}

Falls noch nicht geschehen, senden Sie einen GET-Aufruf an den Endpunkt devices, 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. Für jedes Gerät ist eine eigene Liste der verfügbaren Merkmale verfügbar:

{
  "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 den device-id für jedes Gerät. Sie benötigen ihn für andere API-Aufrufe.

Informationen zu einem Gerät abrufen

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

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 wie zuvor aussehen, aber 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 du deinen Zugriff mit einem erfolgreichen GET-Aufruf bestätigt hast, kannst du je nach Art des autorisierten Geräts einen Befehl ausfü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, geschieht Folgendes:

THERMOSTAT

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

{}

KAMERA

Du erhältst 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 eine Stunde lang gültig. Wenn du die Antwort UNAUTHENTICATED erhältst, ist das Token wahrscheinlich abgelaufen. Verwenden Sie das Aktualisierungstoken, um ein neues Zugriffstoken zu erhalten.

Weitere Fehler

Eine vollständige Liste der Device Access Fehlercodes finden Sie in der Referenz zu Fehlercodes.