ads
ads
ads
ads
ads
МЕНЮ:
Главная Сотовая связь Софт Веб-мастеру Графика Железо Portable Игры Интернет Чудеса Науки Apache Delphi Drupal Flash Html Юмор Каталог ноутбуков FAQ
загрузка...


О железках:
iPhone XS «разрывает» AnTuTu
Xiaomi начала продавать топовую версию Mi 8 в белом корпусе
Apple заработала на продаже смартфонов больше, чем все остальные, вместе взятые
Представлен защищенный музыкальный смартфон AGM H1
Xiaomi предлагает купить сеты своих флагманов по цене новых iPhone
Топ новостей
О софте:
"Лунная деревня" приобретает очертания
BASSLET — гаджет любителей клубов
Хакеры способны взломать кардиостимуляторы
Новосибирские физики построят коллайдер
Китай изучит гравитационные волны


Age Of Comp » Чудеса Науки » Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Good news, everyone! Вышла новая версия прошивки DeviceHive для ESP8266. Мы реализовали поддержку самых популярных интерфейсов для подключения устройств: GPIO, ADC, PWM, UART, I2C, SPI, 1-wire. Теперь можно легко подключить устройства с этими интерфейсами к нашему облачному сервису. А самое главное — появилась возможность беспроводного конфигурирования прошивки (см. скриншот ниже). Об этом мы сегодня и поговорим.

Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Тройной RESET, или «Поехали!»

При создании IoT-устройств с беспроводным подключением часто можно столкнуться с неприятной проблемой: настроить устройство конечному пользователю не так легко, как кажется. Такие устройства обычно не оснащены экраном и клавиатурой, поэтому задать начальные настройки (данные Wi-Fi-сети, например) не выйдет без подходящего кабеля и специализированного ПО. Эту проблему мы и попытались решить в новой версии прошивки.

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

Таким образом разом решаются обе проблемы — вам не потребуются ни кабели, ни специальное ПО. Кроме браузера… но у вас же есть браузер? Кнопка RESET чаще всего располагается прямо на корпусе девайса, трижды нажать ее должно быть достаточно просто.

Более того, в современных мобильных ОС не придется открывать даже браузер, ведь большинство из них поддерживают портальную аутентификацию (captive portal). На Apple-девайсах страница ввода данных открывается автоматически. Android же покажет уведомление, кликнув по которому, вы окажетесь на этой страничке.

На видео ниже можно посмотреть, как все работает с новой прошивкой и Android-устройством.



Своими руками

Давайте посмотрим, как в принципе работает такая система настройки, ведь ее можно реализовать для любого другого беспроводного устройства с Wi-Fi.

Для начала поднимаем обычную сеть Wi-Fi. В ней создаем DHCP-сервер, который будет раздавать IP-адреса подключенным устройствам. Но в качестве DNS-сервера он передает IP-адрес «хитрого» DNS. Вся хитрость в том, что на на любой DNS запрос «A» записи будет возращен всегда один и тот же IP — адрес HTTP-сервера, с помощью которого мы можем конфигурировать устройство. В случае ESP8266 DHCP, DNS и HTTP-сервер работают прямо на чипе. В совсем базовом варианте этого достаточно — открыв любую страницу в браузере, увидим страницу с настройками. Но, чтобы было красиво, можно заставить устройства, поддерживающие портальную аутентификацию, выводить уведомление о необходимости ввести данные.

Портальная аутентификация обычно используется для ввода данных и/или отображранения соглашении об использовании в гостничных, отельных и других Wi-Fi-хотспотах. Мы же используем эту технику для отображения нашей страницы.

Android при подключении к Wi-Fi-сети попытается зайти по адресу clients3.Google.com/generate_204.
Устройства Apple пытаются подключиться к captive.apple.com.

Послав туда запрос, получите ответ вида:

$ curl http://clients3.Google.com/generate_204 -iHTTP/1.1 204 No ContentContent-Length: 0Date: Mon, 07 Sep 2015 14:58:21 GMTServer: GFE/2.0$ curl http://captive.apple.com -iHTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 68Date: Mon, 07 Sep 2015 15:00:32 GMTConnection: keep-alive<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>

Т. е. в ответ на HTTP-запрос они возвращают ответ со статусом 2xx. Благодаря этим запросам, устройства и определяют, подключены ли они к интернету. Для реализации же портальной аутентификации необходимо в ответ на эти запросы (или просто на все запросы, кроме интересных нам) посылать ответ с кодом 302 Moved Temporarily и указать в заголовке поле Location с нашим адресом, т. е. ответ должен быть примерной такой:

HTTP/1.1 302 Moved TemporarilyContent-Length: 0Location: http://example.com

Получив такой ответ, устройства поймут, что необходимо отобразить страницу с настройками по указанному адресу — Apple-устройства сами откроют эту страницу на экране, а Android покажет уведомление. В операционных системах без поддержки портальной аутентификации достаточно лишь написать в адресной строке браузера любой адрес начинающейся с «http://» — бразуер откроет страницу с настройками. При этом вы не введете пользователя в заблуждение, т. к. в адресной строке будет отображен адрес именно страницы с настройками. В прошивке для ESP8266 мы используем адрес devicehive.config.

Надеемся, что это все вам пригодится. Удачи в создании собственных IoT-решений!

Автор: Николай Хабаров, Senior Embedded Developer


Нравится пост? Жми: