Todas as Nest Doorbells legadas são compatíveis com a API Smart Device Management (SDM). Este dispositivo retorna um tipo de dispositivo DOORBELL:
sdm.devices.types.DOORBELL
A Google Nest Doorbell (legada) tem uma câmera, que funciona da mesma forma que um tipo de dispositivo de CAMERA.
Características
Referência
As seguintes características, comandos ou eventos estão relacionados a este dispositivo:
Característica | Descrição | Comandos | Eventos |
---|---|---|---|
CameraEventImage | Essa característica pertence a qualquer dispositivo que suporta a 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 transmissões ao vivo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Essa característica pertence a qualquer dispositivo compatível com 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 compatível com eventos de detecção de som. | Som | |
DoorbellChime | Essa característica pertence a qualquer dispositivo que tenha suporte a uma campainha e a eventos de pressionamento relacionados. | Carrilhão | |
Informações | Essa característica pertence a qualquer dispositivo para informações relacionadas a ele. |
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 no momento para o dispositivo. Consulte Tipos de dispositivos para mais informações.
{ "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" } } }
Processar eventos da campainha e da câmera
Os seguintes eventos podem ser acionados em um tipo de dispositivo DOORBELL:Tipo | Elemento | Descrição |
---|---|---|
Evento | Evento Motion da característica CameraMotion | A câmera detectou movimento. |
Evento | Evento Person do atributo CameraPerson | A câmera detectou uma pessoa. |
Evento | Evento Sound da característica CameraSound | A câmera detectou som. |
Evento | Evento Chime do atributo DoorbellChime | A campainha foi tocada. |
Payload
{ "eventId" : "c26b22ce-709d-481d-b4bd-3db8a5fbae50",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "tKmRgmh8cuotXRDBRuO_ztDCpg..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
que pode ser usado com o comando GenerateImage. Esse comando retorna um URL de download para a 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" : "6jiEBB3KSZVTST98cXGhOmFrWx..."
}
}
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 url
a partir de uma resposta de comando GenerateImage, usando o token
no cabeçalho de autorização HTTP com 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, para fazer o download da imagem da câmera com uma 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 informados 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 conferir informações sobre as 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 stream têm suporte a este dispositivo:
- RTSP
Para conferir 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 apropriado da característica CameraLiveStream.
RTSP
Para um stream RTSP, o
comando GenerateRtspStream do comando de característica 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 de cada vez. Se vários clientes quiserem transmitir ao mesmo tempo da mesma câmera, os comandos RTSP precisarão ser enviados para cada cliente, e cada cliente precisará 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 cinco minutos. Se você precisar prolongar a vida útil de uma transmissão ao vivo, use o comando "Prolongar transmissão"Formatda característica CameraLiveStream para o formato de transmissão que você gerou.
RTSP
Para estender um stream RTSP, use o
comando ExtendRtspStream do comando de característica CameraLiveStream para
receber novos valores de 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 da transmissão com estes novos valores para continuar vendo a 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 uma transmissão ao vivo da câmera, será necessário interrompê-la e invalidar a transmissão. Para isso, use o comando PararFormatStream correto da característica CameraLiveStream para o formato de transmissão que você gerou.
RTSP
Para interromper um stream RTSP, use o token para fazer a invalidação com o comando StopRtspStream do comando de característica 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 de código de erro da API para ver a lista completa de códigos de erro.