Google Nest Hub Max reklama displayowa jest obsługiwany w interfejsie Smart Device Management (SDM). To urządzenie zwraca typ urządzenia z DISPLAY:
sdm.devices.types.DISPLAY
Google Nest Hub Max jest wyposażony w aparat, który działa tak samo jak typu urządzenia CAMERA.
Cechy
Dokumentacja
Te cechy, polecenia lub zdarzenia są powiązane z tym urządzeniem:
Cecha | Opis | Polecenia | Wydarzenia |
---|---|---|---|
CameraEventImage | Ta cecha należy do każdego urządzenia, które obsługuje generowanie obrazów na podstawie zdarzeń. | GenerateImage | |
CameraImage | Ta cecha należy do każdego urządzenia, które obsługuje robienie zdjęć. | ||
CameraLiveStream | Ta cecha należy do każdego urządzenia, które obsługuje transmisje na żywo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Ta cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania ruchu. | Ruch | |
CameraPerson | Ta cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania osób. | Osoba | |
CameraSound | Ta cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania dźwięku. | Dźwięk | |
Informacje | Ta cecha należy do każdego urządzenia w przypadku informacji związanych z urządzeniem. |
JSON
Brak danej cechy w odpowiedzi GET wskazuje, że funkcja nie jest obecnie dostępna dla tego urządzenia. Zobacz Więcej funkcji Typy urządzeń i informacjami o nich.
{ "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" } } }
Obsługa zdarzeń zarejestrowanych przez kamerę
Urządzenia typu DISPLAY mogą wywoływać te zdarzenia:Typ | Element | Opis |
---|---|---|
Zdarzenie | Zdarzenie ruchu dotyczące cechy CameraMotion | Kamera wykryła ruch. |
Zdarzenie | Zdarzenie typu Person powiązane z cechą CameraPerson | Kamera wykryła jakąś osobę. |
Zdarzenie | Zdarzenie dźwięk związane z cechą CameraSound | Kamera wykryła dźwięk. |
Ładunek
{ "eventId" : "6d12911e-0181-495c-97b5-b6e8884c50ae",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "FJ-QMyhCTKninhnimPOwVDjELx...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
, który może zostać użyty z parametrem
GenerateImage
. To polecenie zwraca adres URL pobierania obrazu z aparatu powiązanego z
zdarzenie:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "1GfoI8sZUnc79jrq7YfVodeqtf..."
}
}
Odpowiedź
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Pobierz obraz z kamery
Wykonaj wywołanie GET dla funkcji url
z
odpowiedź na polecenie GenerateImage,
za pomocą token
w nagłówku autoryzacji HTTP z autoryzacją podstawową, aby
pobierz obraz aparatu:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
Za pomocą parametrów zapytania width
lub height
możesz dostosować rozdzielczość
pobranego obrazu. Musisz określić tylko jeden z tych parametrów. Druga
jest skalowany automatycznie odpowiednio do formatu obrazu kamery.
Jeśli na przykład obraz kamery wynosi 4:3, to aby pobrać obraz z kamery dla rozdzielczości 480 x 360 określ szerokość lub wysokość:
Szerokość
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
Wysokość
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
Obowiązują też inne ograniczenia dotyczące adresu URL pobierania:
- Jeśli w adresie URL są podane oba parametry, używane jest
width
, aheight
jest ignorowany. - Jeśli w adresie URL nie podasz żadnego z tych parametrów, w polu adresu URL zostanie wybrana domyślna wartość 480
width
Zobacz cechę CameraImage i: o właściwościach obrazów.
Dostęp do transmisji na żywo
Możesz uzyskać dostęp do transmisji na żywo z kamery. Poniższe formaty strumieni są obsługiwane przez to urządzenie:
- RTSP
Pełną listę kamer i obsługiwanych formatów transmisji znajdziesz w artykule Obsługiwane urządzenia
Aby uzyskać dostęp do transmisji na żywo, użyj odpowiedniej opcji WygenerujFormattransmisję polecenia CameraLiveStream cechę.
RTSP
W przypadku strumienia RTSP parametr
Polecenie GenerateRtspStream w poleceniu właściwości CameraLiveStream
zwraca adres URL transmisji i powiązany streamToken
:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Odpowiedź
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Następnie użyj adresu URL transmisji, aby uzyskać dostęp do transmisji na żywo z kamery:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
Adresów URL transmisji na żywo z protokołem RTSP nie można udostępniać między klientami. Adresu URL transmisji może używać tylko jeden klient naraz. Jeśli wielu klientów chce jednocześnie przesyłać dane z tej samej kamery, polecenia RTSP muszą być wysyłane do każdego z nich, a każdy klient musi używać własnego adresu URL strumienia.
Przedłużanie transmisji na żywo
Sesje transmisji na żywo z kamery trwają tylko 5 minut. Jeśli chcesz przedłużyć czas trwania transmisji na żywo, użyj odpowiedniego polecenia ExtendFormatStream w właściwości CameraLiveStream dla wygenerowanego formatu transmisji.
RTSP
Aby przedłużyć strumień RTSP, użyj funkcji
Polecenie ExtendRtspStream polecenia właściwości CameraLiveStream w celu
pobierz nowe streamExtensionToken
i streamToken
wartości:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Odpowiedź
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Zaktualizuj adres URL transmisji za pomocą tych nowych wartości, aby nadal wyświetlać transmisja na żywo:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Kończenie transmisji na żywo
Za każdym razem, gdy nie korzystasz już z transmisji na żywo z kamery, przerwij ją, unieważni strumień. Aby to zrobić, użyj odpowiedniego przycisku ZatrzymaniaFormattransmisji polecenia CameraLiveStream dla wygenerowanego formatu strumienia.
RTSP
Aby zatrzymać strumień RTSP, użyj tokena do unieważnienia Polecenie StopRtspStream w poleceniu właściwości CameraLiveStream:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Odpowiedź
{}
Błędy
W przypadku tego urządzenia mogą zostać zwrócone następujące kody błędów:
Komunikat o błędzie | RPC | Rozwiązywanie problemów |
---|---|---|
Zdjęcie z aparatu nie jest już dostępne do pobrania. | DEADLINE_EXCEEDED |
Obrazy zdarzeń wygasają po 30 sekundach od opublikowania zdarzenia. Pamiętaj, aby pobrać obraz przed wygaśnięciem ważności. |
Identyfikator zdarzenia nie należy do kamery. | FAILED_PRECONDITION |
Użyj prawidłowej wartości eventID zwróconej przez zdarzenie kamery. |
Zapoznaj się z informacjami na temat kodu błędu interfejsu API w przypadku: pełną listę kodów błędów interfejsu API.