Tutti i campanelli Nest precedenti sono supportati nell'API Smart Device Management (SDM). Questo dispositivo restituisce un tipo di dispositivo DOORBELL:
sdm.devices.types.DOORBELL
Google Nest Doorbell (legacy) è dotato di una videocamera che funziona come un tipo di dispositivo FOTOCAMERA.
Tratti
Riferimento
I seguenti trait, comandi o eventi sono correlati a questo dispositivo:
Tratto | Descrizione | Comandi | Eventi |
---|---|---|---|
CameraEventImage | Questo tratto appartiene a qualsiasi dispositivo che supporta la generazione di immagini da eventi. | GenerateImage | |
CameraImage | Questo tratto appartiene a qualsiasi dispositivo che supporta l'acquisizione di immagini. | ||
CameraLiveStream | Questo attributo appartiene a qualsiasi dispositivo che supporta il live streaming. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Questo tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento dei movimenti. | Movimento | |
Operatore di macchina | Questo tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento persone. | Persona | |
CameraSound | Questo tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento dei suoni. | Audio | |
DoorbellChime | Questo attributo appartiene a qualsiasi dispositivo che supporta un campanello e gli eventi di pressione correlati. | Chime | |
Informazioni | Questo tratto appartiene a qualsiasi dispositivo per le informazioni relative a tale dispositivo. |
JSON
L'assenza di un tratto in una risposta GET indica che il tratto o la funzionalità non è al momento disponibile per il dispositivo. Per ulteriori informazioni, consulta Tipi di dispositivi.
{ "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" } } }
Gestire gli eventi del campanello e della videocamera
I seguenti eventi possono essere attivati da un tipo di dispositivo DOORBELL:Tipo | Elemento | Descrizione |
---|---|---|
Evento | Evento Motion del tratto CameraMotion | La videocamera ha rilevato un movimento. |
Evento | Evento Persona del trait CameraPerson | La videocamera ha rilevato una persona. |
Evento | Evento Suono del trait CameraSound | La videocamera ha rilevato un suono. |
Evento | Evento Chime del tratto DoorbellChime | Il campanello è stato premuto. |
Payload
{ "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" ] }
eventId
che può essere utilizzato con il comando
GenerateImage. Questo comando restituisce un URL di download per l'immagine della videocamera relativa all'evento:
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
}
}
Risposta
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Scaricare un'immagine della fotocamera
Effettua una chiamata GET a url
da una risposta al comando GenerateImage, utilizzando token
nell'intestazione di autorizzazione HTTP con autorizzazione di base per scaricare l'immagine della fotocamera:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
Utilizza i parametri di query width
o height
per personalizzare la risoluzione dell'immagine scaricata. È necessario specificare solo uno di questi parametri. L'altro
parametro viene ridimensionato automaticamente in base alle proporzioni della videocamera.
Ad esempio, se le proporzioni della fotocamera sono 4:3, per scaricare l'immagine della fotocamera con una risoluzione di 480 x 360 specifica la larghezza o l'altezza:
Larghezza
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
Altezza
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
Si applicano altre limitazioni all'URL di download:
- Se nell'URL vengono forniti entrambi i parametri, viene utilizzato
width
eheight
viene ignorato. - Se nell'URL non viene fornito nessuno dei due parametri, viene scelto un valore predefinito di 480 per
width
.
Consulta la sezione CameraImage per informazioni sulle proprietà delle immagini.
Accedere a un live streaming
È possibile accedere allo stream in diretta di una videocamera. Per questo dispositivo sono supportati i seguenti formati di stream:
- RTSP
Per un elenco completo delle videocamere e dei formati di stream supportati, consulta Dispositivi supportati.
Per accedere a uno stream in diretta, utilizza il comando GenerateFormatStream appropriato del CameraLiveStream trait.
RTSP
Per uno stream RTSP, il comando
GenerateRtspStream del comando del tratto CameraLiveStream
restituisce l'URL dello stream e il relativo streamToken
:
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Risposta
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Quindi utilizza l'URL dello stream per accedere al live streaming della videocamera:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
Gli URL dei live streaming RTSP non possono essere condivisi tra i client. Un URL stream può essere utilizzato da un solo client alla volta. Se più client vogliono trasmettere in streaming dalla stessa videocamera contemporaneamente, i comandi RTSP devono essere inviati per ogni singolo client e ogni singolo client deve utilizzare il proprio URL stream.
Estendere un live streaming
Le sessioni di live streaming della videocamera sono valide solo per 5 minuti. Se devi estendere la durata di un live streaming, usa il comando EstendiFormatstream appropriato del percorso CameraLiveStream per il formato dello stream che hai generato.
RTSP
Per estendere uno stream RTSP, utilizza il comando
ExtendRtspStream del comando del tratto CameraLiveStream per
ottenere nuovi valori streamExtensionToken
e streamToken
:
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Risposta
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Aggiorna l'URL stream con questi nuovi valori per continuare a visualizzare il live streaming:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Interrompere un live streaming
Ogni volta che non utilizzi più la trasmissione in live streaming di una videocamera, devi interromperla e invalidarla. Per farlo, utilizza il comando StopFormatStream appropriato della funzionalità CameraLiveStream per il formato di streaming che hai generato.
RTSP
Per interrompere uno stream RTSP, utilizza il token per invalidarlo con il comando StopRtspStream del comando del tratto CameraLiveStream:
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Risposta
{}
Errori
Potrebbero essere restituiti i seguenti codici di errore relativi a questo dispositivo:
Messaggio di errore | RPC | Risoluzione dei problemi |
---|---|---|
L'immagine della fotocamera non è più disponibile per il download. | DEADLINE_EXCEEDED |
Le immagini degli eventi scadono 30 secondi dopo la pubblicazione dell'evento. Assicurati di scaricare l'immagine prima della scadenza. |
L'ID evento non appartiene alla videocamera. | FAILED_PRECONDITION |
Utilizza il valore eventID corretto restituito dall'evento della videocamera. |
Consulta il riferimento ai codici di errore dell'API per un elenco completo dei codici di errore dell'API.