Реализация процесса сопряжения устройств IoT в Android по Wi-Fi - PullRequest
0 голосов
/ 28 марта 2020

В настоящее время я работаю над интеграцией устройств IoT в облако. Многие люди знают умные штекеры Gosund. Просто для удовольствия, я поигрался с оригинальной прошивкой и задаюсь вопросом, как этот процесс соединения решается. Розетки Gosund основаны на ESP8266 и не имеют Bluetooth на аппаратной стороне, только W-LAN. Приложение Android запускает процесс поиска при сопряжении, находит сокет, отправляет настройки и настройка завершена. Но как именно это решается на стороне программного обеспечения?

Меня это интересует, потому что я хочу воспроизвести так же, как это решается для нашего приложения. Моя первая теория заключалась в том, что Gosunds, подобно Tasmota, открывают точку доступа с веб-сервером, а приложение отправляет настройки через вызовы REST.

В целях тестирования я реализовал это в небольшом прототипе, который также работает до сих пор. Но по моему коду видно, что телефон меняет вайфай. Открытые соединения закрыты и так далее ... С приложением Gosund это не так. Мой мобильный телефон остается в моей W-LAN все время, но ему удается отправить настройки через Wifi одновременно на штекер gosund .

Как это решить?

Альтернативная теория: приложение открывает точку доступа, и плагин gosund пытается подключиться. Но может ли Android сделать это? Оставайтесь в сети с помощью Wi-Fi и одновременно открывайте точку доступа?

1 Ответ

0 голосов
/ 01 апреля 2020

ОК, теперь я знаю, как это работает. Хитрость заключается в том, чтобы закодировать учетные данные WiFi в незашифрованный заголовок пакетов UDP. ESP затем ищет именно эти пакеты на всех доступных точках доступа. Это позволяет настроить устройство с мобильного телефона без необходимости менять соединение WiFi. Эта техника называется SmartConfig.

Здесь подробно объясняется, как она работает: https://www.eeweb.com/profile/steve6366/articles/smartconfig-how-to-turns-an-esp8266-into-a-smart-home-device

...