
Todas as Nest Cams legadas são compatíveis com a API Smart Device Management (SDM). Esses dispositivos retornam um tipo de CAMERA:
sdm.devices.types.CAMERA
A Google Nest Doorbell (legada) e o Google Nest Hub Max também funcionam como câmeras e características semelhantes, mas retornam os tipos de dispositivo DOORBELL e DISPLAY, respectivamente.
Consulte os guias de campainha e tela para ver mais informações sobre os recursos exclusivos desses tipos de dispositivo.
Características
Referência
As seguintes características, comandos ou eventos estão relacionados a este dispositivo:
Característica | Descrição | Comandos | Eventos |
---|---|---|---|
Imagem do evento da câmera | Essa característica pertence a qualquer dispositivo compatível com a geração de imagens a partir de eventos. | GenerateImage | |
Imagem da câmera | Essa característica pertence a qualquer dispositivo compatível com a captura de imagens. | ||
Transmissão ao vivo de câmera | Essa característica pertence a qualquer dispositivo compatível com transmissão ao vivo. | GenerateRtspStream ExtendedRtspStream StopRtspStream | |
CâmeraMotion | Essa característica pertence a qualquer dispositivo compatível com eventos de detecção de movimento. | Movimento | |
Pessoa da câmera | Essa característica pertence a qualquer dispositivo compatível com eventos de detecção de pessoas. | Pessoa | |
Som da câmera | Essa característica pertence a qualquer dispositivo compatível com eventos de detecção de som. | Som | |
Informações | Essa característica pertence a qualquer dispositivo para informações relacionadas. |
JSON
A ausência de uma característica em uma resposta GET indica que a característica ou o recurso não está disponível para o dispositivo no momento. Consulte Tipos de dispositivos para mais informações.
{ "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" } } }
Processar eventos da câmera
Os seguintes eventos podem ser acionados por um tipo de dispositivo CAMERA, DOORBELL ou DISPLAY, que inclui uma câmera, como a Google Nest Doorbell (legada) ou o Google Nest Hub Max:Tipo | Elemento | Descrição |
---|---|---|
Evento | Evento Motion da característica CameraMotion | A câmera detectou movimento. |
Evento | Evento Person da característica CameraPerson | Uma pessoa foi detectada pela câmera. |
Evento | Evento Sound do CameraCamera. | O som foi detectado pela câmera. |
Payload
{ "eventId" : "474559af-afef-4b85-922b-cea8c42ad5b4",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "WpszbaCKcm3byXPmLOeAnf3plO...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
que pode ser usado com o
comando
GenerateImage. Este comando retorna o 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" : "JuJrklQDWBIhcCSDdIO5skVsyp..."
}
}
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
usando uma resposta de comando GenerateImage usando o token
no cabeçalho da autorização HTTP com a autorização básica para fazer 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 da
imagem salva. Somente um desses parâmetros precisa ser especificado. O outro
parâmetro é dimensionado automaticamente de acordo com a proporção da câmera.
Por exemplo, se a proporção da câmera for 4:3, especifique a largura ou a altura para fazer o download da imagem com 480 x 360:
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 os dois parâmetros forem fornecidos no URL,
width
será usado eheight
será ignorado. - Se nenhum parâmetro for fornecido no URL, um valor padrão de 480 será escolhido para o
width
.
Consulte a característica CameraImage para informações sobre propriedades de imagem.
Acessar uma transmissão ao vivo
A transmissão ao vivo de uma câmera pode ser acessada. Os seguintes formatos de stream são compatíveis com este dispositivo:
- RTSP.
Para ver uma lista completa de câmeras e formatos de stream compatíveis, consulte Dispositivos compatíveis.
Para acessar uma transmissão ao vivo, use o comando GenerateFormatStream da característica CameraLiveStream.
RTSP.
Para um fluxo RTSP, o
comando GenerateRtspStream do comando CameraLiveStream
retorna o URL do stream e 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 o URL da transmissão 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 RTSP não podem ser compartilhados entre clientes. Um URL de stream só pode ser usado por um cliente por vez. Se vários clientes quiserem transmitir da mesma câmera ao mesmo tempo, os comandos RTSP precisam ser enviados para cada cliente, e cada cliente precisa usar o próprio URL de stream.
Ampliar uma transmissão ao vivo
As sessões de câmera ao vivo são válidas por apenas cinco minutos. Se você precisar estender o ciclo de vida de uma transmissão ao vivo, use o comando ExtendedFormatStream da característica CameraLiveStream para o formato de transmissão que você gerou.
RTSP.
Para estender um stream RTSP, use o
comando ExtendedRtspStream do comando CameraLiveStream para receber
novos valores streamExtensionToken
e streamToken
:
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 do stream com os novos valores para continuar visualizando a transmissão ao vivo:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Interromper uma transmissão ao vivo
Se você não estiver mais usando a transmissão ao vivo da câmera, pare e invalide a transmissão. Para isso, use o comando StopFormatStream adequado da característica CameraLiveStream para o formato de stream que você gerou.
RTSP.
Para interromper um fluxo RTSP, use o token para invalidar com o comando StopRtspStream do traço da câmera CameraLiveStream:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Resposta
{}
Erros
Os códigos de erro a seguir 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 da expiração. |
O ID do evento não pertence à câmera. | FAILED_PRECONDITION |
Use o eventID correto retornado pelo evento da câmera. |
Consulte a referência do código de erro da API para ver a lista completa de códigos de erro.