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

Комментарии

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
ппц... вот что надо курить что бы в код эффекта воткруть вот это?
яркость:
int br = (MAX_BRIGHTNESS)-constrain(map(_scale,128,255,1,15)[I](centerX-x)[/I]((centerX-x)/(fb->cfg.w()*(0.0005*brightness))),1,MAX_BRIGHTNESS); if(br<0) br=0;
это все равно что на фото ночного пейзажа будет вставать солнце если сделать поярче монитор и гаснуть луна если яркость прикрутить o_O
 

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Фит. Акварель ,не понятный кривой эффект. Вышиванка ,несколько раз ловил на старте зависание эффекта секунд на 15 ,даже перезагрузки были.Проверьте кто может. События ,выбор будильника вызывает перезагрузку лампы. Вортигонт Вы события ,полностью переделывать будете? Или по пунктам в исуе писать ,в событиях почти все не рабочее. p.s вроде вышиванка нормально работает ,у меня с этого эффекта стартует при передергивании питания. Со вкл чекрыжиком вост состояние.
 
Изменено:

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Акварель ,не понятный кривой эффект. Вышиванка ,несколько раз ловил на старте зависание эффекта секунд на 15
Здравствуйте,
1. Акварель я и раньше не понимал, работает как и раньше.
2. Вышиванка работает как и раньше.
3. Лампа действительно стопорит секунд на 10-15, но при включении, секунд через 20-30. Наверно идёт автосохранение.
4. События работают идеально, у меня включено: "Выкл" вечером, и "Вкл" утром, на каждый день. Сейчас проверил выключение, включение - всё нормально.
5. А вот плавное переключение не работает.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
События ,вкл и выкл. и до этого работало , вот остальное...
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
@dina,
Не "движок", а работа "событий".
Сейчас гоняю эффекты, и заметил: если просто переключаешь, то нет подтормаживания. А если переключаешь и меняешь параметры, то происходит подтормаживание(один раз), это скорей всего автосохранение.
 

ldir

★✩✩✩✩✩✩
1 Мар 2020
11
13
ради интереса прошил эту прошивку, это тихий ужас. Как по мне проще сделать новый проект, чем разбирать и фиксить это поделие KDN и его всей братии таких же подельщиков. Даже недоделкой назвать нельзя, просто кодовая лапша с костылями на костылях. Честно, мне непонятно зачем тратить время приводить это в какой-то порядок. Его тут нет изначально
 

andy040670

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

vortigont

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

Вы события ,полностью переделывать будете?
пока не буду, мне какую-то асинхронную шину для внутреннего взаимодействия нужно организовать, потом через нее управлять событиями, кнопками и прочим обвесом. Это не быстро. В текущем функционале "событий" могу поправить что-то наиболее восстребованное если нужно, но всё перебирать не хочется. Будильник "рассвет" я пока не знаю куда девать. С одной стороны это штука которая типа как была изначально, с другой - она реально живым людям нужна-то? Ну т.е. вот именно так что бы лампа в темного медленно рассветала в течение получаса или сколько там надо?
Как по мне я бы вырезал целиком весь существующий код и реализовал уже позже на другой основе, но пока не решил и даже не смотрел работает оно или нет вообще. Высказывайтесь, будем думать.

А вот плавное переключение не работает.
про это можете описать подробнее если проблемы появилась. Я же недавно всю яркость переписал, могло что-то уехать.

Вышиванки и прочие акварели я не знаю как задумывались, поэтому мне сложно сказать это нормальное их поведение или нет. Если вышиванка зависает, знает есть какая-то пробелема, погляжу.

По периодическим затыкам, да, это происходит во время записи файлов с конфигурацией, их нужно минимизировать, но целиком не избавиться.
 
  • Лойс +1
Реакции: Alex PAP и Wan-Derer

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49

@vortigont,
По событиям ,они нужны для гирлянд на окно. Будильник пускай с рассветом будет ,эта фишка (китайцы такие будильники отдельно продают) Вообще мое видение эта лампа ,хороша , надо восстановить весь функционал который есть. Потом думать ,что новое добавить (я не знаю как Вам потом ,новое удобно будет прилаживать) Готов ждать и тестировать кусками. А так необходимый минимум и даже больше нормально работает! Я в Вашем распоряжении.
 
Изменено:
  • Лойс +1
Реакции: Дрон

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
про это можете описать подробнее если проблемы появилась. Я же недавно всю яркость переписал, могло что-то уехать
Здравствуйте, по пунктам:
1. С плавным переключением: при смене эффекта, замирает, гаснет, включается другой эффект.
2. Без плавного: замирает, включается другой эффект. Замирает и гаснет на доли секунд.
3. По "вышиванке": случайный баг, надеюсь я поймал его.
Файлы прилагаю.
 

Вложения

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

vortigont

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

плавное переключение и вышиванку гляну позже, ща в отъезде, доступа к тестовой установке нету.
 
  • Лойс +1
Реакции: Дрон и dina

vortigont

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

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
небольшое (или, скорее, большое) обновление.
Сейчас отпуска, лето, море, посему кодописательство ушло на 2й план. Тем не меее проделал муторную, но важную работу - вычистил практически все остатки макросов от 8266 и прочей строковой вакханалии, плюс переписал часть фреймворка, отвечающего за формирование элементов интерфейса, на меташаблоны. На вид в лампе ничего не изменилось, но итоговая оптимизация кода вышла весьма впечатляющая - прошивка на ровном месте "похудела" на 50 с лишним килобайт по-сравнению с мастером. Плюс убираются некотрые узкие места в последующих задачах.
Как обычно измения в feat ветке, можно потестить. Т.к. в функционале лампы ничего не поменялось, искать что-то новое смысла нет, все старые баги (пока) на месте. Обращать внимание следует на WebUI, работу элементов интерфейса, корректность надписей, "нажимаемость" кнопок и подобное.
О найденых проблемах писать сюда и(или), параллельно, на гитхаб. Дальше будет видно по свободному времени.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
При включении лампы ,перезагрузка!
 

Вложения

  • 21.1 KB Просмотры: 2

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, вы снимаете лог но сам проект не собрали или он изменялся недавно, поэтому лог не содержит стек-трейса и непонятно где именно программа падает. Пересоберите проект, прошейте и снимите лог заново.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Я не понял ,что надо? Настроил конфиг файл, прошил ,настроил гпио ,включил ,перезагрузка. А как надо?
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina,
смотрите, у вас в самом начале лог файла написано Esp32ExceptionDecoder: firmware at C:\Users\DENIS\FireLamp_JeeUI\.pio\build\esp32\firmware.elf does not exist, rebuild the project?

т.е. модуль логгера не может найти бинарник прошивки, на основании которого он разбирает вызовы вызвашие перезагрузку.
Возможные варианты:
1) после прошивки вы (или платформио) очистило каталог, куда собиралась прошивка, нужно собрать и прошить заново и снять лог
2) вы собрали и прошили один профиль проекта, а лог запускаете с другим профилем проекта. Лог запускается с профилем esp32, убедитесь что это именно тот профиль что вы прошили, либо переключите профиль.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Вообщем так получаеться ,прошивка esp32debug ,шлет такие данные (шил через консоль и платформио) ,при включении лампы перезагрузки. Прошивка esp32 ,работает (но много эффектов стали кривыми) ,интерфейс работает кнопки нажимаються. Как то так ,чем дальше тем сложнее )))
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, наберите в консоли pio device monitor -e esp32debug и всё у вас получится.
И обновите проект, может вы что-то старое собираете? Я потыкал наугад, вроде эффекты как и были раньше, чего-то особо страшного не заметил, но из меня тот еще тестер.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Прошил с полным стиранием. Точки доступа нет.
 

Вложения

  • 12.4 KB Просмотры: 4