
Google Nest Hub Max ekranı, Smart Device Management (SDM) API'de desteklenir. Bu cihaz, DISPLAY adlı cihaz türünü döndürüyor:
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 ilgilidir:
Özellik | Açıklama | Komutlar | Etkinlikler |
---|---|---|---|
CameraEventImage | Bu özellik, etkinliklerden görüntü 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 cihazlara aittir. | 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 alakalı bilgiler için kullanılan tüm cihazlara aittir. |
JSON
GET yanıtında bir özelliğin olmaması, özelliğin veya özelliğin şu anda cihaz için 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 bir DISPLAY cihaz türünden tetiklenebilir:Tür | Öğe | Açıklama |
---|---|---|
Etkinlik | CameraMotion özelliğinin Motion etkinliği | Kamera hareket algıladı. |
Etkinlik | CameraPerson özelliğinin Person etkinliği | Kamera, birini algıladı. |
Etkinlik | CameraSound özelliğinin ses etkinliği | Kamera ses algıladı. |
Yük
{ "eventId" : "102c02a6-ec61-471f-b89f-8c05b069f0b2",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "x2f7zFbf7d7ZuAo1wuLduwgGOv...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
içerir. Bu komut, etkinlikle ilgili kamera resmi için bir indirme URL'si döndürür:
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "EazvSZkkEZ0No2hruM4tJqmZUz..."
}
}
Yanıt
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Kamera görüntüsünü indirin
Kamera görüntüsünü indirmek için Temel yetkilendirme ile HTTP Yetkilendirmesi başlığında token
öğesini kullanarak bir GenerateImage komut yanıtından url
için GET çağrısı yapı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 480 x 360 çözünürlüklü kamera resmini 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
Boy
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
İndirme URL'siyle ilgili diğer kısıtlamalar geçerlidir:
- URL'de her iki parametre de sağlanırsa
width
kullanılır veheight
yoksayılır. - URL'de hiçbir parametre sağlanmazsa
width
için varsayılan değer 480 olarak seçilir.
Resim özellikleri hakkında bilgi için KameraGörüntü özelliğine bakın.
Canlı yayına erişme
Kamerayla yapılan canlı yayına erişilebilir. Bu cihazda aşağıdaki akış biçimleri destekleniyor:
- RTSP
Kameraların tam listesi ve desteklenen yayın biçimleri için Desteklenen Cihazlar bölümüne bakın.
Bir canlı yayına erişmek içinKameraLiveStreamözelliğinin uygun FormatAkış oluştur komutunu kullanın.
RTSP
Bir RTSP akışı için CameraLiveStream özellik 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 yayın URL'sini kullanın:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
RTSP canlı yayın URL'leri müşteriler arasında paylaşılamaz. Bir akış URL'si aynı anda yalnızca bir istemci tarafından kullanılabilir. Aynı anda birden fazla istemci aynı kameradan yayın yapmak istiyorsa RTSP komutları her istemci için ayrı ayrı gönderilmelidir ve her istemci kendi akış URL'sini kullanmalıdır.
Canlı yayının süresini uzatma
Kamera canlı yayın oturumları yalnızca 5 dakika boyunca geçerlidir. Bir canlı yayının ömrünü uzatmak istiyorsanız oluşturduğunuz yayın biçimi için KameraLiveStream özelliğinin uygun ExtendFormatStream komutunu kullanın.
RTSP
Bir RTSP akışını genişletmek için CameraLiveStream özellik komutunun 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 şu yeni değerlerle güncelleyin:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Canlı yayını durdurma
Kamera canlı yayınını sonlandırdığınızda yayını durdurmanız ve geçersiz kılmanız gerekir. Bunu yapmak için, oluşturduğunuz akış biçimi için uygun olanKameraLiveStreamözelliğinin uygun FormatAkış Durdur komutunu kullanın.
RTSP
Bir RTSP akışını durdurmak için CameraLiveStream özellik komutunun StopRtspStream komutuyla geçersiz kılmak üzere 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ı | RPC | Sorun giderme |
---|---|---|
Kamera resmi artık indirilemiyor. | DEADLINE_EXCEEDED |
Etkinlik resimlerinin süresi, etkinlik yayınlandıktan 30 saniye sonra dolar. Resmi, süresi dolmadan önce indirmeyi unutmayın. |
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.