
Todos los Nest Doorbells heredados son compatibles con la API de Smart Device Management (SDM). Este dispositivo muestra un tipo de dispositivo DOORBELL:
sdm.devices.types.DOORBELL
El Google Nest Doorbell (heredado) incluye una cámara que funciona igual que un tipo de dispositivo CAMERA.
Rasgos
Referencia
Los siguientes rasgos, comandos o eventos están relacionados con este dispositivo:
| Rasgo | Descripción | Comandos | Eventos |
|---|---|---|---|
| CameraEventImage | Este rasgo pertenece a cualquier dispositivo que admita la generación de imágenes a partir de eventos. | GenerateImage | |
| CameraImage | Este rasgo pertenece a cualquier dispositivo que admita la toma de imágenes. | ||
| CameraLiveStream | Este rasgo pertenece a cualquier dispositivo que admita la transmisión en vivo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
| CameraMotion | Este rasgo pertenece a cualquier dispositivo que sea compatible con eventos de detección de movimiento. | Motion | |
| CameraPerson | Esta característica pertenece a cualquier dispositivo que sea compatible con eventos de detección de personas. | Person | |
| CameraSound | Este rasgo pertenece a cualquier dispositivo que sea compatible con eventos de detección de sonido. | Sound | |
| DoorbellChime | Este rasgo pertenece a cualquier dispositivo que admita una campanilla de timbre y eventos de presión relacionados. | Chime | |
| Info | Este rasgo pertenece a cualquier dispositivo para obtener información relacionada con el dispositivo. |
JSON
La ausencia de un rasgo en una respuesta GET indica que el rasgo o la función no están disponibles para el dispositivo en este momento. Consulta Tipos de dispositivos para obtener más información.
{
"type" : "sdm.devices.types.DOORBELL",
"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.DoorbellChime" : {},
"sdm.devices.traits.Info" : {
"customName" : "My device"
}
}
}Cómo controlar eventos de timbres y cámaras
Los siguientes eventos se pueden activar desde un tipo de dispositivo DOORBELL:| Tipo | Elemento | Descripción |
|---|---|---|
| Evento | Evento Motion del trait CameraMotion | La cámara detectó movimiento. |
| Evento | Evento Person del trait CameraPerson | La cámara detectó a una persona. |
| Evento | Evento Sound del trait CameraSound | La cámara detectó sonido. |
| Evento | Evento Chime del trait DoorbellChime | Se presionó el timbre. |
Carga útil
{
"eventId" : "3e7b7488-09ad-41f5-8381-165d5a589759",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "rjn57L02poi7gTFbOCYg0ocaKz..."
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}eventId que se puede usar con el
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" : "nrbIeLo2lIzhuzLdJD7ARyfrsS..."
}
}
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 a la url desde una
GenerateImage respuesta del comando,
usando el 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 de 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=480Altura
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360Se aplican otras restricciones a la URL de descarga:
- Si se proporcionan ambos parámetros en la URL, se usa
widthy se ignoraheight. - Si no se proporciona ningún parámetro en la URL, se elige un valor predeterminado de 480 para el
width.
Consulta el trait CameraImagepara obtener información sobre las propiedades de la imagen.
Cómo acceder a una transmisión en vivo
Se puede acceder a la transmisión en vivo desde una cámara. Se admiten los siguientes formatos de transmisión para 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 del trait CameraLiveStream.
RTSP
Para una transmisión RTSP, el
el comando GenerateRtspStream del comando del 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 la 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 puede usar una URL de transmisión a la vez. 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 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 del CameraLiveStream trait para el formato de transmisión que generaste.
RTSP
Para extender una transmisión RTSP, usa el
ExtendRtspStream comando del comando del trait 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 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 una transmisión en vivo de la cámara, debes detenerla y anularla. Para ello, usa el comando StopFormatStream adecuado del trait CameraLiveStream para el formato de transmisión que generaste.
RTSP
Para detener una transmisión RTSP, usa el token para invalidar con el StopRtspStream comando del comando del trait CameraLiveStream:
Solicitud
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Respuesta
{}
Errores
Se pueden mostrar 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 descargarla. | DEADLINE_EXCEEDED |
Las imágenes de eventos vencen 30 segundos después de que se publica el evento. Asegúrate de descargar la imagen antes del vencimiento. |
| El ID del evento no pertenece a la cámara. | FAILED_PRECONDITION |
Usa el eventID correcto que devuelve el evento de la cámara. |
Consulta la Referencia de códigos de error de la API para ver la lista completa de códigos de error.