O Google Nest Hub Max tela é compatível com a API Smart Device Management (SDM). Este dispositivo retorna um tipo de dispositivo de DISPLAY:
sdm.devices.types.DISPLAY
O Google Nest Hub Max tem uma câmera, que funciona da mesma forma que uma tipo de dispositivo CÂMERA.
Características
Referência
As seguintes características, comandos ou eventos estão relacionados a este dispositivo:
Características | Descrição | Comandos | Eventos |
---|---|---|---|
CameraEventImage | Essa característica pertence a qualquer dispositivo que oferece suporte à geração de imagens a partir de eventos. | GenerateImage | |
CameraImage | Essa característica pertence a qualquer dispositivo compatível com a captura de imagens. | ||
CameraLiveStream | Essa característica pertence a qualquer dispositivo compatível com a transmissão ao vivo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Essa característica pertence a qualquer dispositivo que oferece suporte a eventos de detecção de movimento. | Movimento | |
CameraPerson | Essa característica pertence a qualquer dispositivo compatível com eventos de detecção de pessoas. | Pessoa | |
CameraSound | Essa característica pertence a qualquer dispositivo que oferece suporte a eventos de detecção de som. | Som | |
Informações | Essa característica pertence a qualquer dispositivo para informações relacionadas ao dispositivo. |
JSON
A ausência de uma característica em uma resposta GET indica que a característica ou não está disponível para o dispositivo no momento. Consulte Tipos de dispositivo para mais opções informações imprecisas ou inadequadas.
{ "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" } } }
Gerenciar eventos da câmera
Os seguintes eventos podem ser acionados por um tipo de dispositivo DISPLAY:Tipo | Elemento | Descrição |
---|---|---|
Evento | Evento Motion do traço CameraMotion | A câmera detectou movimento. |
Evento | Evento Person da característica CameraPerson | Uma pessoa foi detectada pela câmera. |
Evento | Evento de som da característica CameraSound | A câmera detectou som. |
Payload
{ "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" ] }
eventId
que pode ser usado com o
GenerateImage
kubectl. Esse comando retorna um URL de download da imagem da câmera relacionada ao
evento:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "1GfoI8sZUnc79jrq7YfVodeqtf..."
}
}
Resposta
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Fazer o download de uma imagem da câmera
Faça uma chamada GET para o url
de uma
a resposta do comando GenerateImage,
usando token
no cabeçalho de autorização HTTP com autorização básica, para
faça o download da imagem da câmera:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
Use os parâmetros de consulta width
ou height
para personalizar a resolução do
imagem baixada. Somente um desses parâmetros precisa ser especificado. O outro
é dimensionado automaticamente de acordo com a proporção da câmera.
Por exemplo, se a proporção da câmera for 4:3, faça o download da imagem da câmera com resolução de 480 x 360, especifique a largura ou a altura:
Largura
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
Outras restrições ao URL de download se aplicam:
- Se ambos os parâmetros forem fornecidos no URL,
width
será usado eheight
. é ignorado. - Se nenhum parâmetro for fornecido no URL, o valor padrão 480 será escolhido para o
width
:
Confira as características de CameraImage para informações sobre propriedades da imagem.
Acessar uma transmissão ao vivo
A transmissão ao vivo de uma câmera pode ser acessada. Os seguintes formatos de transmissão são compatível com este dispositivo:
- RTSP
Para acessar uma lista completa de câmeras e formatos de transmissão compatíveis, consulte Dispositivos compatíveis.
Para acessar uma transmissão ao vivo, use a opção "GerarFormatStream" da função CameraLiveStream característica.
RTSP
Para um fluxo RTSP, o
Comando GenerateRtspStream do comando de característica do CameraLiveStream.
retorna o URL do fluxo e o streamToken
relacionado:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Resposta
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Em seguida, use esse URL para acessar a transmissão ao vivo da câmera:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
Os URLs de transmissão ao vivo do RTSP não podem ser compartilhados entre clientes. Um URL de stream só pode ser usado por um cliente de cada vez. Se vários clientes quiserem transmitir da mesma câmera ao mesmo tempo, os comandos RTSP devem ser enviados para cada cliente individual e cada cliente deve usar o próprio URL de stream.
Estender uma transmissão ao vivo
As sessões de transmissão ao vivo da câmera só são válidas por 5 minutos. Se você precisar estender o ciclo de vida de uma transmissão ao vivo, use o comando "Estender"Format"Estender" da característica CameraLiveStream do formato de transmissão que você gerou.
RTSP
Para estender um stream RTSP, use o
ExtendRtspStream do comando de característica do CameraLiveStream para
receber novos streamExtensionToken
e streamToken
valores:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Resposta
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Atualize o URL de stream com esses novos valores para continuar visualizando o transmissão ao vivo:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Interromper uma transmissão ao vivo
Sempre que você não estiver mais usando a transmissão ao vivo da câmera, interrompa-a e e invalidar o stream. Para isso, use o fluxoFormatde parada adequado da função CameraLiveStream característica do formato de transmissão que você gerou.
RTSP
Para interromper um stream RTSP, use o token para invalidar com o StopRtspStream do comando de característica do CameraLiveStream:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Resposta
{}
Erros
Os seguintes códigos de erro podem ser retornados em relação a este dispositivo:
Mensagem de erro | RPC | Solução de problemas |
---|---|---|
A imagem da câmera não está mais disponível para download. | DEADLINE_EXCEEDED |
As imagens do evento expiram 30 segundos após a publicação. Faça o download da imagem antes que ela expire. |
O ID do evento não pertence à câmera. | FAILED_PRECONDITION |
Use a eventID correta retornada pelo evento da câmera. |
Consulte a Referência do código de erro da API para a lista completa de códigos de erro da API.