Version 2.1
Contexte
Dans les versions précédentes de l'API, une caméra conforme à la norme OSC créait un point d'accès Wi-Fi auquel les applications iOS et Android Google Street View pouvaient se connecter. L'application demande à l'appareil photo OSC de prendre des photos et télécharge également le contenu capturé par l'appareil photo pour le publier sur Google Street View. Pour accélérer la publication de contenu, nous avons lancé un nouveau workflow facultatif qui permet aux caméras OSC d'importer du contenu directement sur le serveur Street View. Cela élimine le double transfert de contenu long, d'abord de la caméra vers l'application, puis de l'application au serveur Street View. Cette fonctionnalité a été ajoutée au niveau d'API 2.1 et ne concerne que les caméras OSC qui peuvent à la fois fournir un point d'accès Wi-Fi et se connecter à un point d'accès Wi-Fi d'infrastructure ayant accès à Internet.
Présentation
Le nouveau workflow de mise en ligne nécessite que les caméras offrent un moyen (par exemple, un bouton physique dédié ou une combinaison de boutons existants) permettant aux utilisateurs de basculer entre deux modes Wi-Fi:
- Mode direct:dans ce mode, l'appareil photo sert de point d'accès et permet à un appareil mobile de s'y connecter. Dans ce mode, les appareils mobiles peuvent contrôler l'appareil photo pour effectuer des tâches telles que la prise de photos. Les appareils mobiles peuvent également fournir à la caméra des identifiants de point d'accès Wi-Fi qu'elle peut ensuite utiliser pour passer en mode Internet.
- Mode Internet:dans ce mode, la caméra se connecte à un point d'accès Wi-Fi disposant d'un accès à Internet. Il utilisera l'identifiant de point d'accès et le mot de passe qui lui ont été fournis par l'application lorsque l'appareil photo était auparavant en mode direct. Dans ce mode, les appareils mobiles peuvent lancer des importations depuis l'appareil photo directement vers le serveur Street View. Ils peuvent également continuer à contrôler l'appareil photo pour effectuer des tâches comme prendre des photos.
Le mode de la caméra doit persister tant que la caméra est désactivée, puis réactivée. Il est également vivement recommandé que la caméra fournisse un signal (lumière, son ou indicateur sur l'écran, par exemple) pour informer les utilisateurs du mode Wi-Fi actuel.
Des protocoles de détection (voir Découverte) doivent également être implémentés pour gérer la communication lorsque la caméra est en mode Internet.
Configuration du mode Internet
- L'utilisateur allume la caméra. Il démarre en mode direct, car le mode Internet n'est pas encore configuré.
- L'appareil mobile se connecte au réseau Wi-Fi de la caméra.
- L'application génère un certificat autosigné.
- L'application envoie à la caméra la commande
switchWifi
avec le SSID du point d'accès Wi-Fi de l'infrastructure auquel la caméra doit se connecter, le mot de passe de ce point d'accès et son certificat autosigné que la caméra utilisera pour authentifier l'application ultérieurement.- Veuillez noter que la caméra doit stocker de manière sécurisée les identifiants Wi-Fi et le certificat autosigné de l'application.
- Il est recommandé de stocker plusieurs identifiants Wi-Fi, car elle peut avoir besoin de se connecter à différents points d'accès Wi-Fi d'infrastructure. L'appareil photo doit stocker au minimum l'identifiant Wi-Fi le plus récent.
- La caméra répond avec son certificat autosigné que l'application utilise pour l'authentifier ultérieurement.
- L'utilisateur peut désormais basculer entre le mode direct et le mode Internet directement depuis la caméra, par exemple à l'aide d'un bouton physique.
Discovery
Le protocole Discovery pour les caméras OSC est basé sur zéroconf. La caméra DOIT mettre en œuvre l'adressage de liaison locale IPv4 et respecter les spécifications mDNS (DNS multicast) et DNS-SD (détection de services basés sur DNS) :
Noms des instances de service
Pour la partie <Service>
du nom d'instance de service, les caméras OSC doivent utiliser _osc._tcp
. Pour la partie <Domain>
du nom de l'instance de service, les caméras OSC doivent utiliser local.
. Notez qu'il y a un .
à la fin après local
.
Un enregistrement TXT
La caméra doit envoyer les paires clé/valeur suivantes dans l'enregistrement TXT : txtvers
, ty
et id
.
txtvers
Pour autoriser les mises à jour de la version TXT à l'avenir, utilisez la paire clé/valeur txtvers=1
.
ty
Indique un nom de caméra lisible par l'utilisateur, par exemple ty=Google Street View Optimized Spherical Camera Model XYZ
.
id
Indique un identifiant unique de la caméra, par exemple id=A unique id of the camera
. La valeur de id
DOIT être identique à celle de cameraId
dans la sortie /osc/info
.
Annonces
Au démarrage ou à l'arrêt de la caméra, elle DOIT effectuer l'étape d'annonce décrite dans la spécification mDNS. Il DOIT envoyer l'annonce correspondante au moins deux fois, avec un intervalle d'au moins une seconde entre elles.
Démarrage
Au démarrage de la caméra, elle DOIT effectuer les étapes de vérification et d'annonce décrites dans la spécification mDNS. Dans ce cas, les enregistrements SRV, PTR et TXT doivent être envoyés. Il est recommandé de regrouper tous les enregistrements dans une seule réponse DNS, si possible. Si ce n'est pas le cas, l'ordre suivant est recommandé: SRV, PTR, TXT records.
Arrêt
À l'arrêt de la caméra, il DOIT essayer d'informer toutes les parties intéressées en envoyant un "paquet d'adieu" avec TTL=0
, comme décrit dans la section 10.1 de la documentation mDNS.
Certificat autosigné
L'application et la caméra peuvent utiliser les certificats autosignés partagés lors de la configuration du mode Internet pour s'authentifier mutuellement et créer un canal sécurisé afin de protéger les données échangées, à l'aide de l'authentification mutuelle SSL.
En mode Internet, l'application agit en tant que serveur SSL et la caméra en tant que client. La caméra vérifie que le certificat du serveur correspond au certificat autosigné de l'application, et l'application vérifie que le certificat du client correspond à celui de la caméra.
Toute bibliothèque SSL compatible avec l'authentification mutuelle (par exemple, OpenSSL) peut être utilisée pour établir une connexion SSL entre l'application et la caméra en mode Internet.
Nouveau processus d'importation
- Si la caméra n'est pas en mode Internet, l'utilisateur la fait passer en mode Internet. La caméra se connecte au réseau Wi-Fi de l'infrastructure à l'aide des identifiants enregistrés.
- L'appareil mobile se connecte également au Wi-Fi de l'infrastructure et détecte la caméra.
- Pour ce faire, la caméra doit implémenter un protocole de découverte local mDNS/DNS-SD (voir la section Découverte).
- Il n'existe aucune exigence spécifique concernant sa mise en œuvre (mDNSResponder constitue une bonne référence).
- L'application et la caméra génèrent et partagent des certificats autosignés lors de la configuration du mode Internet. En mode Internet, l'application et la caméra s'authentifient mutuellement via l'authentification SSL mutuelle.
- Une fois la caméra détectée, la communication client est activée directement sur le réseau local via HTTP 1.1. Les formats de données sont basés sur JSON. Les requêtes peuvent être des requêtes GET ou POST.
- L'application interroge l'appareil photo pour obtenir une liste de fichiers à l'aide de la commande
listFiles
. - L'application lance l'importation à l'aide de la commande
uploadFile
pour importer une image ou une vidéo directement depuis la caméra vers le serveur Street View. - L'application interroge régulièrement la caméra pour connaître la progression de l'importation à l'aide de la commande
status
.