Version 2.1
Hintergrund
In früheren Versionen der API erstellte eine OSC-kompatible Kamera einen WLAN-Zugangspunkt, zu dem die Google Street View iOS- und Android-Apps eine Verbindung herstellen konnten. Die App würde die OSC-Kamera anweisen, Fotos aufzunehmen, und die aufgenommenen Inhalte von der Kamera herunterladen, um sie dann in Google Street View zu veröffentlichen. Um die Veröffentlichung von Inhalten zu beschleunigen, haben wir einen neuen optionalen Workflow eingeführt, mit dem OSC-Kameras Inhalte direkt auf den Street View-Server hochladen können. Dadurch wird eine lange doppelte Übertragung von Inhalten zuerst von der Kamera zur App und dann von der App zum Street View-Server vermieden. Dies wurde in API-Ebene 2.1 hinzugefügt und ist nur für OSC-Kameras relevant, die sowohl einen WLAN-Zugangspunkt bereitstellen als auch eine Verbindung zu einem WLAN-Zugangspunkt der Infrastruktur mit Zugang zum Internet herstellen können.
Überblick
Für den neuen Upload-Workflow müssen Kameras eine Möglichkeit bieten (z.B. eine eigene physische Taste oder eine Kombination vorhandener Tasten), über die Nutzer zwischen zwei WLAN-Modi wechseln können:
- Direkter Modus:In diesem Modus fungiert die Kamera als Zugangspunkt, über den sich ein Mobilgerät mit ihr verbinden kann. In diesem Modus können Mobilgeräte die Kamera steuern, um Aufgaben wie das Aufnehmen von Fotos auszuführen. Mobilgeräte können der Kamera auch Anmeldedaten für den WLAN-Zugangspunkt zur Verfügung stellen, über die die Kamera dann in den Internetmodus wechseln kann.
- Internetmodus:In diesem Modus stellt die Kamera eine Verbindung zu einem WLAN-Zugangspunkt mit Internetzugriff her. Dabei werden die Zugangspunkt-ID und das Passwort verwendet, die sie von der App erhalten hat, als sich die Kamera zuvor im direkten Modus befand. In diesem Modus können Mobilgeräte Uploads von der Kamera direkt auf den Street View-Server initiieren. Sie können die Kamera auch weiterhin steuern, um Aufgaben wie das Aufnehmen von Fotos auszuführen.
Der Kameramodus sollte so lange bestehen bleiben, bis die Kamera ausgeschaltet und wieder eingeschaltet wird. Außerdem wird dringend empfohlen, dass die Kamera ein Signal ausgibt (z.B. Licht, Töne oder eine Anzeige auf einem Bildschirm), um Nutzer über den aktuellen WLAN-Modus zu informieren.
Die Kamera sollte auch Erkennungsprotokolle (siehe Erkennung) haben, die für die Kommunikation implementiert sind, wenn sich die Kamera im Internetmodus befindet.
Einrichtung des Internetmodus
- Der Nutzer schaltet die Kamera ein. Sie startet im direkten Modus, da der Internetmodus noch nicht eingerichtet ist.
- Das Mobilgerät wird mit dem WLAN der Kamera verbunden.
- Die App generiert ein selbst signiertes Zertifikat.
- Die App sendet den Befehl
switchWifi
mit der SSID des Infrastruktur-WLAN-Zugangspunkts, mit dem die Kamera eine Verbindung herstellen muss, dem Passwort für diesen Zugangspunkt und dem selbst signierten Zertifikat, mit dem die Kamera die App später authentifiziert, an die Kamera.- Die Kamera sollte sowohl die WLAN-Anmeldedaten als auch das selbst signierte Zertifikat der App sicher speichern.
- Es wird empfohlen, für die Kamera mehrere WLAN-Anmeldedaten zu speichern, da die Kamera möglicherweise mit WLAN-Zugangspunkten verschiedener Infrastruktur verbunden sein muss. Die Kamera muss die neuesten WLAN-Anmeldedaten speichern.
- Die Kamera antwortet mit ihrem selbst signierten Zertifikat, das die App später zur Authentifizierung der Kamera verwendet.
- Der Nutzer kann jetzt direkt von der Kamera aus zwischen dem direkten Modus und dem Internetmodus wechseln, z.B. über eine physische Ein-/Aus-Schaltfläche.
Discovery-Kampagnen
Die Erkennung für OSC-Kameras erfolgt über ein Zeroconf-basiertes Protokoll. Die Kamera MUSS die IPv4-Link-Local-Adressierung implementieren und die Spezifikationen für mDNS (Multicast DNS) und DNS-SD (DNS-Based Service Discovery) erfüllen:
Dienstinstanznamen
Für den Abschnitt <Service>
des Dienstinstanznamens sollten OSC-Kameras _osc._tcp
verwenden. Für den Teil <Domain>
des Dienstinstanznamens sollten OSC-Kameras local.
verwenden. Nach local
folgt ein .
.
TXT-Eintrag
Die Kamera muss im TXT-Eintrag die folgenden Schlüssel/Wert-Paare senden: txtvers
, ty
und id
.
TXT-Dateien
Verwenden Sie das Schlüssel/Wert-Paar txtvers=1
, um zukünftige Updates der TXT-Version zuzulassen.
ty
Gibt einen für den Nutzer lesbaren Namen der Kamera an, z.B. ty=Google Street View Optimized Spherical Camera Model XYZ
.
id
Gibt eine eindeutige ID der Kamera an, z.B. id=A unique id of the camera
. Der Wert für id
MUSS mit dem Wert für cameraId
in der /osc/info
-Ausgabe übereinstimmen.
Ankündigungen
Beim Starten oder Herunterfahren der Kamera MUSS der Ansageschritt wie in der mDNS-Spezifikation beschrieben ausgeführt werden. Die entsprechende Ansage sollte mindestens zweimal mit einem Intervall von mindestens einer Sekunde gesendet werden.
Einstieg
Beim Start der Kamera MÜSSEN Test- und Ankündigungsschritte wie in der mDNS-Spezifikation beschrieben durchgeführt werden. In diesem Fall sollten SRV-, PTR- und TXT-Einträge gesendet werden. Es wird empfohlen, nach Möglichkeit alle Einträge in einer DNS-Antwort zu gruppieren. Wenn nicht, wird die folgende Reihenfolge empfohlen: SRV-, PTR-, TXT-Einträge.
Herunterfahren
Beim Ausschalten der Kamera SOLLTE versuchen, alle interessierten Parteien durch Senden eines „Goodbye-Pakets“ mit TTL=0
zu benachrichtigen, wie in Abschnitt 10.1 der mDNS-Dokumentation beschrieben.
Selbst signiertes Zertifikat
Die App und die Kamera können die selbst signierten Zertifikate verwenden, die während der Einrichtung des Internetmodus freigegeben wurden, um sich gegenseitig zu authentifizieren und einen sicheren Kanal zum Schutz der ausgetauschten Daten mithilfe der gegenseitigen SSL-Authentifizierung zu erstellen.
Während des Internetmodus fungiert die Anwendung als SSL-Server und die Kamera als Client. Die Kamera würde prüfen, ob das Zertifikat des Servers mit dem selbst signierten Zertifikat der App übereinstimmt, und die App prüft, ob das Clientzertifikat mit dem der Kamera übereinstimmt.
Jede SSL-Bibliothek, die die gegenseitige Authentifizierung unterstützt (z.B. OpenSSL), kann zum Herstellen einer SSL-Verbindung zwischen der App und der Kamera im Internetmodus verwendet werden.
Neuer Uploadprozess
- Wenn sich die Kamera nicht im Internetmodus befindet, wechselt der Nutzer in den Internetmodus. Die Kamera stellt über gespeicherte Anmeldedaten eine Verbindung zum WLAN der Infrastruktur her.
- Das Mobilgerät stellt außerdem eine Verbindung zum WLAN der Infrastruktur her und erkennt die Kamera.
- Dafür muss die Kamera ein lokales Erkennungsprotokoll mDNS/DNS-SD implementieren (siehe Erkennung).
- Es gibt keine bestimmte Anforderung an die Implementierung (mDNSResponder ist eine gute Referenz).
- Sowohl die App als auch die Kamera generieren während der Einrichtung des Internetmodus selbst signierte Zertifikate und teilen sie. Im Internetmodus authentifizieren sich die Anwendung und die Kamera über die gegenseitige SSL-Authentifizierung.
- Nachdem die Kamera erkannt wurde, wird die Clientkommunikation mit ihr direkt über das lokale Netzwerk basierend auf HTTP 1.1 aktiviert. Datenformate basieren auf JSON. Anfragen können GET- oder POST-Anfragen sein.
- Die App fragt die Kamera mit dem Befehl
listFiles
nach einer Liste von Dateien ab. - Die App initiiert den Upload mit dem Befehl
uploadFile
, um ein Bild oder Video direkt von der Kamera auf den Street View-Server hochzuladen. - Die App fragt die Kamera mit dem Befehl
status
regelmäßig nach dem Uploadfortschritt ab.