Il display di Google Nest Hub Max è supportato nell'API Smart Device Management (SDM). Questo dispositivo restituisce un tipo di dispositivo DISPLAY:
sdm.devices.types.DISPLAY
Google Nest Hub Max è dotato di una videocamera, che funziona come un tipo di dispositivo CAMERA.
Tratti
Riferimento
I seguenti tratti, 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 tratto 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 del movimento. | Motion | |
| CameraPerson | Questo tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento persone. | Person | |
| CameraSound | Questo tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento del suono. | Sound | |
| Info | Questo tratto appartiene a qualsiasi dispositivo per le informazioni relative al dispositivo. |
JSON
L'assenza di un tratto in una risposta GET indica che il tratto o la funzionalità non è attualmente disponibile per il dispositivo. Per ulteriori informazioni, consulta Tipi di dispositivi.
{
"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"
}
}
}Gestire gli eventi della videocamera
I seguenti eventi possono essere attivati da un tipo di dispositivo DISPLAY:| Tipo | Elemento | Descrizione |
|---|---|---|
| Evento | Evento di movimento del tratto CameraMotion | La videocamera ha rilevato un movimento. |
| Evento | Evento della persona del tratto CameraPerson | La videocamera ha rilevato una persona. |
| Evento | Evento sonoro del tratto CameraSound | La videocamera ha rilevato un suono. |
Payload
{
"eventId" : "f39b35b7-21ba-4cf4-bbf0-5d36b21b345d",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.CameraMotion.Motion" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "hkDG-nDge7SgosWYto0eOCLQeQ...",
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}eventId che può essere utilizzato con il
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" : "Xza0fN83xY5p88UNrpa-Bx55Hh..."
}
}
Risposta
{
"results" : {
"url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"token" : "g.0.eventToken"
}
}
Scaricare un'immagine della videocamera
Esegui una chiamata GET a url da una
GenerateImage risposta del comando,
utilizzando token nell'intestazione HTTP Authorization con l'autorizzazione di base, per
scaricare l'immagine della videocamera:
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 scalato automaticamente in base alle proporzioni della videocamera.
Ad esempio, se le proporzioni della videocamera sono 4:3, per scaricare l'immagine della videocamera 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=480Altezza
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360Si applicano altre limitazioni all'URL di download:
- Se entrambi i parametri vengono forniti nell'URL, viene utilizzata la
widthe laheightviene ignorata. - Se nessuno dei due parametri viene fornito nell'URL, viene scelto un valore predefinito di 480 per la
width.
Per informazioni sulle proprietà delle immagini, consulta il tratto CameraImage per informazioni sulle proprietà delle immagini.
Accedere a un live streaming
È possibile accedere al live streaming di una videocamera. Per questo dispositivo sono supportati i seguenti formati di streaming:
- RTSP
Per un elenco completo delle videocamere e dei formati di streaming supportati, consulta Dispositivi supportati.
Per accedere a un live streaming, utilizza il comando GenerateFormatStream appropriato del tratto CameraLiveStream.
RTSP
Per uno stream RTSP, il
il comando GenerateRtspStream 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 dello stream può essere utilizzato da un solo client alla volta. Se più client vogliono eseguire lo streaming dalla stessa videocamera contemporaneamente, è necessario inviare i comandi RTSP per ogni singolo client e ogni singolo client deve utilizzare il proprio URL dello 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, utilizza il comando ExtendFormatStream appropriato del tratto CameraLiveStreamper il formato dello stream che hai generato.
RTSP
Per estendere uno stream RTSP, utilizza il
ExtendRtspStream comando del tratto CameraLiveStream per
ottenere nuovi streamExtensionToken e streamToken
valori:
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 dello stream con questi nuovi valori per continuare a guardare il live streaming:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Interrompere un live streaming
Ogni volta che non utilizzi più un live streaming della videocamera, devi interromperlo e invalidare lo stream. Per farlo, utilizza il comando StopFormatStream appropriato del tratto CameraLiveStream per il formato dello stream che hai generato.
RTSP
Per interrompere uno stream RTSP, utilizza il token da invalidare con il StopRtspStream comando del tratto CameraLiveStream:
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Risposta
{}
Errori
Per questo dispositivo potrebbero essere restituiti i seguenti codici di errore:
| Messaggio di errore | RPC | Risoluzione dei problemi |
|---|---|---|
| L'immagine della videocamera 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 l'eventID corretto restituito dall'evento della videocamera. |
Per l'elenco completo dei codici di errore dell'API, consulta il riferimento ai codici di errore dell'API.