• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Удобное хранение и редактирование пользовательских настроек NodeMCU

WhiteCharmer

New member
Доброго времени суток всем! Собираю несколько переносных светильников для фотосъемки на безе NodeMCU, мосфетов и светодиодов. Управление осуществляется посредством HTTP-запросов через встроенный Wi-Fi. Все хорошо, пока я нахожусь у себя дома - я прописал прямо в коде данные для своей сети, присвоил через роутер устройству IP-адрес. Шлю на него запросы - все успешно отрабатывает. Но, по задумке, устройство должно быть переносным. А это значит, что нужно как-то дать возможность удобно перезаписывать данные Wi-Fi сети. А еще устройств может быть несколько, так что было бы здорово иметь какой-то переключатель, чтобы установить режим Wi-Fi - клиент или точка доступа. Смысл: переводим одно устройство в точку доступа, конектим остальные устройства и мобилу к ней и с мобилы шлем на нужные адреса управляющие запросы. Таким образом можно использовать светильники хоть на улице и управлять всеми с одного телефона.
Теперь, собственно, вопрос: если переключение режимов работы сети можно реализовать перемычкой, то как можно сделать удобное редактирование настроек (для начала имя/пароль Wi-Fi)? Первое, что приходил мне в голову: добавить к устройствам SD-карточку, а на ней записать файл settings.ini, где указать нужные настройки в виде пары ключ=значение, а при запуске устройства, соответственно, их считывать. Но, имхо, выделять целую SD-карточку под пару килобайт настроек - это как-то слишком. Может, есть еще какие-то варианты, как передать параметры прошивке, не редактируя непосредственно код?
ЗЫ: Код C++, Arduino IDE
 

nikolz

Well-known member
Доброго времени суток всем! Собираю несколько переносных светильников для фотосъемки на безе NodeMCU, мосфетов и светодиодов. Управление осуществляется посредством HTTP-запросов через встроенный Wi-Fi. Все хорошо, пока я нахожусь у себя дома - я прописал прямо в коде данные для своей сети, присвоил через роутер устройству IP-адрес. Шлю на него запросы - все успешно отрабатывает. Но, по задумке, устройство должно быть переносным. А это значит, что нужно как-то дать возможность удобно перезаписывать данные Wi-Fi сети. А еще устройств может быть несколько, так что было бы здорово иметь какой-то переключатель, чтобы установить режим Wi-Fi - клиент или точка доступа. Смысл: переводим одно устройство в точку доступа, конектим остальные устройства и мобилу к ней и с мобилы шлем на нужные адреса управляющие запросы. Таким образом можно использовать светильники хоть на улице и управлять всеми с одного телефона.
Теперь, собственно, вопрос: если переключение режимов работы сети можно реализовать перемычкой, то как можно сделать удобное редактирование настроек (для начала имя/пароль Wi-Fi)? Первое, что приходил мне в голову: добавить к устройствам SD-карточку, а на ней записать файл settings.ini, где указать нужные настройки в виде пары ключ=значение, а при запуске устройства, соответственно, их считывать. Но, имхо, выделять целую SD-карточку под пару килобайт настроек - это как-то слишком. Может, есть еще какие-то варианты, как передать параметры прошивке, не редактируя непосредственно код?
ЗЫ: Код C++, Arduino IDE
Вам надо сделать точку доступа на мобиле
И все ваши устройства будут коннектится к ней
ничего перестраивать не надо
Свою сеть будете носить с собой.
 

enjoynering

Well-known member
имхо HTTP запросы слишком жирно (там до кучи передается вместе с вашим 1 байтом). переводим одно устройство в точку доступа она общается с вами с помощью HTTP запросов, а дальше всем раздает остальным по esp-now протоколу

пример - ESP-NOW-TX-RX

SD-карточка не нужна, смотрите в сторону встроенной файловой системы SPIFFS или недавно включенной в Arduino ESP8266 Framework новой файловой системы LittleFS. хорошие уроки по SPIFFS есть на канале комрада Третьякова - ESP8266 Плагин для загрузки Файловой системы
 

WhiteCharmer

New member
@nikolz это первое, о чем я подумал. Вариант рабочий, но, опять-таки, не универсальный. Ко мне уже обратились пара знакомых фотографов с просьбой устроить им подобное освещение, при этом они вообще ничего не понимают в технике. Делать прошивку для каждого из них не очень хочется, плюс в любой момент можно сменить данные Wi-Fi на мобиле (или просто купить новую мобилу). Хочется такого устройства, чтобы в любой момент запустить в массовое производство :)
@enjoynering благодарю за наводки! Не слышал ранее про esp-now протокол. Сам веб-разработчиком тружусь (ПоХаПе, вот это вот все :)) и немного линукс-админом. Привык к HTTP-запросам и даже и не думал про другое :) Пошел, так сказать, RTFM. Похоже, это, что надо.
 

nikolz

Well-known member
@nikolz это первое, о чем я подумал. Вариант рабочий, но, опять-таки, не универсальный. Ко мне уже обратились пара знакомых фотографов с просьбой устроить им подобное освещение, при этом они вообще ничего не понимают в технике. Делать прошивку для каждого из них не очень хочется, плюс в любой момент можно сменить данные Wi-Fi на мобиле (или просто купить новую мобилу). Хочется такого устройства, чтобы в любой момент запустить в массовое производство :)
@enjoynering благодарю за наводки! Не слышал ранее про esp-now протокол. Сам веб-разработчиком тружусь (ПоХаПе, вот это вот все :)) и немного линукс-админом. Привык к HTTP-запросам и даже и не думал про другое :) Пошел, так сказать, RTFM. Похоже, это, что надо.
Не совсем понятно, зачем Вам вообще тогда HTTP запросы .
Расскажите, что вы, а тем более ваши знакомые фотографы, будете перенастраивать , если в этом они ни бум бум.
На ESP-NOW да еще совместно с Wifi Вы самостоятельно не сделаете.
 

enjoynering

Well-known member
Сам веб-разработчиком тружусь (ПоХаПе, вот это вот все :)) и немного линукс-админом. Привык к HTTP-запросам и даже и не думал про другое :) Пошел, так сказать, RTFM. Похоже, это, что надо
ну тогда вам будет легко написать html, js и css и json для вебморды. дальше разобраться в esp-now, как закидывать вебморду на SPIFFS, как парсить ответы JSON с помощью ArduinoJson и как сохранять распарсенное на SPIFFS.
 

enjoynering

Well-known member
На ESP-NOW да еще совместно с Wifi Вы самостоятельно не сделаете.
вы сейчас себе цену набиваете?

все работает. просто сервер и ESP-NOW должны быть на одном канале, а именно 1.

Код:
WiFi.softAP(ssid, password, channel);

The Wifi you connect to must be on the same Wifi channel that is used for ESPNow.
In my case I tested with ESPNow sending/receiving on channel 1 and the ESP32 connected to a WiFi which is using channel 1 as well.
If I connect to another WiFi that uses e.g. channel 13, the ESP32 does not receive any ESPNow data anymore.
подробности тут.
 

pvvx

Активный участник сообщества
Хочется такого устройства, чтобы в любой момент запустить в массовое производство :)
с ограничением в 3 внешних светильника/светодиода? AP ESP не держит много клиентов.
Вообще такие задачи решаются на модулях Bluetooth Low Energy, т.к. жрут по минимуму в простое/ожидании и подключаются к смарту десятками... На некоторых модулях BLE c али есть готовая прошивка с R,G,B и W каналом управления для светильников с помощью PWM (плавность/яркость более 10 бит). Примеры программы (исходники) управления на Android прилагаются. Цена модуля до 100 рупь.
Так-же есть готовые (прошитые модули) сразу в RGB лампочке:
321.09руб. 35% СКИДКА|Новый Smart реветь Беспроводной Bluetooth 4,0 RGB лампа 15 W светодиодный Магия RGBW RGBWW лампа для дома E27 B22 изменение цвета на приложение IOS/Android-in Светодиодные лампы и трубки from Лампы и освещение on AliExpress - 11.11_Double 11_Singles' Day
 

pvvx

Активный участник сообщества
Пример модуля:
83.23руб. 7% СКИДКА|JDY 10 BLE Bluetooth 4,0 Uart прозрачная коробка передач совместима с модулем Bluetooth CC2541-in Сменные детали и аксессуары from Бытовая электроника on AliExpress - 11.11_Double 11_Singles' Day
Пример программы:
Screenshot_20190923-122611484.jpg Screenshot_20190923-131150276.jpg
В примере всего один модуль, но их может быть дцать штук и разбиваются на группы, правда типа "спальня", "ванна", и т.д. :) Но есть её исходники от производителя чипов BLE...
 

nikolz

Well-known member
вы сейчас себе цену набиваете?

все работает. просто сервер и ESP-NOW должны быть на одном канале, а именно 1.

Код:
WiFi.softAP(ssid, password, channel);



подробности тут.
Не угадали.
Вы сами то делали?
Предположу что нет.
Я делал,
а вот в инете Вы не найдете готового проекта.
--------------------------
Речь идет о ESP8266, а Вы цитируете про ESP32.
-----------------------
Сначала сделайте, потом советуйте.
 

WhiteCharmer

New member
с ограничением в 3 внешних светильника/светодиода? AP ESP не держит много клиентов.
А вот этого я не знал, благодарю! Существенные ограничения :(
Вообще такие задачи решаются на модулях Bluetooth Low Energy, т.к. жрут по минимуму в простое/ожидании и подключаются к смарту десятками...
Пока тоже пришел к такому же решению. У товарища Гайвера похожий проект есть. Заказал bluetooth-модули у китайцев, жду доставки.
Так-же есть готовые (прошитые модули) сразу в RGB лампочке:
У меня дома стоят подобные, только с Wi-Fi и управляются через специальный Wi-Fi контроллер (аналог philips hue, как я понял). А вот с Bluetooth раньше не встречал. В сети есть реализация API Philips HUE на Python - запустил его себе на Raspbery Pi и вывел веб-морду для управления. Хотел еще яркостью управлять по датчику освещенности и включать свет автоматом по датчику движения, да как-то все руки не доходят :rolleyes:
ну тогда вам будет легко написать html, js и css и json для вебморды. дальше разобраться в esp-now, как закидывать вебморду на SPIFFS, как парсить ответы JSON с помощью ArduinoJson и как сохранять распарсенное на SPIFFS.
Я поступил немного по-другому: нарисовал вебморду на bootstrap 4, оптимизированную для мобил. Затем создал в Android Studio проект, где одним единственным контролом является Web View. В него же (проект) залил html/js/css файлы веб-морды и прописал в Web View ее открытие при старте. В итоге получил готовый APK. Единственное, пока не получилось сделать автоматический поиск устройств, приходится вручную их IP вводить.
Расскажите, что вы, а тем более ваши знакомые фотографы, будете перенастраивать , если в этом они ни бум бум.
Например, снимаем в студии. В студии есть Wi-Fi роутер. Подключаем весь свет к нему, для этого нужно указать ESP имя и пароль сети студии. Далее, выезжаем на природу и снимаем там. Wi-Fi сети нет. Либо раздаем с мобилы, либо переводим одно из устройств в AP (что не вариант из-за ограничений, как мне указали выше). Нужно снова указать данные сети, к которой подключаться.
Не совсем понятно, зачем Вам вообще тогда HTTP запросы .
Возможно и незачем. Повторюсь - я по работе постоянно с ними сталкиваюсь, вот просто и взял то, что мне известно и понятно.
На ESP-NOW да еще совместно с Wifi Вы самостоятельно не сделаете.
Ну так для этого же и есть форумы и сообщества, разве нет? Вон мне сколько полезной инфы накидали за эти пару дней
 

enjoynering

Well-known member
Если хотите на синезубе делать, то надо брать nRF52, у Arduino под него есть фреймворк
 

pvvx

Активный участник сообщества
Если хотите на синезубе делать, то надо брать nRF52, у Arduino под него есть фреймворк
В чем причина, что надо брать обязательно(?) nRF52? (по тому что самый дорогой чип?)
Под Arduino у него нет полной поддержки. Реализовано всего до 1% поддержки внутренних аппаратных контроллеров старших чипов nRF52 :p
По тому без разницы какой чип BLE брать - на все есть SDK и все они пока проприетарные (закрытые стеки ВТ и т.д.).
 

WhiteCharmer

New member
А как вы рисуете морду в bootstrap?
Я не очень силен в верстке, так что bootstrap беру чисто из-за его CSS-сетки, на базе которой можно быстренььько накидать адаптивную разметку, которая будет нормально отображаться как на мобилах, так и планшетах с разными размерами экрана. Ну а сами запросы - обычный AJAX из JS'а
 

WhiteCharmer

New member
Вот как раз и интересна технология быстрого накидывания сетки
Доброго времени суток! Прошу прощения за столь долгое отсутствие - учил матчасть :) В итоге последовал совету и отказался от Wi-Fi в пользу Bluetooth на модуле HC-05. Сделал пробную "светопалку" на RGB-ленте, а вот пример моего приложения на JAVA для управления ей:
Charmer/NeoLight-Android-Controller
Там, как раз, фронт реализован на HTML+CSS+JS (Bootstrap 4 плюс пара JS-библиотек для красивостей и удобностей) и завернут в WebView. На JAVA я писал последний раз еще в институте (а это около 7 лет назад :rolleyes:), так что с разработкой сего дела возникли некоторые затруднения, которые я постарался кратенько описать readme. Можете глянуть там, как реализована 12-колоночная сетка (div с классами "row" и "col-X").
 
Сверху Снизу