Display

Nest Hub Max

Il display di Google Nest Hub Max è supportato nell'API Smart Device Management (SDM). Questo dispositivo restituisce un tipo di dispositivo di 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:

TrattoDescrizioneComandiEventi
CameraEventImageQuesto tratto appartiene a qualsiasi dispositivo che supporta la generazione di immagini da eventi.GenerateImage
CameraImageQuesto tratto appartiene a qualsiasi dispositivo che supporta l'acquisizione di immagini.
CameraLiveStreamQuesto attributo appartiene a qualsiasi dispositivo che supporta il live streaming.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionQuesta caratteristica appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento dei movimenti.Movimento
CameraPersonQuesta caratteristica appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento delle persone.Persona
CameraSoundQuesta caratteristica appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento dei suoni.Audio
InformazioniQuesto attributo appartiene a qualsiasi dispositivo per informazioni relative al 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.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 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.
Ad esempio, qui la videocamera ha rilevato un movimento:

Payload

{
  "eventId" : "93779326-2fd6-4623-9e73-7ef91fd85b2c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "jwatvkU6ucTeRHrDJ0FZP32eTF...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Il payload di questo evento contiene un 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" : "jYhiD3u7JPZGER8u9B4KfuEUYm..."
  }
}

Risposta

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

Scaricare un'immagine della fotocamera

Esegui 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 e height viene ignorato.
  • Se nessuno dei due parametri è specificato nell'URL, viene scelto un valore predefinito di 480 per width.

Consulta la proprietà CameraImage per informazioni sulle proprietà immagine.

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 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, utilizza il comando ExtendFormatStream appropriato della proprietà 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. A tale scopo, 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 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

In relazione a questo dispositivo potrebbero essere restituiti i seguenti codici di errore:

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.