El Google Nest Hub Max publicidad gráfica es compatible con la API de Smart Device Management (SDM). Este dispositivo muestra un tipo de dispositivo de DISPLAY:
sdm.devices.types.DISPLAY
El Google Nest Hub Max incluye una cámara, que funciona igual que un el tipo de dispositivo CAMERA.
Rasgos
Referencia
Los siguientes rasgos, comandos o eventos están relacionados con este dispositivo:
Rasgo | Descripción | Comandos | Eventos |
---|---|---|---|
CameraEventImage | Esta característica pertenece a cualquier dispositivo que admita la generación de imágenes a partir de eventos. | GenerateImage | |
CameraImage | Esta característica pertenece a cualquier dispositivo que admita la toma de imágenes. | ||
CameraLiveStream | Esta característica pertenece a cualquier dispositivo que admita transmisiones en vivo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Este rasgo pertenece a cualquier dispositivo que admita eventos de detección de movimiento. | Movimiento | |
CameraPerson | Esta característica pertenece a cualquier dispositivo que admita eventos de detección de personas. | Persona | |
CameraSound | Este rasgo pertenece a cualquier dispositivo que admita eventos de detección de sonido. | Sonido | |
Información | Esta característica pertenece a cualquier dispositivo para obtener información relacionada con él. |
JSON
La ausencia de una característica en una respuesta GET indica que la característica o no está disponible actualmente para el dispositivo. Consulta Tipos de dispositivos para obtener más información informació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" } } }
Controla los eventos de la cámara
Los siguientes eventos pueden activarse desde un tipo de dispositivo DISPLAY:Tipo | Elemento | Descripción |
---|---|---|
Evento | Evento Motion de la característica CameraMotion | La cámara detectó movimiento. |
Evento | Evento Person del rasgo CameraPerson | La cámara detectó a una persona. |
Evento | Sound del trait CameraSound | La cámara detectó sonido. |
Carga útil
{ "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
que se puede usar con el
GenerateImage
kubectl. Este comando devuelve una URL de descarga para la imagen de la cámara relacionada con el
evento:
Solicitud
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "1GfoI8sZUnc79jrq7YfVodeqtf..."
}
}
Respuesta
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Descargar una imagen de la cámara
Realiza una llamada GET al url
desde un
GenerateImage,
usando el token
en el encabezado de autorización HTTP con la autorización básica, para
descarga la imagen de la cámara:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
Usa los parámetros de consulta width
o height
para personalizar la resolución de la
imagen descargada. Solo es necesario especificar uno de estos parámetros. El otro
se ajusta automáticamente según la relación de aspecto de la cámara.
Por ejemplo, si la relación de aspecto de la cámara es 4:3, para descargar la imagen de la cámara con una resolución de 480 x 360, especifica el ancho o la altura:
Ancho
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
Altura
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
Se aplican otras restricciones a la URL de descarga:
- Si se proporcionan ambos parámetros en la URL, se usa
width
yheight
. se ignora. - Si no se proporciona ninguno de los parámetros en la URL, se elige un valor predeterminado de 480 para el
width
Consulta la característica CameraImage para información sobre las propiedades de las imágenes.
Accede a una transmisión en vivo
Se puede acceder a la transmisión en vivo desde una cámara. Los siguientes formatos de transmisión son compatible con este dispositivo:
- RTSP
Para obtener una lista completa de las cámaras y los formatos de transmisión compatibles, consulta Dispositivos compatibles.
Para acceder a una transmisión en vivo, utiliza la herramienta GenerarFormattransmisión adecuada comando de la CameraLiveStream de la aplicación.
RTSP
Para una transmisión RTSP, el
Comando GenerateRtspStream del comando de trait CameraLiveStream.
Devuelve la URL de transmisión y los streamToken
relacionados:
Solicitud
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Respuesta
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Luego, usa la URL de transmisión para acceder a la transmisión en vivo de la cámara:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
Las URLs de transmisiones en vivo de RTSP no se pueden compartir entre clientes. Solo un cliente a la vez puede usar una URL de transmisión. Si varios clientes quieren transmitir desde la misma cámara al mismo tiempo, se deben enviar comandos de RTSP para cada cliente individual, y cada uno de ellos debe usar su propia URL de transmisión.
Cómo extender una transmisión en vivo
Las sesiones de transmisión en vivo de la cámara solo son válidas por 5 minutos. Si necesitas extender la vida útil de una transmisión en vivo, usa el comando ExtendFormatStream adecuado de la característica CameraLiveStream para el formato de transmisión que generaste.
RTSP
Para extender una transmisión de RTSP, usa el
ExtendRtspStream del comando de la característica CameraLiveStream para
obtener nuevos streamExtensionToken
y streamToken
valores:
Solicitud
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Respuesta
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Actualiza la URL de la transmisión con estos valores nuevos para seguir viendo el transmisión en vivo:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Cómo detener una transmisión en vivo
Cuando ya no uses una transmisión en vivo de la cámara, debes detenerla y invalidar la transmisión. Para ello, utiliza la transmisión deFormatdetención adecuada comando de la CameraLiveStream para el formato de transmisión que generaste.
RTSP
Para detener una transmisión de RTSP, usa el token para invalidar con el StopRtspStream del comando de la característica CameraLiveStream:
Solicitud
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Respuesta
{}
Errores
Es posible que se muestren los siguientes códigos de error en relación con este dispositivo:
Mensaje de error | RPC | Soluciona problemas |
---|---|---|
La imagen de la cámara ya no está disponible para descargar. | DEADLINE_EXCEEDED |
Las imágenes del evento vencen 30 segundos después de que se publica el evento. Asegúrate de descargar la imagen antes del vencimiento. |
El ID de evento no pertenece a la cámara. | FAILED_PRECONDITION |
Usa el eventID correcto que muestra el evento de la cámara. |
Consulta la referencia de códigos de error de API para la lista completa de códigos de error de API.