Pantalla

Nest Hub Max

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:

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 la toma de 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
InformaciónEsta 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.
Por ejemplo, aquí la cámara detectó movimiento:

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" ] }
La carga útil de este evento contiene un 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 y height. 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.