API verwenden

Mit einem Zugriffstoken und dem ersten Aufruf der Geräteliste können Sie sofort 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 Anruf wird eine Liste mit Strukturen für Konten zurückgegeben, die mit Ihrem Device Access -Projekt:

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

Falls noch nicht geschehen, starte einen GET-Aufruf an den Endpunkt devices, um eine Liste der Geräte abrufen:

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 Anruf wird eine Liste der Geräte zurückgegeben, die mit Device Accessverknüpft sind Projekt arbeiten. Jedes Gerät hat eine eigene Liste mit verfügbaren 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 den device-id für jedes Gerät. Sie benötigen ihn für andere API-Aufrufe.

Informationen zu einem Gerät abrufen

Wenn du Informationen zu einem bestimmten Gerät erhalten möchtest, starte einen GET-Aufruf an die device-id Endpunkt:

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 vorher sein, 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

Versuchen Sie nach der Validierung des Zugriffs mit einem erfolgreichen GET-Aufruf, eine abhängig vom autorisierten Gerätetyp:

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 seine den aktuellen Modus in den in den Befehlsparametern angegebenen Modus.

{}

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 eine Stunde lang gültig. Wenn erhalten Sie eine UNAUTHENTICATED-Antwort, ist das Token wahrscheinlich abgelaufen. Verwenden Sie Ihr Aktualisierungstoken, um ein neues ein Zugriffstoken hinzufügen.

Weitere Fehler

In der Fehlercode-Referenz finden Sie die vollständige Liste der Device Access Fehlercodes.