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

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

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

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

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

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



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

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

ESP8266 vs ESP32

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

Бинарные сборки
Проект можно прошить в чистую плату используя готовые сборки со страницы выпусков. Бинарные образы подготавливаются и прикрепеляются к выпускам начиная с 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) для своей лампы см страницу проекта на Гитхабе.

Для знакомства с проектом можно воспользоваться собранными бинарниками от @andy040670 из этого поста

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

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

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

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


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

Комментарии

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Добрался до компа...
Загрузил ваш проект, install.bat не стартует в кодовой странице UTF-8, CMD не любит юникод.
Сменил на 1251, запустился с крякозябрами, сменил кодировку в самом документе, не помогло. Похоже придётся кириллицу переписать в windows - 1251.
Да и..., проверил, действительно сейчас гит работает корректно из папки проекта с нужным репо.
 
  • Лойс +1
Реакции: vortigont

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
@andy040670, на вашей версии снова в билдере нажал 2. Всё прошло.
Под 8266 собирается, под 32 нет.
С пином ошибку могу и убрать, но остальное?1675357006846.png
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
@vortigont,
Полазил по закромам, нашёл есп32, но с Lora на борту))
Прошил. Точка доступа есть, а вот подключиться не могу, что то типа "error decoding".
P/s
В install.bat не плохо бы добавить "config --global --add safe.directory", а то при обновлении из репо возникают проблемы.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
Загрузил ваш проект, install.bat не стартует в кодовой странице UTF-8, CMD не любит юникод.
Да и..., проверил, действительно сейчас гит работает корректно из папки проекта с нужным репо.
нашел винду, посмотрел на инсталл - более внимательно, утф8 у меня работает норм, открывал в виндовой cmd.exe. Добавил гитатрибут чтобы бат файлы содержали виндовые окончания строк, может в этом была проблема, проверьте.
Попутно подрихтовал кое-какие проверки на 64 битность и пути к бинарю гита, выставил переменную куда клонировать реп. Должно чуть аккуратнее работать.

@vortigont,
Полазил по закромам, нашёл есп32, но с Lora на борту))
Прошил. Точка доступа есть, а вот подключиться не могу, что то типа "error decoding".
а подробнее, "error decoding" это где выводит, в консоли контроллера? есп32 обычный или одноядерный? Подключиться к wifi или к вебморде?
Вообще да, вебморда в режиме АР+клиент работает отвратительно, контроллер тупит при поиске сети для подключения. В своем форке фреймворка я переписывал работу в режиме АП специально чтобы избавится от этой проблемы. Тут, похоже, это не работает.

В install.bat не плохо бы добавить "config --global --add safe.directory", а то при обновлении из репо возникают проблемы.
ну в глобал точно не надо. А что под виндой это работает вообще? Не знаю как можно склонировать реп и не быть владельцем его файлов на диске.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
а подробнее, "error decoding" это где выводит, в консоли контроллера? есп32 обычный или одноядерный? Подключиться к wifi или к вебморде?
Есп32 обычная, в браузере при попытке открыть вебморду на телефоне выдаёт такую ошибку, на компе просто "ресурс не доступен".
Не знаю как можно склонировать реп и не быть владельцем его файлов на диске.
Да, так на вин 10, приходится в ручную присваивать права, причем после установки репа всё нормально, но стоит выйти из проекта, а за тем войти, как тут же становишься не владельцем.
нашел винду, посмотрел на инсталл - более внимательно, утф8 у меня работает норм
Как ни странно у меня тоже заработало, да у меня и ни когда не было проблем с этим, что и удивило, хотя здесь на форуме у 90% пользователей такие проблемы были, почему Константин и переписал батники в кодовой странице windows - 1251, история древняя как мир, cmd не корректно работает с утф8, до семёрки вообще не умела))
По поводу ошибки в браузере позже гляну в консоли, посмотрю что там пишет.
P/s
Глянул.
Ошибка в браузере: ERR_CONTENT_DECODING_FAILED
В консоли f12 ошибок нет, но есть предупреждение:
VM101:1957
crbug/1173575, non-JS module files deprecated.
(анонимный) @ VM101:1957

Вот что в мониторе порта:
C++:
--- Terminal on COM3 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp8266_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
SQU��o��xL&BS�}A*�e1A*�%=OU�
�˙�g�� b *�]P'eC��kE�v'��0)}d.��x�,�E�v'��0i�0E�v'��0 �_��:��0��_��:��0C��e'T� ,�k"�v'j
!�d'��0�0�,��:&�6C����y�x�8�eSHE (592) esp_core_dump_flash: No core dump ��ѥѥ���found!
E (592) esp_core_dump_flash: No core dump partition found!
[   270][E][WiFiSTA.cpp:317] begin(): connect failed! 0x300a
[   563][E][vfs_api.cpp:105] open(): /littlefs/events_config.json does not exist, no permits for creation
[  3272][E][WiFiSTA.cpp:317] begin(): connect failed! 0x300a
[ 73751][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
[ 74918][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
[ 80029][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
[ 94402][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
[ 98952][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
Да, так на вин 10, приходится в ручную присваивать права, причем после установки репа всё нормально, но стоит выйти из проекта, а за тем войти, как тут же становишься не владельцем.
а кто становится владельцем? Что-то это похоже какая-то ваша локальная специфика, гит вообще не сохраняет информацию о владельце файлов в репе. А сейф дир нужен наоброт чтобы разрешать залезать в чужие каталоги и дергать оттуда сценарии, нап в локальных сабмодулях каких-то.


история древняя как мир, cmd не корректно работает с утф8, до семёрки вообще не умела))
да пусть умрет уже поскорее, 2023 год на дворе. Даже возиться не хочу :)

Ошибка в браузере: ERR_CONTENT_DECODING_FAILED
В консоли f12 ошибок нет, но есть предупреждение:
VM101:1957
crbug/1173575, non-JS module files deprecated.
ну похоже да проблемы с коннектом в режиме АР+Клиент. Я как-то давно в это смотрел еще когда с КДНом код писал, там интересно - если еспшка в комбо режиме и ей выдана команда подключиться к предыдущей АП, то она начинает сканить эфир и прыгает с канала на канал. А т.к. АП не может работать отдельно, (радиомодуль один), то получаются проблемы с подключением к АП.
По идее ее можно заткнуть если прописать в config.json {"WiFiMode" : "1"}, но это так себе вариант - только на потестировать.
Я погляжу каких трудов будет стоить бекпортировать мой wifi код в фреймворк, но что-то мне кажется что это будет не просто. Я довольно далеко ушел в сторону в своем проекте.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
ну похоже да проблемы с коннектом в режиме АР+Клиент. Я как-то давно в это смотрел еще когда с КДНом код писал, там интересно - если еспшка в комбо режиме и ей выдана команда подключиться к предыдущей АП, то она начинает сканить эфир и прыгает с канала на канал. А т.к. АП не может работать отдельно, (радиомодуль один), то получаются проблемы с подключением к АП.
На данный момент у КДНа ситуация обратная, в точке доступа при настройке клиента и сохранении есп ребутится пока не переведёшь в АР-Клиент (может ребутнутся несколько раз пока сканирует сети). Потом уже зайдя из локалки можно перевести обратно в режим Клиент, но это было всегда, а вот к есп8266 это не относиться.
а кто становится владельцем? Что-то это похоже какая-то ваша локальная специфика
Может я не корректно выразился.
Когда не просто вышел, а запустил другой (который тоже усомнился что я это я) и вернулся к первому, а их три.
Когда был один локальный репо, проблем как бы тоже не припомню, на данный момент мне сам гит советует применить эти флаги/параметры, что и делаю, и теперь все три гуд. А где здесь тараканы водятся, кто кому не доверяет, винда гиту или наоборот, мне мало интересно. Так же как раньше, гит хранил конфиги в %AppData%, теперь хранит в рабочих папках не зависимо.
Вот здесь мне кажется проблема в этом:
[ 73751][E][vfs_api.cpp:105] open(): /littlefs/index.html does not exist, no permits for creation
Либо littlefs не существует, либо к ней нет доступа, об этом говорят и ошибки выше.
Может что с разметкой не то? Потому что точка доступа есть, а по 192.168.4.1 говорит что ERR_CONTENT_DECODING_FAILED.
Попробовал закинуть папку "data" от другой прошивки (с своего репо), результат "NOT FAUND"
Может проблема с пережатием и... Так мысли в слух))
 
Изменено:

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
Пока тут высоконаучные беседы, можно приземлённый вопрос - если попросить сгенерить файлы для esp32 - чем их потом записывать? Билдер же не сможет?
 
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Пока тут высоконаучные беседы, можно приземлённый вопрос - если попросить сгенерить файлы для esp32 - чем их потом записывать? Билдер же не сможет?
ESPtool например, но нужно указать адрес области памяти куда будет писаться прошивка и куда ФС.
По адресам я вам не подскажу, лучше спросить у @vortigont.
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
в точке доступа при настройке клиента и сохранении есп ребутится пока не переведёшь в АР-Клиент, но это было всегда, а вот к есп8266 это не относиться.
это он уже что-то без меня накрутил, я открывал гуй и не оч понял что означает режим "только клиент" когда в коде потом все равно выставляется комбо. В 8266, кстати, как раз используется код который я писал с периодическим отключением клиента и скана эфира на наличие несуществующей точки. В своем форке я в какой-то момент вообще забил на поддержку 8266, возни слишком много.

Когда не просто вышел, а запустил другой (который тоже усомнился что я это я) и вернулся к первому, а их три.
А где здесь тараканы водятся, кто кому не доверяет, винда гиту или наоборот, мне мало интересно.
Ну тут не подскажу, единственный вариант когда гит может ругаться таким сообщением это если вы запускаете его в каталоге, который на самом деле не является корневым рабочим каталогом репа (в нем нет подпаки .git). Тогда гит лезет на уровень выше и выше пытаясь найти голову рабочего каталога и там может наткнуться на файлы другого владельца (вплоть до корня диска). Проверьте где вы его запускаете (или билдер его запускает), возможно просто запускать надо где-то из другого места.


Либо littlefs не существует, либо к ней нет доступа, об этом говорят и ошибки выше.
Может что с разметкой не то? Потому что точка доступа есть, а по 192.168.4.1 говорит что ERR_CONTENT_DECODING_FAILED.
нет, это норм. При открытии корня сервер ищет файл на ФС index.html и не находит его потому что там лежит index.html.gz.
А декодинг феил это вроятно хромой жалутеся на недокаченный гзип при обрыве коннекта который не смог распаковать. У вас эта ошибка сразу после коннекта возникает или он тупит-тупит и потом плюется?

если попросить сгенерить файлы для esp32 - чем их потом записывать? Билдер же не сможет?
не сможет. записать можно есптулом, но под есп32 это сложно, там пишется несколько файлов в разные места флеша - загрузчик, таблица разделов, сама проша. Одного файла с прошивкой вам не хватит. Либо надо чтобы вам кто-то собрал прошивку, залил в такую же плату как у вас и потом слил оттуда полный дамп флеша одним файлом.
В чем у вас проблема собрать прошивку-то из моего репа? Я там даже билдер поправил (вроде). Скачайте зипник, распакуйте и собирайте билдером. Только не надо ничего обновлять из гита, прям как есть так и собирайте, конфиг только на свой поправьте.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
У вас эта ошибка сразу после коннекта возникает или он тупит-тупит и потом плюется?
Сразу.
Ну тут не подскажу, единственный вариант когда гит может ругаться таким сообщением это если вы запускаете его в каталоге, который на самом деле не является корневым рабочим каталогом репа (в нем нет подпаки .git)
Корневой и есть папка .git.
335.png
Гит ругался только при попытке обновить локальный репо с удалённого билдером, пунктом 1, 2.
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
нашел проблему. Похоже в хроме нет поддрежки сжатия не гзипом для не TLS соединений :( уроды.
лан, подумаю над этим, пока откатил ресурсы обратно гзип. Обновите реп, либы и ФС и попробуйте снова.
 
  • Лойс +1
Реакции: andy040670

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Завелось!
Сеть настроилась тоже без танцев.
Саму лампу протестировать не могу, нет матрицы, а так модуль погоняю.
Отсутствуют эффекты 5,10,12,15,17,19,20,21,26,27,29,30,31,32,33,34,35,37,40,43,44,47,50,51,55,56,62,63,64,69,70,71,73.
В списке они присутствуют, но при выборе одного из них, лампа уходит в ребут.
Лог при переключении на 5 эффект:
 

Вложения

  • 19.5 KB Просмотры: 3
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,167
1,455
При открытии корня сервер ищет файл на ФС index.html и не находит его потому что там лежит index.html.gz.
Вебсервер на микроконтроллере так устроен, что по запросу index.html сперва он ищет index.html.gz, а уже потом, если не нашёл, отдаёт index.html
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
Отсутствуют эффекты 5,10,12,15,17,19,20,21,26,27,29,30,31,32,33,34,35,37,40,43,44,47,50,51,55,56,62,63,64,69,70,71,73.
В списке они присутствуют, но при выборе одного из них, лампа уходит в ребут.
похоже на кривой указатель где-то... там выше ошибки на десериализацию конфига эффекта, похоже они изначально создаются битые.
Мож попробовать очистить их и пересоздать. Попробую у себя воспроизвести, погляжу. С остальными похоже тоже самое.
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
Вебсервер на микроконтроллере так устроен, что по запросу index.html сперва он ищет index.html.gz, а уже потом, если не нашёл, отдаёт index.html
Если речь про async сервер, то это не так. При инициализации сервера сначала ищется именно обычный файл, и, если он найден, то он и отдаётся. Если обычного файла нет, тогда ищется gz. Сервер ведет тривиальную статистику, после набора которой он может переключится на поиск гз файлов в приоритете, если обычных файлов нет вообще.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
но при выборе одного из них, лампа уходит в ребут.
у меня на 8266 ребутится на неопалимой купине. Эффект ни о чём, поэтому просто удалил. Вообще, надо смотреть в сторону русификации текущей правильной версии https://github.com/DmytroKorniienko/FireLamp_EmbUI/tree/dev
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
Пробывал, не помогает.
поглядел - там столько багов, как оно раньше работало, удивляюсь. Поправил ошибки в генераторе списка и умолчальных конфигов для эффектов - вроде работает норм. Проверил у себя на пустой есп32 плате - список эффектов показывает, пощелкал по несколькольким - переключается норм. После загрузки нужно зайти в "управление списком эффектов" и тыкнуть на "по умолчанию".
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
После загрузки нужно зайти в "управление списком эффектов" и тыкнуть на "по умолчанию".
кстати, отдельно к одному эффекту такое можно применить?
И, всё-таки, каков порядок действий по использованию вашего варианта? качаю зип, распаковываю и запускаю билдер сразу? Или install надо пройти?
 

vortigont

★★★★★★✩
24 Апр 2020
941
507
Saint-Petersburg, Russia
кстати, отдельно к одному эффекту такое можно применить?
сброс настроек эффекта по-молчанию? Не знаю, я весьма поверхностно понимаю текущие возможности лампы, распутываю по ходу дела. Поищите - если не найдете, можно закинуть в список "хотелок".

И, всё-таки, каков порядок действий по использованию вашего варианта? качаю зип, распаковываю и запускаю билдер сразу? Или install надо пройти?
Уважаемый, ну вы бы уже 10 раз попробовали самый простой вариант чем спрашивать - не получилось бы, пришли с конкретным вопросом.
Я вашу систему не знаю, предполагаю что если вы до этого что-то собирали билдером, то весь нужный софт у вас уже стоит и будет достаточно просто скачать зип, распаковать и из этой же папки просто собрать прошивку билдером (ну конфиг только под себя настроить).