ESP, IoT WiFi лампа/гирлянда/информер ws2812/HUB75 - Обсуждение прошивки FireLamp_EmbUI

FireLamp_EmbUI - деполитизированный форк проекта "огненной" лампы (исходный проект FireLamp_EmbUI)

Проект был пересобран из старых форков и архивов репозитория пользователей и участников разработки. В исходном проекте был полностью выпилен русский язык, задним числом переписана история разработки в Git и удалена соотвествующая тема форума. Данный форк это не срез исходного репозитория, хотя сохранил часть общей истории до определенного момента.

Проект эволюционировал от "лампы" в гибридную прошивку для адресных лент / HUB75 RGB панелей.

Эволюцию проекта и смежные вопросы (архив) в теме универсальный информер/часы/лампа/гирлянда

Примеры работы проекта:



Внимание!
Актуальное описание и документацию можно найти на странице проекта в GitHub, шапка обновляется редко.
Вопросы сообществу можно задать в группе телеграм - LampDevs
Документация доступна в WiKi проекта,.

Концепт
Исходный проект был значительно переписан и реструктурирован. В разработке основное внимание уделяется структуре кода, декомпозиции и объектоориентированности даже в ущерб функциональнсти и "фичам". Основная идея развития - вся конфигурация и управление периферией должна быть максимально доступна во время работы кода без необходимости пересборки всего проекта. Параметры в конфигурационных файлах и опции сборки сводятся к минимуму, упраздняются и заменяются настройками через WebUI.

ESP8266 vs ESP32

Разработка ведется только под контроллеры семейства esp32. ESP8266 морально устарел, было принято решение не тратить время на поддержку совместимости и уделить больше времени и ресурсов актуальной платформе. Последний стабильно работающий на контроллерах 8266 выпуск проекта - версия v3.1.1, используйте на свое усмотрение, корректная сборка с обновлёнными библиотеками не гарантируется.

Бинарные сборки
Самый простой способ залить прошивку это воспользоваться веб-прошивальщиком из браузера. Прошивка работает из Chrome, Opera, MS Edge. Перейдите на страницу ESPWebFlasher и следуйте описаным инструкциям.
Проект можно прошить в чистую плату используя готовые сборки со страницы выпусков. Бинарные образы подготавливаются и прикрепеляются к выпускам начиная с v3.6.0. В списке Assets можно нати архивы factory_images_XX.zip и firmware_images_v3.6.0.zip. Factory - полный образ прошивки готовый для заливки в чистую плату, содержит в себе полный набор компонентов включая образ файловой системы с веб-ресурсами. Firmware - образы для обновления предыдущей версии прошивки, пригодные для заливки по воздуху через WebUI (OTA).


Как собрать проект
Для Windows понадобится установить git, python, platformio, проще всего это сделать с помощью скрипта. Подробнее можно прочесть в WiKi

Легкий способ:
для пользователей Windows OS можно использовать builder скрипт. Билдер был изначально написан @kostyamat (за что ему спасибо), адаптирован под форк текущей комадой (@andy040670).
Запускаете билдер и последовательно проходите шаги установки питона, гит, платформио, клонирование репозитория и сборку требуемого варианта прошивки.

Правильный способ:
Проект собирается с помощью Platformio
Для сборки проекта понадобится следующее:
Установить IDE Visual Studio Code, и, в качестве плагина к ней, установить Platformio. О том как это сделать можно найти массу роликов на youtube, например этот.

Желательно еще установить Git, обновлять проект будет значительно проще

Как скачать/обновлять проект

Актуальный срез проекта всегда можно скачать в виде zip-архива по ссылке, рекоммендуется скачивать последний выпуск со страницы релизов. Для желающих принять участие в тестировании можно поддерживать клон репозитория и подтягивать свежие обновления перед каждой новой сборкой. Открываем Git-bash, клонируем репозиторий в тукущую папку командой git clone --depth 1 --no-single-branch https://github.com/vortigont/FireLamp_JeeUI.git В дальнейшем для того чтобы обновить репозиторий достаточно перейти в папку проекта и выполнить команду 'git pull'.
Рекомендуется периодически обновлять зависимые библиотеки после обновления репозитория, обновление выполняется командой pio pkg update.

После того как вы скопировали проект (в виде zip архива или через git clone), необходимо в папке include скопировать файл user_config.h.default под новым именем user_config.h и в нем настроить сборку под свои параметры матрицы, номеров выводов и требуемых функций.

заметки по установке ПО под windows от @dina
дляпроверки того что всё ПО было установленн корректно в консоли в папке с проектом должны успешно выпоняться следующие команды:
git --version
git pull обновление репозитария
git status
pio --version
pio pkg update - обновление библиотек
pio run -e esp32 -t upload - прошивка
pio run -e esp32 -t uploadfs - прошивка Фс
git switch master - переключение на ветку мастер
git switch feat переключение на ветку feat


Сборка

  • Открываем папку проекта в VSCode
  • Что бы собрать прошивку, можно воспользоваться кнопками в нижней статусной строке:
    • PlatformIO:Build - собрать прошивку
    • PlatformIO:Upload - загрузить прошивку через USB в плату.

Platformio сам скачает необходимые библиотеки для сборки проекта.

Также можно открыть терминал с помощью клавиш Ctrl+Shit+` и воспользоваться расширенными командами для сборки проекта.

  • pio run -t upload - собрать и записать в контроллер проект по умолчанию под платформу esp32
  • pio run -e esp32debug -t upload - собрать и записать версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс
  • pio deviсe monitor - запустить serial-монитор для просмотра сообщений, выдаваемых контроллером


Для работы лампы нужно сформировать и залить в контроллер образ файловой системы. Выполняется это командой аналогично записи прошивки, но с параметром -t uploadfs, к примеру
  • pio run -t uploadfs - записать в контроллер образ ФС под платформу esp32

После первой прошивки дальнейшие обновления можно заливать в контроллер по воздуху. Для этого нужно зайти браузером на контроллер по URL вида http://embui-xxxx/update, где xxxx это ID контроллера, нажать на кномку 'Firmware', выбрать файл с прошивкой и загрузить его в контроллер. Файл с прошивкой Platformio кладет в подпапки проекта:

  • .pio/build/esp32/firmware.bin - версия под esp32

В случае каких-либо проблем со сборкой, перво наперво нужно полностью очистить рабочий каталог платформио и попробовать пересобрать прошивку (платфомио заново выкачает актуальные версии зависимых библиотек).
Для очистки рабочего каталога нужно удалить из папки прокта каталог .pio

О том как настроить обновление по воздуху (OTA) для своей лампы см страницу проекта на Гитхабе.


Озвучка для мп3 плеера
набор звуковых файлов для MP3 плеера можно скачать по ссылке из WiKi

Говорящие часы / кукушка
- настраиваема озвучка времени почасовая / пол часа / четверть часа
- тихие часы для отключения озвучки по ночам

Будильник
- 4 независимых будильника со своей мелодией у каждого
- каждый будильник может иметь один из режимов на выбор
- однократное срабатывание
- ежедневное срабатывание
- по будним дням
- по выходным дням

Управление
Лампа управляется через WEB-интерфейс или через мобильное приложение WLED-Native-Android, WLED-Native-iOS, старый WLED


Device API описан на странице в WiKi
 
Изменено:

Комментарии

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Попробуйте перезалить, стереть плату и тп.
Залил в другой камень 16х16 лог идет ,контрол скорость не работает. С хаб панелью ,камень стер ,залил лог с ошибкой. Контрол скорость не работает.
Вообщем за исключением лога ,одинаковое поведение. Может на гит ,криво залилось?
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, @dina,
обновили ли вы ФС?
Присутсвует ли у вас на ФС файл /benc.json? Какого он размера?
Присутсвует ли у вас на ФС файл /js/ui_lamp.json.gz? Какого он размера?
Присутсвует ли у вас на ФС файл index.html.gz? Какого он размера?

Что получится если нажать на кнопку Button GPIO? Видны ли там настройки гпио и чекрыжик включения кнопки?
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
обновили ли вы ФС?
Да, шил на чистую флэш.
/benc.json 1KB.
JSON:
{"btn_cfg":{"enabled":false,"gpio":5,"logicL":false,"debounce":false}}
Или:
JSON:
{"btn_cfg":{"enabled":true,"gpio":5,"logicL":false,"debounce":false}}
/js/ui_lamp.json.gz 3KB.
index.html.gz 4 KB.
user_config.h обновлён.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, запушил в мастер.
Нужно взять из репа, т.к. по-умолчанию набор действий для кнопки пустой. Его генерацию в коде я не реализовал. Создать новые действия можно только через АПИ
 
  • Лойс +1
Реакции: andy040670

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
запушил в мастер.
Нужно взять из репа, т.к. по-умолчанию набор действий для кнопки пустой. Его генерацию в коде я не реализовал. Создать новые действия можно только через АПИ
Да, всё нашёл, видать на гите какое то время надо на публикацию.
Эвенты появились, но на главной чикрыжика кнопки так и нет.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Кнопка заработала ,батон евентс появились. С акктивированым дебунс ,нормально работает. Без иногда своей жизнью живет. Клики надо быстро отбивать ,приноровился ,на энкодере туговатая кнопка. Может задержку между кликами ,покалдовать?
Контрол скорость ,так и не работает.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Может задержку между кликами ,покалдовать
да, все интервалы настраиваются через либу, просто в интерфейсе нет парметров. Добавлю какие нужно менять. Двойной клик наверное.

Про скорость я потыкал - на половине эффектов работает, на половине нет. Это наследие старой конфигурации в эффектах, там переменную скорости в 2х местах зачем-то сделали. У меня не хватило упертости все эффекты перебрать и свести к одному. ПЛанировал в будущем поменять все контролы целиком так и осталось пока.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
с главной чекрыжик я убрал т.к. настройки кнопки и привязанные события теперь хранятся в отдельном файле.
Очень жаль, мне часто приходиться отключать кнопку, точнее она у меня большее время отключена (животные), включаю только когда пользуюсь лампой. Теперь каждый раз лесть в дебри настроек стало архи не удобно.
Мне кажется настройки-настройками, а управление периферией должно быть на главной
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, ну над этим нужно подумать. Я убрал её не потому что посчитал там бесполезной а потому что
внутренняя логика в проекте сильно изменилась, это влияет и на схему управления.
Раньше вся периферия была монолитной и прописывалась в билд-конфиге во время сборки. А чекрыжики были это по сути кучи if'ов над глобальным флагом в компоненте лампы.
Теперь компоненты периферии это самостоятельные сущности, которые создаются по необходимости при наличии целого спектра параметров.
Т.е. кнопка/дисплей и пр. требуют еще настройки пинов и чтобы пины были валидными и пр.
Возникает вопрос - как должен вести себя рычажек кнопки или дисплея на главной если, напр нет необходимых настроек пинов или компонент не инициализирован, какое логическое значение при этом он должен принимать при переключении.
Плюс вызывает вопросы как формировать эти рычажки - на основе значения конфига каждого компонента (тогда это вызовет множественные чтения джейсонов с ФС при отображении главной страницы). Или на основе каких-то флагов, которые просто обозначают "хочу кнопку". Но тогда это будет выглядить по-идиотски - чекрыжек включен, а кнопка не работает (например).
Как-то так...
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Возникает вопрос - как должен вести себя рычажек кнопки или дисплея на главной если, напр нет необходимых настроек пинов или компонент не инициализирован
Те устройства которые инициализируются, как Мп3, показывать если девайс инициализирован, те устройства которые не возможно инициализировать, такие как микрофон, мосфет и тд, по назначению пинов: пин -1 не показывать, любые значения без минуса показывать, или в настройках периферии установить чикрыжик "показывать на главной". Как то так. Думаю так сделать можно.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Здесь уже тяжело ,наверно делать компромисс. Проект перестает быть лампой. Это уже блочно-модульная конструкция ,на одной прошивке. Мы к этому идем. В будущем добавиться мах 7219 и датчики ,может еще что то. Тогда каждый будет выбирать ,свой зоопарк железок. И большинство ,будет редко заходить в вэбморду ,после настроек. Проще наверно сценарий на кнопку добавить.Вкл откл длительным удержанием например. Или я чего то не понимаю? :unsure:
 
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
И большинство ,будет редко заходить в вэбморду ,после настроек. Или я чего то не понимаю? :unsure:
Интересно, а как вы управляете лампой? Вот я использую смартфон с установленным вебом как приложение, с компьютера, где так же веб установлен как приложение (не запуская основной браузер), который всегда включен и я в нём всегда))
Мне скорей всякие там энкодеры не нужны, кнопки достаточно, чтоб проходя мимо клацнуть по ней по необходимости)))
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
По пину реализовать будет громоздко, т.к. раньше весь общий, конфиг висел в памяти можно было из него что-то брать. Но сейчас периферия разрослась и конфиги стали выгружаемые. Придется вычитывать их при загрузке главной все время.
Вообще вариант с действием блокирования на самой кнопке мне больше нравится. Сможете назначить сколько-нибудь тапов на блок/разблок и не надо в веб лезть что ьы ее активировать. Как вам?
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Вообще вариант с действием блокирования на самой кнопке мне больше нравится. Сможете назначить сколько-нибудь тапов на блок/разблок и не надо в веб лезть что ьы ее активировать. Как вам?
Ну нет. Проще в веб влезть и отключить её нахер вообще.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Вообще выкинуть её к хренам собачим.
Нет кнопки нет проблем)))
В прошлой теме кто-то рассказывал как попугай включал лампу, у меня кошка повадилась целенаправленно ночью включать лампу, будит, видите ли ей скучно.))) На ночь всегда блокировал, сейчас выкину нафиг эту кнопку.
Заниматься ананизмом с множественными кликами это та ещё затея, на любителя, я не из них)))
Мой приоритет управлять лампой через вебморду, из мажора и Алисой, а не бегать к лампе по каждому поводу, ленивый я.)))
 
Изменено:
  • Лойс +1
Реакции: Дрон

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Я всегда говорил ,сенсорные кнопки зло. У меня кот иногда ,свет вкл. ладно в коридоре.Сенсорным выключателем. Поэтому надо мириться ,если живность заводишь. Энкодер решит проблему.:)
 
  • Лойс +1
Реакции: Divin

Divin

★★★✩✩✩✩
30 Янв 2021
435
192
@dina, мой усатый постоянно включал лампу, поменял на механическую(лампа на другой прошивке) а энкодер вери гуд, мне даже его легкие щелчки при повороте нравятся, что то такое теплое, "ламповое" в этом есть.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
мой усатый постоянно включал лампу
Вот и я об этом, и ранее было решение, сейчас....
У меня кот иногда ,свет вкл. ладно в коридоре.
У меня тоже сенсорные + управление по 433Mg (Levolo), но по высоте установки мой зверь физически до них дотянутся не может в отличии от лампы, которая стоит на столе.
Всё-таки, судя по реакции, пока малого числа пользователей, функция всё же востребована, наши братья меньшие живут почти в каждой семье, это надо брать в расчёт.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
А вы сенсорную на отдельном модуле ставите, tp или как там его?
В есп32 есть свой сенсор, хотел еще поковырять его.
Но вообще энкор он получше будет однозначно. Чекрыжик я подумаю еще как сделать, мож придет мысль в голову
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
А вы сенсорную на отдельном модуле ставите, tp или как там его?
В смысле на отдельном модуле?
tp таже кнопка высокого уровня, подключается к пину ESP.
Но вообще энкор он получше будет однозначно. Чекрыжик я подумаю еще как сделать, мож придет мысль в голову
Энкодер меняет дизайн (портит), конечно ИМХО, но скрытая кнопка однозначно лучше.
В есп32 есть свой сенсор, хотел еще поковырять его.
Да есть такие пины, но как это меняет ситуацию с временной блокировки кнопки на главной?
 
Изменено: