Erişim jetonunuzu aldıktan ve ilk cihaz listesi çağrısını yaptıktan sonra artık cihazınıza erişmek ve cihazınızı kontrol etmek için SDM API'yi kullanmaya hazırsınız.
Yapıları ve cihazları listeleme
curl
kullanarak structures
uç noktasına basit bir GET çağrısı yapın:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Başarılı bir çağrı,Device Access projenize bağlı hesapların yapı listesini döndürür:
{ "structures": [ { "name": "enterprises/project-id/structures/structure-id", "traits": { "sdm.structures.traits.Info": { "customName": "structure-name" } } } ] }
Henüz yapmadıysanız cihaz listesini almak için devices
uç noktasına bir GET çağrısı yapın:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Başarılı bir çağrı, Device Accessprojenize bağlı cihazların listesini döndürür. Her cihazın kendine özgü bir kullanılabilir özellikler listesi vardır:
{ "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" } ] } ] }
Her cihaz için device-id değerini kopyalayın. Bu değer, diğer API çağrıları için gereklidir.
Cihaz bilgileri alma
Belirli bir cihaz hakkında bilgi almak için device-id uç noktasına GET çağrısı yapın:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Yanıt, öncekiyle benzer olmalı ancak yalnızca belirli cihaz için geçerli olmalıdır:
{ "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" } ] }
Komut yürütme
Erişiminizi başarılı bir GET çağrısıyla doğruladıktan sonra, yetkilendirdiğiniz cihazın türüne bağlı olarak bir komut yürütmeyi deneyin:
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" : {}
}'
Aramanız başarılı olursa aşağıdaki sonuçlar elde edilir:
THERMOSTAT
Boş bir yanıt alırsınız ve fiziksel termostat, mevcut modunu komut parametrelerinde belirtilen moda değiştirir.
{}
KAMERA
Canlı yayın URL'si ve ilgili jetonları alırsınız.
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Sorun giderme
Kimliği doğrulanmamış
SDM API'si için erişim jetonları yalnızca 1 saat boyunca geçerlidir. UNAUTHENTICATED yanıtı alırsanız jetonun süresi büyük olasılıkla dolmuştur. Yeni bir erişim jetonu almak için yenileme jetonunuzu kullanın.
Diğer hatalar
Hata kodlarının tam listesi için Hata Kodu Referansı'na bakın. Device Access