
Google Nest Hub Max ekranı, Smart Device Management (SDM) API'de desteklenir. Bu cihaz, DISPLAY cihaz türünü döndürür:
sdm.devices.types.DISPLAY
Google Nest Hub Max'te, KAMERA cihaz türüyle aynı şekilde çalışan bir kamera bulunur.
Özellikler
Referans
Aşağıdaki özellikler, komutlar veya etkinlikler bu cihazla ilişkilidir:
Özellik | Açıklama | Komutlar | Etkinlikler |
---|---|---|---|
CameraEventImage | Bu özellik, etkinliklerden resim oluşturmayı destekleyen tüm cihazlara aittir. | GenerateImage | |
CameraImage | Bu özellik, resim çekmeyi destekleyen tüm cihazlara aittir. | ||
CameraLiveStream | Bu özellik, canlı yayını destekleyen tüm cihazlarda kullanılabilir. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Bu özellik, hareket algılama etkinliklerini destekleyen tüm cihazlara aittir. | �Hareket | |
CameraPerson | Bu özellik, kişi algılama etkinliklerini destekleyen tüm cihazlara aittir. | Kişi | |
CameraSound | Bu özellik, ses algılama etkinliklerini destekleyen tüm cihazlara aittir. | Ses | |
Bilgi | Bu özellik, cihazla ilgili bilgiler için herhangi bir cihaza aittir. |
JSON
Bir GET yanıtında özelliğin olmaması, özelliğin veya işlevin cihazda şu anda kullanılamadığını gösterir. Daha fazla bilgi için Cihaz türleri bölümüne bakın.
{ "type" : "sdm.devices.types.DISPLAY", "traits" : { "sdm.devices.traits.CameraEventImage" : {}, "sdm.devices.traits.CameraImage" : { "maxImageResolution" : { "width" : 1280, "height" : 960 } }, "sdm.devices.traits.CameraLiveStream" : { "maxVideoResolution" : { "width" : 640, "height" : 480 }, "videoCodecs" : ["H264"], "audioCodecs" : ["AAC"], "supportedProtocols" : ["WEB_RTC"] }, "sdm.devices.traits.CameraMotion" : {}, "sdm.devices.traits.CameraPerson" : {}, "sdm.devices.traits.CameraSound" : {}, "sdm.devices.traits.Info" : { "customName" : "My device" } } }
Kamera etkinliklerini işleme
Aşağıdaki etkinlikler DISPLAY cihaz türünden tetiklenebilir:Tür | Öğe | Açıklama |
---|---|---|
Etkinlik | CameraMotion özelliğinin hareket etkinliği | Kamera hareket algıladı. |
Etkinlik | CameraPerson özelliğinin Person etkinliği | Kamera bir kişi algıladı. |
Etkinlik | CameraSound özelliğinin ses etkinliği | Kamera ses algıladı. |
Yük
{ "eventId" : "e0f693ef-10ff-42d4-a739-fe65312b5e4c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "dpkR6ZXalxvqAy58mjQCS85SLi...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
içerir. Bu komut, etkinlikle ilgili kamera görüntüsünün indirme URL'sini döndürür:
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "4lXFsjcSOJEygVH-piTNRQzwdb..."
}
}
Yanıt
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Kamera görüntüsü indirme
Kamera görüntüsünü indirmek için GenerateImage komut yanıtından url
öğesine GET çağrısı yapın. Bunu yaparken HTTP Yetkilendirme başlığında Temel yetkilendirme ile token
öğesini kullanın:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
İndirilen resmin çözünürlüğünü özelleştirmek için width
veya height
sorgu parametrelerini kullanın. Bu parametrelerden yalnızca birinin belirtilmesi gerekir. Diğer parametre, kameranın en boy oranına göre otomatik olarak ölçeklendirilir.
Örneğin, kameranın en boy oranı 4:3 ise kamera görüntüsünü 480 x 360 çözünürlükte indirmek için genişliği veya yüksekliği belirtin:
Genişlik
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
Yükseklik
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
İndirme URL'siyle ilgili diğer kısıtlamalar:
- URL'de her iki parametre de sağlanırsa
width
kullanılır veheight
yoksayılır. - URL'de iki parametre de sağlanmazsa
width
için varsayılan değer olarak 480 seçilir.
Görüntü özellikleri hakkında bilgi için CameraImage özelliğine bakın.
Canlı yayına erişme
Kameradan alınan canlı yayına erişilebilir. Bu cihazda aşağıdaki yayın biçimleri desteklenir:
- RTSP
Kameraların ve desteklenen yayın biçimlerinin tam listesi için Desteklenen Cihazlar başlıklı makaleyi inceleyin.
Canlı yayına erişmek içinCameraLiveStreamözelliğinin uygun GenerateFormatStream komutunu kullanın.
RTSP
Bir RTSP akışı için CameraLiveStream özelliği komutunun GenerateRtspStream komutu, akış URL'sini ve ilgili streamToken
değerini döndürür:
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Yanıt
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Ardından, kamera canlı yayınına erişmek için akış URL'sini kullanın:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
RTSP canlı yayın URL'leri istemciler arasında paylaşılamaz. Yayın URL'si aynı anda yalnızca bir istemci tarafından kullanılabilir. Birden fazla istemci aynı anda aynı kameradan yayın yapmak istiyorsa her istemci için ayrı RTSP komutları gönderilmeli ve her istemci kendi yayın URL'sini kullanmalıdır.
Canlı yayını uzatma
Kamera canlı yayın oturumları yalnızca 5 dakika sürer. Bir canlı yayının ömrünü uzatmanız gerekiyorsa oluşturduğunuz yayın biçimi için uygun CameraLiveStream özelliği FormatExtendStream komutunu kullanın.
RTSP
Bir RTSP akışını uzatmak için CameraLiveStream özelliğinin ExtendRtspStream komutunu kullanarak yeni streamExtensionToken
ve streamToken
değerlerini alın:
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Yanıt
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Canlı yayını izlemeye devam etmek için yayın URL'sini bu yeni değerlerle güncelleyin:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Canlı yayını durdurma
Kamera canlı yayınını kullanmadığınız zamanlarda yayını durdurmanız ve geçersiz kılmanız gerekir. Bunun için, oluşturduğunuz akış biçimi içinCameraLiveStreamözelliğinin uygun StopFormatStream komutunu kullanın.
RTSP
Bir RTSP akışını durdurmak için CameraLiveStream özelliği komutunun StopRtspStream komutuyla geçersiz kılınacak jetonu kullanın:
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Yanıt
{}
Hatalar
Bu cihazla ilgili olarak aşağıdaki hata kodları döndürülebilir:
Hata Mesajı | TBG | Sorun giderme |
---|---|---|
Kamera görüntüsü artık indirilemiyor. | DEADLINE_EXCEEDED |
Etkinlik resimlerinin süresi, etkinlik yayınlandıktan 30 saniye sonra dolar. Resmi süresi dolmadan önce indirdiğinizden emin olun. |
Etkinlik kimliği kameraya ait değil. | FAILED_PRECONDITION |
Kamera etkinliği tarafından döndürülen doğru eventID değerini kullanın. |
API hata kodlarının tam listesi için API Hata Kodu Referansı'na bakın.