Да, это еще одно интернет-радио. Их уже сотни. Но в этой статье я хочу рассказать не только о самом устройстве, но и о одном из наших подходов, который мы применяем в IoT-разработке. Эти решения помогут вам упростить взаимодействие конечных пользователей с вашими устройствами.
Проблема: как клиенту узнать IP устройства?
Мы разработали и внедрили множество IoT-проектов. Один из самых частых вопросов, с которым мы сталкивались: “Как сообщить клиенту локальный IP устройства?”
После подключения к роутеру устройство получает динамический IP-адрес, который сложно определить без доступа к настройкам роутера. Это создает неудобства, особенно для конечных пользователей, далеких от технических деталей. Мы долго искали универсальное решение, которое не требует сложных настроек и подходит для большенства IoT-устройств.
В результате мы пришли к подходу, который теперь используем во многих проектах. И, конечно, мы внедрили его в это интернет-радио.
Как это работает?
Процесс для пользователя:
1. Первое включение:
Радио создает Wi-Fi точку доступа с именем Radio.
2. Подключение к устройству:
Пользователь подключается к этой точке доступа, открывает браузер и вводит http://192.168.4.1. Обычно страница автоматически открывается через Captive Portal.
3. Настройка сети:
Пользователь вводит имя и пароль своей Wi-Fi сети. Радио подключается к роутеру, после чего точка доступа отключается.
4. Поиск устройства и смена радио станций:
Пользователь заходит на https://onclick.lv/radio и сразу видит локальный IP-адрес устройства и его MAC . Всё, что нужно — выбрать станцию из списка и нажать "Сохранить". Никаких сложных действий, всё интуитивно понятно и удобно.
Техническая магия на сервере
Каждый раз при включение, когда устройство подключается к роутеру, оно выполняет GET-запрос на сервер:
http://www.onclick.lv/esp/?mac=<MAC_адрес>&ip=<локальный_IP>
Передается:
• MAC-адрес устройства,
• локальный IP,
Сервер так же сам сохраняет:
• время запроса,
• Глобальный IP, с которого был сделан запрос.
Данные хранятся 24 часа.
И сейчас самое интересное. Когда пользователь заходит на https://onclick.lv/radio, браузер отправляет AJAX-запрос на тот же сервер. И если глобальный IP клиента который зашел на сайт совпадает с записанным на сервере (который отправило устройство), пользователь получает локальными IP, MAC и время запуска. Таким образом, устройство "находит само себя".
Решение для ваших IoT-проектов
Мы сделали этот подход универсальным и открыли API, чтобы мы и вы могли использовать его в своих проектах. Подробнее о нем можно узнать в GitHub репозитории.
Принцип работы прост:
1. Устройство отправляет GET-запрос на сервер с данными о своем MAC-адресе и локальном IP.
2. Когда вы заходите на https://onclick.lv/esp/ или https://onclick.lv, система автоматически перенаправляет вас на http://локальный IP устройства.
А теперь давайте обратно вернемся к радио проету.
Схема подключения
К NodeMCU можно напрямую подключать небольшие устройства, такие как проводные наушники или другие аудиовыходы компактных размеров. Для подключения более крупных аудиосистем или колонок потребуется использовать усилитель, чтобы обеспечить достаточный уровень громкости и качество звука.
Прошивание
Мы так же часто в своих проектах используем прошивание через браузер. Подключите NodeMCU или Wemos к компьютеру через USB. Откройте страницу прошивания и нажмите кнопку Connect. Это удобный и простой подход, чтобы клиент мог загрузить и протестировать ваш код.
Автор: Ramzies