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

Комментарии

p.shuvalov

✩✩✩✩✩✩✩
4 Июн 2024
7
1
Микрофон, кнопка, ДФплеер, ВС2812Б лед панель, дисплей ТМ1637, MAX 9814 mic, Wemos Mini D1 ESP-32S.
Поведение очень странное. ИП адрес начало показывать, зато теперь в виджеты не пускает. Хотел будильник поставить, а при нажатии на кнопку - перезагрузка. А будильник рассвет так и не реализовали ещё?
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
зато теперь в виджеты не пускает
это недавняя регрессия, поправлена в мастере. Заливайте или со страницы выпусков или следите за обновками в мастере.
Рассвет нет еще, руки до мелочей не доходят ) Но в списке хотелок стоит
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
таблицы разделов разные, но, пока, размер разделов под код одинаковый. Как только перестанет хватать места на 4Мб версии придется отказаться от ОТА, на 16Мб просто расширю разделы под код, ОТА останется.
 

p.shuvalov

✩✩✩✩✩✩✩
4 Июн 2024
7
1
Уважаемый разработчик ( программист ), а есть возможность установить отдельную громкость на будильник и говорящие часы ( кукушка ) ? Ато будильник громко как надо, и каждый час орёт, а надо будильник громко, а каждый час тихо. Да и будильник работает только 1 минуту, а надо пока не отключим.
 
Изменено:

vortigont

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

p.shuvalov

✩✩✩✩✩✩✩
4 Июн 2024
7
1
@vortigont, да уже убавил громкость файлов. Это просто предложение было) А сделать будильник, чтоб не 1 минуту играл, а до отключения по кнопке получится?
 
  • Лойс +1
Реакции: vortigont

vortigont

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

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Ошибка сборки:
C++:
In file included from .pio/libdeps/esp32/esp32-flashz/src/flashz-http.cpp:30:
.pio/libdeps/esp32/esp32-flashz/src/flashz-http.hpp:39:10: fatal error: Ticker.h: No such file or directory

****************************************************************
* Looking for Ticker.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Ticker.h"
* Web  > https://registry.platformio.org/search?q=header:Ticker.h
*
****************************************************************

 #include <Ticker.h>
          ^~~~~~~~~~
compilation terminated.
Compiling .pio\build\esp32\lib9a9\esp32-flashz\flashz.cpp.o
*** [.pio\build\esp32\lib9a9\esp32-flashz\flashz-http.cpp.o] Error 1
In file included from .pio/libdeps/esp32/esp32-flashz/src/flashz.cpp:30:
.pio/libdeps/esp32/esp32-flashz/src/flashz.hpp:40:10: fatal error: Update.h: No such file or directory
9.png
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@andy040670,Надо в платформио ,пропатчить файл piolib ,добавить строки 1162 и 1163. Это бага платформио ,Вортигонт говорит.
https://github.com/platformio/platformio-core/issues/4940 ,запрос на исправление.
 

Вложения

Изменено:
  • Лойс +1
Реакции: andy040670

vortigont

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

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Надо в платформио ,пропатчить файл piolib
Спасибо, так собралось.
Если нужно - скажите, я соберу пайплайном, выхожу в артефакты на гитхаб.
Спасибо, но интересней самому.
С новым ардуино ядром от Tasmota, прошивка стала меньше занимать места, или это мне показалось?
C++:
RAM:   [=         ]  13.3% (used 43476 bytes from 327680 bytes)
Flash: [=======   ]  67.9% (used 1113269 bytes from 1638400 bytes)
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
С новым ардуино ядром от Tasmota, прошивка стала меньше занимать места, или это мне показалось?
не показалось :) собственно ради этого всё и затевалось откуда вылезли баги как в тасмоте/ардуино, так и в платформио.
Патч в ардуино уже приняли, но он доступен только для самого последнего выпуска ядра. Для старого пришлось писать свою обертку.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
коряво пересобрались походу. Возмите из мастера
Так это и есть "мастер".
Взял из \resources\html\css, перепаковал, эффект тот-же.
С NTP тоже беда, время берёт только с браузера, альтернативный даже не запоминает.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, нет, берите из папки /data/css/, в ресурсах дополнение лежит к тому что от эмбюи идет.
Про НТП это, похоже, косяк Тасмотовского ядра, сильно они там всё порезали что надо и что не надо.
А что с одним дефолтным НТП не работает? Он досупен вроде.
P.S. похоже надо думать о том что бы самому ардуино ядро собирать :sleep:
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
нет, берите из папки /data/css/
Так там и проблема, там не рабочие стили.
А что с одним дефолтным НТП не работает? Он досупен вроде.
Нет, не работает. Получить время можно получить только из браузера.

P/s

С сегодняшними правками стили заработали!!!
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Только что загрузил - вроде работает всё.


1719568020694.png

размер файлов 3789 и 3723 байт.

По НТП ищите почему не работает-то, может на роутере закрыто?
На крайняк можно сервер задать при сборке через макрос "NTP1SERVER"