Po uzyskaniu tokena dostępu i wykonaniu początkowego wywołania listy urządzeń możesz już używać interfejsu SDM API do uzyskiwania dostępu do urządzenia i sterowania nim.
Lista obiektów i urządzeń
Użyj curl
, aby wykonać proste wywołanie GET do punktu końcowego structures
:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Wywołanie zakończone pomyślnie zwraca listę struktur kont połączonych z TwoimDevice Access projektem:
{ "structures": [ { "name": "enterprises/project-id/structures/structure-id", "traits": { "sdm.structures.traits.Info": { "customName": "structure-name" } } } ] }
Jeśli jeszcze tego nie zrobiono, wywołaj metodę GET na punkcie końcowym devices
, aby pobrać listę urządzeń:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Wywołanie zakończone pomyślnie zwraca listę urządzeń połączonych z Twoim projektem Device Access. Każde urządzenie ma własną, niepowtarzalną listę dostępnych cech:
{ "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" } ] } ] }
Skopiuj device-id dla każdego urządzenia. Będzie on potrzebny do innych wywołań interfejsu API.
Uzyskiwanie informacji o urządzeniu
Aby uzyskać informacje o konkretnym urządzeniu, wyślij wywołanie GET do punktu końcowego 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'
Odpowiedź powinna być podobna do poprzedniej, ale dotyczyć tylko konkretnego urządzenia:
{ "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" } ] }
Wykonywanie polecenia
Po potwierdzeniu dostępu za pomocą wywołania GET spróbuj wykonać polecenie w zależności od typu autoryzowanego urządzenia:
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"
}
}'
APARAT
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" : {}
}'
Jeśli wywołanie się powiedzie, nastąpią te zmiany:
THERMOSTAT
Otrzymasz pustą odpowiedź, a fizyczny termostat zmieni bieżący tryb na tryb określony w parametrach polecenia.
{}
APARAT
Otrzymasz adres URL transmisji na żywo i powiązane tokeny.
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Rozwiązywanie problemów
Nieuwierzytelnione
Tokeny dostępu do interfejsu SDM API są ważne tylko przez godzinę. Jeśli otrzymasz odpowiedź UNAUTHENTICATED, token prawdopodobnie wygasł. Użyj tokena odświeżania, aby uzyskać nowy token dostępu.
Inne błędy
Pełną listę kodów błędów Device Access znajdziesz w odniesieniu do kodów błędów.