La pantalla Google Nest Hub Max es compatible con la API de Smart Device Management (SDM). Este dispositivo muestra un tipo de dispositivo DISPLAY:
sdm.devices.types.DISPLAY
El Google Nest Hub Max cuenta con una cámara, que funciona igual que un tipo de dispositivo: CÁMARA.
Rasgo
Reference
Las siguientes características, 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 la transmisión en vivo. | GenerateRtspStream ExtendRtspStream StopRtspStream . | |
CameraMotion | Esta característica 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 | Esta característica pertenece a cualquier dispositivo que admita eventos de detección de sonido. | Sonido | |
Información | Esta característica pertenece a cualquier dispositivo para la información relacionada con el dispositivo. |
JSON
La ausencia de una característica en una respuesta GET indica que la característica o característica no está disponible actualmente para el dispositivo. Consulta Tipos de dispositivos para obtener más 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" } } }
Cómo controlar 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 trait CameraPerson | La cámara detectó a una persona. |
Evento | Evento Sound de la característica CameraSound | La cámara detectó un sonido. |
Carga útil
{ "eventId" : "f698b6e9-0572-4775-99ab-554c7b944201",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "YtEkPsfcoSs8Gp7h0EJI5xvcHB...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
que se puede usar con el comando GenerateImage. Este comando muestra 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" : "L8dOfhrW5F6e-LvdNK6WDW6s0W..."
}
}
Respuesta
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Cómo descargar una imagen de la cámara
Realiza una llamada GET al url
desde una respuesta de comando GenerateImage mediante token
en el encabezado de autorización HTTP con autorización básica, para descargar 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 se debe especificar uno de estos parámetros. El otro parámetro 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
y se ignoraheight
. - Si no se proporciona ninguno de los parámetros en la URL, se elige un valor predeterminado de 480 para
width
.
Consulta la característica CameraImage para obtener información sobre las propiedades de las imágenes.
Cómo acceder 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 compatibles 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, usa el comando GenerateFormatStream adecuado de la característicaCameraLiveStream.
RTSP
Para una transmisión RTSP, el comando GenerateRtspStream del comando de trait CameraLiveStream muestra la URL de la transmisión y el streamToken
relacionado:
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 transmisión 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 RTSP para cada cliente individual, y cada cliente individual debe usar su propia URL de transmisión.
Cómo extender una transmisión en vivo
Las sesiones de transmisión en vivo con cámara solo son válidas durante 5 minutos. Si necesitas extender la vida útil de una transmisión en vivo, usa el comando ExtendFormatStream correspondiente de la característica CameraLiveStream para el formato de transmisión que generaste.
RTSP
Para extender una transmisión RTSP, usa el comando ExtendRtspStream del comando de trait CameraLiveStream para obtener valores nuevos de streamExtensionToken
y streamToken
:
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 la transmisión en vivo:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Cómo detener una transmisión en vivo
Cada vez que dejes de usar la transmisión en vivo de una cámara, debes detenerla para invalidar la transmisión. Para ello, usa el comando StopFormatStream adecuado de la característicaCameraLiveStreamdel formato de transmisión que generaste.
RTSP
Para detener una transmisión de RTSP, usa el token para invalidar con el comando StopRtspStream del comando de trait 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 | Solución de 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 de su vencimiento. |
El ID del 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 la API para ver la lista completa.