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, fotoğraf ç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. | Person | |
| 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 (Kişi) etkinliği | Kamera bir kişi algıladı. |
| Etkinlik | CameraSound özelliğinin ses etkinliği | Kamera ses algıladı. |
Yük
{
"eventId" : "f39b35b7-21ba-4cf4-bbf0-5d36b21b345d",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.CameraMotion.Motion" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "hkDG-nDge7SgosWYto0eOCLQeQ...",
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}eventId bulunur. 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" : "Xza0fN83xY5p88UNrpa-Bx55Hh..."
}
}
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. HTTP yetkilendirme başlığında token öğesini temel yetkilendirmeyle 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=480Yükseklik
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360İndirme URL'siyle ilgili başka kısıtlamalar da vardır:
- URL'de her iki parametre de sağlanırsa
widthkullanılır veheightyoksayılır. - URL'de iki parametre de sağlanmazsa
widthiçin varsayılan 480 değeri seçilir.
Resim özellikleriyle ilgili 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 akış biçimleri desteklenir:
- RTSP
Kameraların ve desteklenen akış biçimlerinin tam listesi için Desteklenen Cihazlar sayfasına bakın.
Canlı yayına erişmek içinCameraLiveStreamözelliğinin uygun GenerateFormatStream komutunu kullanın.
RTSP
Bir RTSP akışı için CameraLiveStream özelliğinin 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, akış URL'sini kullanarak kamera canlı yayınına erişin:
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ğinin uygun FormatStream komutunu kullanın.
RTSP
Bir RTSP akışını uzatmak için CameraLiveStream özelliği 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 aşağıdaki 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. Bunu yapmak 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ğinin 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ı | RPC | 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, geçerlilik süresi dolmadan önce indirdiğinizden emin olun. |
| Etkinlik kimliği kameraya ait değil. | FAILED_PRECONDITION |
Kamera olayı 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.