Campanello (precedente)

Nest Hello

Tutti i Nest Doorbell precedenti sono supportati nell'API Smart Device Management (SDM). Questo dispositivo restituisce un tipo di dispositivo DOORBELL:

sdm.devices.types.DOORBELL

Google Nest Doorbell (versione precedente) è 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 tratto appartiene a qualsiasi dispositivo che supporta il live streaming.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionQuesto tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento del movimento.Motion
CameraPersonQuesto tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento persone.Person
CameraSoundQuesto tratto appartiene a qualsiasi dispositivo che supporta gli eventi di rilevamento del suono.Sound
DoorbellChimeQuesto tratto appartiene a qualsiasi dispositivo che supporta un cicalino del campanello e gli eventi di pressione correlati.Chime
InfoQuesto tratto appartiene a qualsiasi dispositivo per le informazioni correlate 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.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 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.
Evento Evento cicalino del tratto DoorbellChime È stato premuto il campanello.
Ad esempio, di seguito viene mostrato quando è stato premuto il pulsante del campanello:

Payload

{
  "eventId" : "3e7b7488-09ad-41f5-8381-165d5a589759",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "rjn57L02poi7gTFbOCYg0ocaKz..." } } } "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 GenerateImage. Questo comando restituisce un URL di download per l'immagine della videocamera correlata all'evento:

Richiesta

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "nrbIeLo2lIzhuzLdJD7ARyfrsS..."
  }
}

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=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 entrambi i parametri vengono forniti nell'URL, viene utilizzata la width e la height viene ignorata.
  • Se non viene fornito alcun parametro 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 streamToken correlato:

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, i comandi RTSP devono essere inviati 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.