Timbre (heredado)

Nest Hello

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) tiene una cámara, que funciona de la misma manera que un tipo de dispositivo CAMERA.

Rasgos

Referencia

Los siguientes rasgos, comandos o eventos están relacionados con este dispositivo:

RasgoDescripciónComandosEventos
CameraEventImageEsta característica pertenece a cualquier dispositivo que admita la generación de imágenes a partir de eventos.GenerateImage
CameraImageEsta característica pertenece a cualquier dispositivo que admita tomar imágenes.
CameraLiveStreamEsta característica pertenece a cualquier dispositivo que admita transmisiones en vivo.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionEste rasgo 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
CameraSoundEste rasgo pertenece a cualquier dispositivo que admita eventos de detección de sonido.Sonido
DoorbellChimeEsta característica pertenece a cualquier dispositivo que admita un timbre y los eventos de presión relacionados.Campanilla
InformaciónEste atributo pertenece a cualquier dispositivo para obtener información relacionada con él.

JSON

La ausencia de un atributo en una respuesta GET indica que el atributo o la función no están disponibles actualmente para el dispositivo. 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"
    }
  }
}

Controla los eventos de la cámara y el timbre

Los siguientes eventos pueden activarse desde un tipo de dispositivo DOORBELL:

Tipo Elemento Descripción
Evento Evento Motion del atributo CameraMotion La cámara detectó movimiento.
Evento Evento Person del atributo CameraPerson La cámara detectó a una persona.
Evento Sound del trait CameraSound La cámara detectó un sonido.
Evento Evento Timbre del trait DoorbellChime Se presionó el timbre.
Por ejemplo, aquí se presionó el botón del timbre:

Carga útil

{
  "eventId" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "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" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
  }
}

Respuesta

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

Descarga una imagen de la cámara

Realiza una llamada GET a url desde una respuesta del comando GenerateImage, con 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 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 ignora height.
  • Si no se proporciona ninguno de los parámetros en la URL, se elige un valor predeterminado de 480 para width.

Consulta el atributo CameraImage para obtener información sobre las propiedades de 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 apropiado de la funciónCameraLiveStream.

RTSP

Para una transmisión RTSP, el comando GenerateRtspStream del comando de la función 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 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 de la función CameraLiveStream para el formato de transmisión que generaste.

RTSP

Para extender una transmisión RTSP, usa el comando ExtendRtspStream del comando de la función CameraLiveStream para obtener nuevos valores 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 ya no uses una transmisión en vivo de la cámara, debes detenerla y invalidarla. Para ello, usa el comando StopFormatStream adecuado de la característicaCameraLiveStreampara el formato de transmisión que generaste.

RTSP

Para detener una transmisión RTSP, usa el token para invalidarlo con el comando StopRtspStream del comando de la función 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 que venza.
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 obtener la lista completa de los códigos de error de la API.