Elinizde bir erişim jetonu ve ilk cihaz listesi çağrısı yapıldığında artık SDM API'yi kullanarak cihazınıza erişip bunları kontrol edebilirsiniz.
Yapıları ve cihazları listeleyin
structures
uç noktasına basit bir GET çağrısı yapmak için curl
kodunu kullanı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 için yapıların 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 cihazların 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 arama, Device Accessprojenize bağlı cihazların bir listesini döndürür. Her cihazın kendine özgü mevcut ö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 bilgisini kopyalayın. Diğer API çağrıları için bu gereklidir.
Bir cihazla ilgili bilgileri alma
Belirli bir cihazla ilgili 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, öncekine benzer bir şekilde olmalıdır ancak yalnızca ilgili cihaz için geçerlidir:
{ "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
Başarılı bir GET çağrısıyla erişiminizi doğruladıktan sonra, yetkilendirdiğiniz cihazın türüne bağlı olarak bir komut yürütmeyi deneyin:
TERARAT
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 gerçekleşir:
TERARAT
Boş bir yanıt alırsınız ve fiziksel termostat mevcut modunu komut parametrelerinde belirtilen moda değiştirir.
{}
KAMERA
Bir 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
Kimlik doğrulanamadı
SDM API'nin erişim jetonları yalnızca 1 saat boyunca geçerlidir. UNAUTHENTICATED yanıtı alırsanız jetonun süresi dolmuş olabilir. 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 Device Access bakın.