Cámara (heredada)

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
Nest Cam

Todas las Nest Cams heredadas son compatibles con la API de Smart Device Management (SDM). Estos dispositivos muestran un tipo de cámara CAMERA:

sdm.devices.types.CAMERA

El Google Nest Doorbell (heredado) y el Google Nest Hub Max también funcionan como cámaras y tienen características similares, aunque muestran los tipos de dispositivos DOORBELL y DISPLAY, respectivamente.

Consulta las guías del timbre y de la pantalla a fin de obtener más información sobre las funciones exclusivas de esos tipos de dispositivos.

Rasgos

Reference

Las siguientes características, comandos o eventos están relacionados con este dispositivo:

RasgoDescripciónComandosEventos
CámaraEventImageEsta característica pertenece a cualquier dispositivo que admita la generación de imágenes a partir de eventos.Generar imagen
CámaraCámaraEsta característica pertenece a cualquier dispositivo que admita la toma de imágenes.
Cámara en vivoEsta característica pertenece a cualquier dispositivo que admita transmisiones en vivo.GenerateRtspStream
ExtiendeRtspStream
StopRtspStream
CámaraMovimientoEsta característica pertenece a cualquier dispositivo que admita eventos de detección de movimiento.Movimiento
CameraPersonEsta característica pertenece a cualquier dispositivo que admita eventos de detección de personas.Persona
CámaraSonidoEsta característica pertenece a cualquier dispositivo que admita eventos de detección de sonido.Sonido
InformaciónEsta 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.CAMERA",
  "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 se pueden activar desde un tipo de dispositivo CAMERA o un DOORBELL o DISPLAY que tenga una cámara, como el Google Nest Doorbell (heredado) o el Google Nest Hub Max:

Tipo Elemento Descripción
Evento Evento Motion de la característica CameraMotion La cámara detectó movimiento.
Evento Evento Person de la característica CameraPerson La cámara detectó a una persona.
Evento Evento Sound de la característica CameraSound La cámara detectó sonido.
Por ejemplo, en este caso la cámara detectó movimiento:

Carga útil

{
  "eventId" : "ad51d109-0e2e-41eb-9430-ede96b081987",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "QMdE79DI_cnUCeKNhCLuXfmU_d...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
La carga útil de este evento contiene un 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" : "QgIJO-22vVhEvcM1_k-S1RJuuJ..."
  }
}

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 una respuesta de comando GenerateImage, mediante 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 de forma automática 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 ambos parámetros se proporcionan en la URL, se usa width y se ignora height.
  • 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. Este dispositivo admite los siguientes formatos de transmisión:

  • 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 para generarFormattransmisiones correspondiente de la característicaCameraLiveStream.

RTSP

Para una transmisión RTSP, el comando GenerateRtspStream del comando de característica CameraLiveStream muestra la URL de 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 URL de las transmisiones en vivo de RTSP no se pueden compartir entre clientes. Solo un cliente a la vez puede usar la URL de transmisión. Si varios clientes quieren transmitir desde la misma cámara al mismo tiempo, se deben enviar los comandos de RTSP para cada uno de ellos y cada uno de ellos debe usar su propia URL de transmisión.

Extiende una transmisión en vivo

Las sesiones de transmisión en vivo de la cámara solo son válidas durante 5 minutos. Si necesitas extender la duración de una transmisión en vivo, usa el comando correspondiente de ExtensiónFormatTransmitir del CameraLiveStream para el formato de transmisión que generaste.

RTSP

Para extender una transmisión RTSP, usa el comando ExtendRtspStream del comando de la característica 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

Cuando ya no uses la transmisión en vivo de una cámara, debes detenerla y, luego, invalidarla. Para hacerlo, usa el comando StopFormatStream adecuado de la característicaCameraLiveStreampara el formato de transmisión que generaste.

RTSP

Si deseas detener una transmisión RTSP, usa el token para invalidar el comando 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

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 los eventos vencen 30 segundos después de su publicación. Asegúrate de descargar la imagen antes de la fecha de 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 la API para ver la lista completa de códigos de error de la API.