Mit einem Zugriffstoken und dem ersten Aufruf der Geräteliste können Sie nun die SDM API verwenden, um auf Ihr Gerät zuzugreifen und es zu 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 der 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" } } } ] }
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. 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 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 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
Nachdem Sie den Zugriff mit einem erfolgreichen GET-Aufruf validiert haben, versuchen Sie, abhängig vom autorisierten 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, geschieht Folgendes:
Thermostat
Sie erhalten eine leere Antwort und der physische Thermostat ändert seinen 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 Sie eine NICHT AUTHENTIFIZIERTE Antwort erhalten, 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 Fehlercode-Referenz.