Прямая загрузка через Просмотр улиц

Версия 2.1

Фон

В более ранних версиях API камера, совместимая с OSC, создавала точку доступа Wi-Fi, к которой могли подключаться приложения Google Street View для iOS и Android. Приложение будет одновременно направлять камеру OSC на съемку фотографий, а также загружать захваченный контент с камеры, чтобы затем публиковать его в Google Street View. Чтобы ускорить публикацию контента, мы ввели новый дополнительный рабочий процесс, который позволяет камерам OSC напрямую загружать контент на сервер Street View. Это исключает длительную двойную передачу контента сначала с камеры в приложение, а затем из приложения на сервер Street View. Это было добавлено на уровне API 2.1 и актуально только для камер OSC, которые могут как предоставлять точку доступа Wi-Fi, так и подключаться к инфраструктурной точке доступа Wi-Fi с доступом к Интернету.

Обзор

Новый рабочий процесс загрузки требует, чтобы камеры предоставляли возможность (например, специальную физическую кнопку или комбинацию существующих кнопок), позволяющую пользователям переключаться между двумя режимами Wi-Fi:

  • Режим Direct: в этом режиме камера действует как точка доступа, позволяющая подключиться к ней мобильному устройству. В этом режиме мобильные устройства могут управлять камерой для выполнения таких задач, как съемка фотографий. Мобильные устройства также могут предоставить камере учетные данные точки доступа Wi-Fi, которые затем камера может использовать для переключения в режим Интернета .
  • Режим Интернета: в этом режиме камера подключается к точке доступа Wi-Fi с доступом в Интернет. Он будет использовать идентификатор точки доступа и пароль, которые были предоставлены ему из приложения, когда камера ранее находилась в режиме Direct . В этом режиме мобильные устройства могут инициировать загрузку с камеры непосредственно на сервер Street View. Они также могут продолжать управлять камерой для выполнения таких задач, как съемка фотографий.

Режим камеры должен сохраняться при выключении и повторном включении камеры. Кроме того, настоятельно рекомендуется, чтобы камера подавала сигнал (например, световой, звуковой или индикатор на экране), информирующий пользователей о текущем режиме Wi-Fi.

В камере также должны быть реализованы протоколы обнаружения (см. «Обнаружение» ) для управления связью, когда камера находится в режиме Интернета .

Настройка режима Интернета

  1. Пользователь включает камеру. Он запускается в режиме Direct , поскольку режим Интернета еще не настроен.
  2. Мобильное устройство подключается к Wi-Fi камеры.
  3. Приложение генерирует самозаверяющий сертификат.
  4. Приложение отправляет на камеру команду switchWifi с SSID инфраструктурной точки доступа Wi-Fi, к которой камера должна будет подключиться, паролем для этой точки доступа и самозаверяющим сертификатом , который камера использует для аутентификации приложения позже. .
    • Обратите внимание, что камера должна надежно хранить как учетные данные Wi-Fi, так и самозаверяющий сертификат приложения.
    • Рекомендуется хранить в камере несколько учетных данных Wi-Fi, поскольку камере может потребоваться подключение к различным точкам доступа Wi-Fi инфраструктуры. Минимальное требование — чтобы камера сохраняла самые последние учетные данные Wi-Fi.
  5. Камера отвечает своим самозаверяющим сертификатом, который приложение использует для последующей аутентификации камеры.
  6. Теперь пользователь может переключаться между режимом Direct и режимом Интернета непосредственно с камеры, например, с помощью физической кнопки переключения.

Открытие

Обнаружение камер OSC — это протокол на основе нулевой конфигурации. Камера ДОЛЖНА реализовывать локальную адресацию канала IPv4 и ДОЛЖНА соответствовать спецификациям mDNS (многоадресная DNS) и DNS-SD (обнаружение служб на основе DNS):

Имена экземпляров службы

Для части <Service> имени экземпляра службы камеры OSC должны использовать _osc._tcp . В качестве части <Domain> имени экземпляра службы камеры OSC должны использовать local. . Обратите внимание, что есть конечный . после local .

ТХТ-запись

Мы требуем, чтобы камера отправляла в записи TXT следующие пары ключ/значение: txtvers , ty и id .

текстовые сообщения

Чтобы разрешить обновления версии TXT в будущем, используйте пару ключ/значение txtvers=1 .

ты

Предоставляет удобочитаемое имя камеры, например ty=Google Street View Optimized Spherical Camera Model XYZ .

идентификатор

Предоставляет уникальный идентификатор камеры, например id=A unique id of the camera . Значение id ДОЛЖНО совпадать со cameraId в выводе /osc/info .

Объявления

При запуске или выключении камеры камера ДОЛЖНА выполнить этап объявления, как описано в спецификации mDNS. Ему СЛЕДУЕТ отправить соответствующее объявление как минимум дважды с интервалом не менее одной секунды между ними.

Запускать

При запуске камеры она ДОЛЖНА выполнить шаги проверки и объявления, как описано в спецификации mDNS. В этом случае следует отправлять записи SRV, PTR и TXT. По возможности рекомендуется сгруппировать все записи в один ответ DNS. В противном случае рекомендуется следующий порядок: записи SRV, PTR, TXT.

Неисправность

При выключении камеры СЛЕДУЕТ попытаться уведомить все заинтересованные стороны, отправив «прощальный пакет» с TTL=0 , как описано в разделе 10.1 документации mDNS.

Самоподписанный сертификат

Приложение и камера могут использовать самозаверяющие сертификаты, предоставленные во время настройки режима Интернета, для аутентификации друг друга и создания безопасного канала для защиты обмениваемых данных с использованием взаимной аутентификации SSL.

В режиме Интернета приложение будет действовать как SSL-сервер, а камера — как клиент. Камера проверит, соответствует ли сертификат сервера самозаверяющему сертификату приложения, а приложение проверит, соответствует ли сертификат клиента сертификату камеры.

Любую библиотеку SSL, поддерживающую взаимную аутентификацию (например, OpenSSL), можно использовать для установки SSL-соединения между приложением и камерой в режиме Интернета .

Новый процесс загрузки

  1. Если камера не находится в режиме Интернета , пользователь переключает ее в режим Интернета . Камера подключается к инфраструктуре Wi-Fi, используя сохраненные учетные данные.
  2. Мобильное устройство также подключается к инфраструктуре Wi-Fi и обнаруживает камеру.
    • Для этого камера должна реализовать протокол локального обнаружения mDNS/DNS-SD (см. Обнаружение ).
    • Конкретных требований к тому, как это реализовать, не существует (хорошим примером может служить mDNSResponder ).
    • И приложение, и камера генерируют и совместно используют самозаверяющие сертификаты во время настройки режима Интернета . В режиме Интернета приложение и камера аутентифицируют друг друга посредством взаимной аутентификации SSL.
    • После обнаружения камеры с ней включается клиентское общение напрямую по локальной сети на основе HTTP 1.1. Форматы данных основаны на JSON. Запросы могут быть запросами GET или POST.
  3. Приложение запрашивает у камеры список файлов с помощью команды listFiles .
  4. Приложение инициирует загрузку с помощью команды uploadFile , чтобы загрузить изображение или видео непосредственно с камеры на сервер Street View.
  5. Приложение периодически опрашивает камеру о ходе загрузки с помощью команды status .