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
 
Изменено:

Комментарии

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108

Вложения

  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Вот как ее перенастроить "на бок"? У меня это не выходит.
лады, я понял какая у вас топология. Я посмотрю что не сходится.


Мне бы его расшифровку ,как с дисплей джейсон на вики
документировать его я не буду, т.к. скорее всего настройки пинов оттуда уедут по своим конфигам к соответсвующей периферии, по крайней мере часть.
МОжете скачать живой конфиг из лампы и его править, думаю разберётесь там. http://lamp/gpio.json

падение по контролам ,только в эффекте 72 лавовая лампа при кручении контрола ФИЛЬТР
спасибо что нашли, оч круто! Поправил.
 
  • Лойс +1
Реакции: wadimsuv и dina

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
у кого то получилось настроить пины панели хаб 75
С последним обновлением с гита ,пины хаб настроил руками ,без проблем. Пины капризны в выборе. Вот мои. Поставил на прогон в демо режиме. 72 эффект не падает 👍
 

Вложения

  • 527 байт Просмотры: 4
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
А боком это вот так.
исправил калькуляцию для матриц с нечетными размерами, теперь должно быть норм, пробуйте.
Первый пиксель считается из левого верхнего угла, соответственно у вас будет нужно будет выставить все переключатели - "змея", "вертикаль" и чтобы перевернуть угол вниз вправо оба переключателя отражения.
Обновите реп и грохните папку .pio чтобы зависимая либа обновилась
 
  • Лойс +1
Реакции: wadimsuv

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Огромное спасибо за труд. Сегодня уже не успею. На смену. Через пару дней только.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Предложение ,12 эффект обозвать его тест панелей ,матриц. 2 лампы крутяться, уже 2 часа 16х16 и 32х64 ,не падали .
 
Изменено:

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Блин, как мне повезло. Я думал напарник заболел, а он приехал на смену))) А я конечно же домой. По делу: Прошился с обновлением. Спасибо. Все заработало. Осталось только "события" дождаться. Включил на ДЭМО режим, погоняю посмотрю как себя вести будет.
 
  • Лойс +1
Реакции: vortigont

vortigont

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

Осталось только "события" дождаться
"события" в скором времени не обещаю, довольно много нужно сделать по задуманным планам.
 
  • Лойс +1
Реакции: dina, wadimsuv и Дрон

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
У меня тоже включение заработало. Спасибо. Работает так же переключение следующего эффекта по 2м нажатиям и по 3м нажатиям.
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
А "события" точно не хватает. Привык к старой прошивке, утром включилась, вечером выключилась.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@Дрон,
И мне не хватает. А еще там же был счетчик дней до НГ Тоже интересная функция. У меня на квартире панель висит на балконе, так соседи любуются.
 
  • Лойс +1
Реакции: Дрон

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
ну дойдут руки до событий когда-нибудь, страую схему я обратно оживлять не буду. Пожалуй, если больше багов не заметно, но сформирую выпуск из текущего мастера и возму небольшой таймаут подумать над шиной обмена сообщениями, остальное всё в неё упирается из компонентов.
 
  • Лойс +1
Реакции: Burai и wadimsuv

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Разобрался с джейсонами. Сделал на 2 лампы 16х16 и 32х64 джейсоны ,гпио и дисплей. Хоть не ждать кучи перезагрузок:) Вортигонт можно застолбить эту сборку.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
подумал что 1е декабря - хороший день для того что бы застолбить новый выпуск проекта.
Rel v3.4.0

  • Update EmbUI resources
  • Update Builder scripts
  • refactoring MQTT/HTTP API
- make API for MQTT/HTTP compatible with WebSocket data messages format.
- Integrate message exchange between APIs.
- Removed obsolete code, i.e. sync_parameters(), http callback actions etc...
- refactoring code related to EmbUI API changes
- deprecate old-style weak functions, replaced with assignable action handlers
- sting literals refactoring to match EmbUI api change
- major refactoring for interface function names, const literals, etc...
  • avoid reboot on led stripe reconfig, when saving matrix config if gpio has not changed then avoid useless reboot
  • external devices
- removed TM1637_CLOCK define from config files, tm1637 suport is built-in by default, module is enabled if it's pins are defined through webui config
- WebUI
- implement WebUI configuration page for HUB75 parameters setup
- add tiled configuration setup for ws2812 matrixes
- run-time switch between ws2812 and HUB75 panel output
- hide obsolete functionality "Text", "Events"
- removed "Кол-во файлов в папке MP3" setting from UI
+ HUB75 panels output
- implement HUB75 backend engine for HUB75 panels via HUB75-I2S-DMA lib
- hub75 configuration via API
- add NO_CIE1931 option for HUB75 I2S lib
+ LedFB libarary
- implement LEDDisplay class
output device access is now hidden behind LEDDisplay class,
which provides methods to access canvas/overlay as memory-backed buffers.
Output device specific implementation and overlay mixing is of no dependency on other components.
- OverlayEngine class that manages canvas buffer binding to end device and overlay operations such as allocation, blending, back-buffering
- introduce 'persistence' flag for effect indicating that it uses canvas buffer as pixel data storage and it should persist on ovelay operations (using back-buffer for this)
- add support for LedTiles transformations.
- Led matrixes or stripes of same topology could be combined into tiles
- same kind of topology transformations supported for tiles as for Led stripe
  • reworkied "Drawing" feature using OverlayEngine, simplified packet data structures for pixel data
  • segregate effect calculation into sepparate Taks
- a Task is created on-demand to run effect calculations and render result via OverlayEngine
- Effects fixes
- Noise3dMap::fillNoise was using wrong x,y mapping
- refactoring for EffectRadialFire, make it dimension agnostic
- removed old "Clock Effect"
- EffectPacific removed static vars, fixed color application
- EffectSinusoid3 clear buffer on load
- EffectBBalls limit num of balls to panel width
- 3DNoise effect running on non-square panels
- EffectComet runnning on non sq pane
- EffectRingsLock - fix crashing when running on panel, some internal restructuring
- EffectNoise crash on non rectangular canvas
- EffectMaze was crashing on non-rect canvas
- EffectBBalls changing number of balls could crash some times
- refine EffectSmokeballs
- максимальное число огней оганиченно ширина/4
- огни бегают по всей ширине широкоформатной матрицы
- добавлен контрол высоты огней
- мелкие оптимизации
- EffectLiquidLamp fix sporadic crashes on filter change
- platformio.ini - update libs definitions, set SemVers for known external libs

Обновил билдер батники с возможностью переключаться на ветку выпуска 3.4, где не будет особых функциональных изменений кроме исправления как-то серьезных ошибок до нового выпуска.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
@vortigont, пункт в билдере 2:
Bash:
║  Switch/update - Last release  v3.4 ► 2  │  Переключить/обновить - выпуск v 3.4     ║
ведёт на:
Bash:
if "%param%"=="2" ( rem переключаем на дев
    "%ProgramFiles%\Git\bin\git" switch v3.3.0
    "%ProgramFiles%\Git\bin\git" pull
)
Это так задумано?
"rem переключаем на дев" надо тоже поправить.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, блин, этот файл с расширением cmd не обновился вместе остальнымы батниками :( Поправил в ветке v3.4
Дев я специально убрал, я уже перестал валить все изменения в дев. Отдельные наработки кладу в свои ветки, потом сливаю в мастер.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Не, я имею в виду вот это в update-DEV-from-Git.cmd
Bash:
if "%param%"=="2" ( rem переключаем на дев
    "%ProgramFiles%\Git\bin\git" switch v3.3.0
    "%ProgramFiles%\Git\bin\git" pull
)
строчку if "%param%"=="2" ( rem переключаем на дев
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Щас как стабильная ,то называеться rel3.4.0 или v3.4 ? На гите. Только предупреждайте откуда тестировать ,а то там дофига веток.