Ti diamo il benvenuto nel Centro sviluppatori Google Home, la nuova destinazione per imparare a sviluppare azioni per la smart home. Nota:continuerai a creare azioni nella Console Actions.
Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Schema tratto videocamera per la smart home

action.devices.traits.CameraStream - Questa caratteristica spiega come controllare lo streaming della videocamera di un dispositivo.

Questo attributo appartiene ai dispositivi che hanno la capacità di trasmettere in streaming i feed video a smart display, dispositivi compatibili con Chromecast o smartphone. In generale, si tratta di videocamere di sicurezza o videocamere per bambini. Ma questa caratteristica si applica anche ai dispositivi più complessi con una videocamera (ad esempio, dispositivi per videoconferenze o un robot aspirapolvere con una videocamera).

ATTRIBUTE del dispositivo

I dispositivi con questa caratteristica potrebbero segnalare i seguenti attributi come parte dell'operazione SYNC. Per scoprire di più sulla gestione degli intent SYNC, consulta Soddisfazione degli intent.

Attributi Tipo Descrizione
cameraStreamSupportedProtocols Array

Obbligatorio.

Tipi di supporti multimediali per lo streaming della videocamera, ordinati in base alla preferenza. In genere, è richiesto il primo protocollo in questo array compatibile con la superficie di destinazione.

[item, ...] Stringa

Tipo di elemento multimediale.

Valori supportati:

hls
Live streaming HTTP
dash
Streaming dinamico adattivo su HTTP
smooth_stream
Streaming fluido
progressive_mp4
MP4 progressiva (utilizzata soprattutto per i clip)
webrtc
WebRTC
cameraStreamNeedAuthToken Booleano

Obbligatorio.

Indica se verrà fornito un token di autenticazione tramite cameraStreamAuthToken per la piattaforma target per lo streaming del feed della videocamera.

Esempi

La fotocamera con più protocolli supporta, non richiede un token di autenticazione.

{
  "cameraStreamSupportedProtocols": [
    "webrtc",
    "hls",
    "dash",
    "smooth_stream",
    "progressive_mp4"
  ],
  "cameraStreamNeedAuthToken": false
}

La videocamera supporta un singolo protocollo, che richiede un token di autenticazione.

{
  "cameraStreamSupportedProtocols": [
    "hls"
  ],
  "cameraStreamNeedAuthToken": true
}

Protocolli di streaming supportati

Questa caratteristica supporta i seguenti protocolli di streaming:

STATEs dispositivo

Nessuna.

comandi del dispositivo

I dispositivi con questa caratteristica possono rispondere ai seguenti comandi nell'ambito dell'operazione EXECUTE. Per scoprire di più sulla gestione degli intent EXECUTE, consulta Soddisfazione degli intent.

action.devices.commands.GetCameraStream

Parametri

Parametri Tipo Descrizione
StreamToChromecast Booleano

Obbligatorio.

Indica se lo stream verrà riprodotto su un dispositivo Chromecast.

SupportedStreamProtocols Array

Obbligatorio.

Tipi/formati multimediali supportati dalla destinazione desiderata.

[item, ...] Stringa

Tipo di elemento multimediale.

Valori supportati:

hls
Live streaming HTTP
dash
Streaming dinamico adattivo su HTTP
smooth_stream
Streaming fluido
progressive_mp4
MP4 progressiva (utilizzata soprattutto per i clip)
webrtc
WebRTC

Risultati

Risultati Tipo Descrizione
cameraStreamAuthToken Stringa

Un token di autorizzazione per il destinatario specifico per autorizzare l'accesso allo stream. Se cameraStreamNeedAuthToken è vero e questo valore non viene fornito, le credenziali OAuth dell'utente verranno utilizzate come token di autenticazione.

cameraStreamProtocol Stringa

Obbligatorio.

Il formato multimediale a cui rimanda l'URL dello stream. Deve essere uno dei protocolli elencati nel parametro di comando SupportedStreamProtocols.

Valori supportati:

hls
Live streaming HTTP
dash
Streaming adattivo dinamico su HTTP
smooth_stream
Streaming fluido
progressive_mp4
MP4 progressiva (utilizzata soprattutto per i clip)
webrtc
WebRTC

Risultati non WebRTC

Risultati Tipo Descrizione
cameraStreamAccessUrl Stringa

Obbligatorio.

Endpoint URL per il recupero dello stream in tempo reale nel formato specificato da cameraStreamProtocol.

cameraStreamReceiverAppId Stringa

L'ID ricevitore di trasmissione consente di elaborare lo streaming della videocamera quando il parametro StreamToChromecast è true. Se non viene fornito, verrà utilizzato il ricevitore predefinito.

Risultati WebRTC

Risultati Tipo Descrizione
cameraStreamSignalingUrl Stringa

Obbligatorio.

Endpoint URL per il recupero e lo scambio di protocolli per la descrizione della sessione (SRP) per videocamera e client. Il client deve restituire l'URL di segnalazione che utilizza cameraStreamAuthToken come token di autenticazione nell'intestazione della richiesta.

cameraStreamOffer Stringa

Offerta della sessione di descrizione del protocollo (SDP).

cameraStreamIceServers Stringa

Rappresenta i server dell'Interactive Connectivity Establishment (ICE) utilizzando una stringa JSON codificata con la descrizione di un RTCIceServer. Se non specifichi i server STUN (Session Traversal Utilities per NAT), la piattaforma utilizza per impostazione predefinita i server STUN pubblici di Google. I server Turn (Traversal Usage Relays intorno alla NAT) sono obbligatori solo se non puoi garantire che gli IP o i candidati ICE forniti saranno pubblicamente accessibili (ad es. tramite un server multimediale, un candidato ICE pubblico, un candidato ICE di inoltro e così via).

Esempi

Mostra la videocamera della porta d'ingresso (ricevitore Cast predefinito)

{
  "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4",
  "cameraStreamProtocol": "progressive_mp4"
}

Mostra la videocamera della porta d'ingresso (ricevitore Cast personalizzato).

{
  "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4",
  "cameraStreamReceiverAppId": "1g2f89213hg",
  "cameraStreamAuthToken": "12657342190192783",
  "cameraStreamProtocol": "progressive_mp4"
}

Mostra la videocamera della porta d'ingresso (stream WebRTC).

{
  "cameraStreamIceServers": "[{\"urls\": \"stun:stun.l.partner.com:19302\"},{\"urls\":\"turn:192.158.29.39:3478?transport=udp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"},{\"urls\": \"turn:192.158.29.39:3478?transport=tcp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"}]",
  "cameraStreamSignalingUrl": "https://example.com/signaling/answer",
  "cameraStreamOffer": "o=- 4611731400430051336 2 IN IP4 127.0.0.1...",
  "cameraStreamProtocol": "webrtc"
}

ERRORI del dispositivo

Consulta l'elenco completo degli errori e delle eccezioni.

Specifiche del protocollo WebRTC

I vantaggi dell'utilizzo di WebRTC sono la latenza bassa e le conversazioni unidirezionali. WebRTC utilizza un metodo POST con un corpo POST e una risposta in formato JSON.

Attualmente WebRTC è supportato su smart display Google Nest e Chromecast con dispositivi Google TV.

Questa sezione descrive i requisiti quando si utilizza il protocollo di streaming WebRTC.

Tipo di dati Parametri/definizioni
Intestazione della richiesta di segnalazione

L'intestazione deve soddisfare i seguenti requisiti:

  • Autenticazione: l'intestazione di autenticazione deve utilizzare il token di autenticazione del valore restituito GetCameraStream per cameraStreamAuthToken con tipo di token Bearer.
  • Content-Type: application/json.
Parametri di richiesta di segnalazione

La richiesta può includere questi parametri:

  • action: stringa. I valori validi sono:
    • offer: offri messaggio SDP del provider.
    • answer: rispondi al messaggio SDP del provider.
    • end: chiudi la sessione corrente.
  • deviceId: stringa. L'ID dispositivo riportato in una richiesta SYNC o EXECUTE.
  • sdp: stringa. Contiene il messaggio relativo al protocollo della descrizione della sessione per la connessione peer. I contenuti si basano sul valore del parametro action. Se action è "end", questo parametro può essere vuoto.
Parametri di risposta di segnalazione

La risposta può includere questi parametri:

  • action: stringa. Il valore della risposta deve essere di tipo answer.
  • sdp: stringa. Messaggio SDP per la risposta.

Requisiti e consigli di WebRTC

  • Attualmente Google supporta la comunicazione unidirezionale (half duplex).
  • Devi supportare il raggruppamento e rtcp-mux.
  • Devi utilizzare (D)TLS 1.2 o versioni successive.
  • Trickle ICE non è supportato. Tutti i candidati ICE devono essere raccolti prima di inviare l'SDP.
  • Ti consigliamo vivamente di includere i candidati ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 e TCP/IPv6 per aumentare la probabilità di una connessione riuscita.

Risoluzioni video supportate:

  • Minimo: 480p
  • Massimo:1080p

Codec video supportati:

  • VP8
  • H.264

Codec audio supportati:

  • Opus (codec preferito)
  • G.711/PCMU
  • G.722

Condivisione delle risorse tra origini

La condivisione delle risorse tra origini (CORS) è un meccanismo che utilizza intestazioni HTTP aggiuntive per indicare ai browser di consentire a un'applicazione web in esecuzione in un'origine di accedere a risorse selezionate da un'origine diversa. Il server che ospita cameraStreamSignalingUrl dovrebbe rispondere con la seguente intestazione:

Access-Control-Allow-Origin: https://www.gstatic.com

Esempio di richiesta e risposta di segnalazione

L'esempio riportato di seguito mostra una richiesta che Google invia al tuo servizio di segnalazione e la risposta corrispondente a Google.

Richiedi
Header:

Authentication: Bearer <cameraStreamAuthToken>
Content-Type: application/json

POST body:

// When camera offer SDP is provided in the execution response, Google provides an answer SDP.
{
  "action": "answer",
  "deviceId": "123",
  "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..."
}

// When camera offer SDP is not provided in execution response, Google generates and provides an offer SDP.
{
  "action": "offer",
  "deviceId": "123",
  "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..."
}

// Close the current stream session.
{
  "action": "end"
  "deviceId": "123"
}

Risposta
// Response to accept the answer SDP in the request.
Response Code : 200
{}

// Response to provide the answer SDP from the service provider.
Response Code : 200
{
  // When the camera offer SDP is not provided in the execution response,
  // Google provides the answer SDP via the signaling response.
  "action": "answer"
  "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..."
}

// Response to close current session.
Response Code : 200
{}