Caricamento diretto tramite Street View

Versione 2.1

Contesto

Nelle versioni precedenti dell'API, una fotocamera conforme allo standard OSC creava un punto di accesso Wi-Fi a cui le app Google Street View per iOS e Android potevano connettersi. L'app indirizzava la fotocamera OSC all'acquisizione delle foto e scaricava i contenuti acquisiti dalla fotocamera per poi pubblicarli su Google Street View. Per velocizzare la pubblicazione dei contenuti, abbiamo introdotto un nuovo flusso di lavoro facoltativo che consente alle fotocamere OSC di caricare i contenuti direttamente sul server di Street View. In questo modo si elimina il lungo doppio trasferimento dei contenuti dalla fotocamera all'app e poi dall'app al server di Street View. Questa funzionalità è stata aggiunta nel livello API 2.1 ed è pertinente solo per le videocamere OSC che possono fornire un punto di accesso Wi-Fi e anche connettersi a un punto di accesso Wi-Fi dell'infrastruttura con accesso a internet.

Panoramica

Il nuovo flusso di lavoro per il caricamento richiede alle videocamere di fornire un modo (ad esempio un pulsante fisico dedicato o una combinazione di pulsanti esistenti) per consentire agli utenti di passare da una modalità Wi-Fi all'altra:

  • Modalità diretta: in questa modalità, la fotocamera funge da punto di accesso e consente a un dispositivo mobile di connettersi. In questa modalità, i dispositivi mobili possono controllare la fotocamera per eseguire attività come scattare foto. I dispositivi mobili possono anche fornire alla videocamera le credenziali del punto di accesso Wi-Fi, che la videocamera potrà poi utilizzare per passare alla modalità Internet.
  • Modalità Internet: in questa modalità, la videocamera si connette a un punto di accesso Wi-Fi con accesso a internet. Utilizzerà l'identificatore del punto di accesso e la password che gli sono stati forniti dall'app quando la fotocamera si trovava in precedenza in modalità diretta. In questa modalità, i dispositivi mobili possono avviare caricamenti dalla fotocamera direttamente al server di Street View. Possono anche continuare a controllare la fotocamera per attività come scattare foto.

La modalità fotocamera deve rimanere attiva anche sulla videocamera spenta e poi riattivata. Inoltre, è vivamente consigliato che la videocamera offra un segnale (ad esempio spia, suono o indicatore sullo schermo) per informare gli utenti della modalità Wi-Fi corrente.

La videocamera deve inoltre implementare protocolli di rilevamento (vedi Rilevamento) per gestire le comunicazioni quando la videocamera è in modalità Internet.

Configurazione della modalità Internet

  1. L'utente accende la videocamera. Viene avviata in modalità diretta perché la modalità Internet non è ancora stata configurata.
  2. Il dispositivo mobile si connette alla rete Wi-Fi della videocamera.
  3. L'app genera un certificato autofirmato.
  4. L'app invia il comando switchWifi alla videocamera con l'SSID del punto di accesso Wi-Fi dell'infrastruttura a cui la videocamera dovrà connettersi, la password per quel punto di accesso e il suo certificato autofirmato che la videocamera utilizza per autenticare l'app in un secondo momento.
    • Tieni presente che la videocamera deve memorizzare le credenziali Wi-Fi e il certificato autofirmato dell'app in modo sicuro.
    • È consigliabile che la videocamera memorizzi più credenziali Wi-Fi poiché potrebbe essere necessario che la videocamera debba connettersi a punti di accesso Wi-Fi dell'infrastruttura diversi. Il requisito minimo è che la videocamera memorizzi le credenziali Wi-Fi più recenti.
  5. La videocamera risponde con il proprio certificato autofirmato che l'app utilizza per autenticarla in un secondo momento.
  6. Ora l'utente può passare dalla modalità diretta alla modalità Internet e viceversa direttamente dalla videocamera, ad esempio con un pulsante di attivazione/disattivazione fisico.

Discovery

Il rilevamento per le videocamere OSC è un protocollo basato su zeroconf. La videocamera DEVE implementare l'indirizzamento locale del link IPv4 e DEVE rispettare le specifiche mDNS (Multicast DNS) e DNS-SD (DNS-Based Service Discovery):

Nomi istanze di servizio

Per la parte <Service> del nome dell'istanza di servizio, le videocamere OSC devono utilizzare _osc._tcp. Per la parte <Domain> del nome dell'istanza di servizio, le videocamere OSC devono utilizzare local.. Tieni presente che c'è un . finale dopo local.

record TXT

È necessario che la videocamera invii le seguenti coppie chiave/valore nel record TXT: txtvers, ty e id.

txtvers

Per consentire aggiornamenti alla versione TXT in futuro, utilizza la coppia chiave/valore txtvers=1.

ty

Fornisce un nome leggibile della videocamera, ad esempio ty=Google Street View Optimized Spherical Camera Model XYZ.

id

Fornisce un ID univoco della videocamera, ad esempio id=A unique id of the camera. Il valore di id DEVE essere uguale al valore cameraId nell'output di /osc/info.

Annunci

All'avvio o allo spegnimento della videocamera, DEVE eseguire il passaggio di annuncio come descritto nella specifica mDNS. DOVREBBE inviare l'annuncio corrispondente almeno due volte con un intervallo di almeno un secondo tra loro.

Avvio

All'avvio della videocamera DEVE eseguire il probe e i passaggi descritti nella specifica mDNS. In questo caso, devono essere inviati i record SRV, PTR e TXT. Ti consigliamo di raggruppare tutti i record in un'unica risposta DNS, se possibile. In caso contrario, è consigliato l'ordine seguente: record SRV, PTR e TXT.

Arresto

All'arresto della videocamera DOVREBBE provare a informare tutte le parti interessate inviando un "pacchetto di addio" con TTL=0, come descritto nella Sezione 10.1 della documentazione di mDNS.

Certificato autofirmato

L'app e la videocamera possono utilizzare i certificati autofirmati condivisi durante la configurazione della modalità Internet per autenticarsi a vicenda e creare un canale sicuro per proteggere i dati scambiati utilizzando l'autenticazione reciproca SSL.

Quando è attiva la modalità Internet, l'app funziona come server SSL e la videocamera come client. La videocamera verifica che il certificato del server corrisponda al certificato autofirmato dell'app e l'app verifica che il certificato del client corrisponda a quello della videocamera.

Qualsiasi libreria SSL che supporta l'autenticazione reciproca (ad es. OpenSSL) può essere utilizzata per stabilire una connessione SSL tra l'app e la videocamera in modalità internet.

Nuovo flusso di caricamento

  1. Se la videocamera non è in modalità Internet, l'utente la passa alla modalità Internet. La videocamera si connette alla rete Wi-Fi dell'infrastruttura utilizzando credenziali memorizzate.
  2. Il dispositivo mobile si connette anche alla rete Wi-Fi dell'infrastruttura e rileva la videocamera.
    • Ciò richiede che la videocamera implementi un protocollo di rilevamento locale mDNS/DNS-SD (vedi Rilevamento).
    • Non esiste un requisito specifico su come venga implementato (mDNSResponder è un buon riferimento).
    • Sia l'app sia la videocamera generano e condividono certificati autofirmati durante la configurazione della modalità Internet. In modalità Internet, l'app e la videocamera si autenticano a vicenda tramite autenticazione SSL reciproca.
    • Una volta rilevata la videocamera, viene attivata la comunicazione del client direttamente sulla rete locale in base a HTTP 1.1. I formati dei dati sono basati su JSON. Le richieste possono essere richieste GET o POST.
  3. L'app invia alla fotocamera un elenco di file con il comando listFiles.
  4. L'app avvia il caricamento con il comando uploadFile per caricare un'immagine o un video direttamente dalla fotocamera al server di Street View.
  5. L'app esegue periodicamente il polling della videocamera per verificare l'avanzamento del caricamento con il comando status.