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

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

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

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




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

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

ESP8266 vs ESP32

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

Как собрать проект
Для 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 - прошивка Фс
pio run -e esp8266 -t upload - прошивка
pio run -e esp8266 -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 esp8266 -t upload - собрать и записать версию esp8266, будет собрана облегченная прошивка без вывода отладочных сообщений через serial интерфейс Рекомендуется для повседневного использования, если нет нужды отлаживать работу лампы
  • pio run -e esp32debug -t upload - собрать и записать версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс
  • pio run -e esp8266dev -t upload - собрать и прошить отладочную версию под esp8266
  • pio deviсe monitor - запустить serial-монитор для просмотра сообщений, выдаваемых контроллером


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

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


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

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

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

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

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

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

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

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


По кнопке:

  • Из выключенного состояния
    • 1 касание - включить на последнем эффекте
    • 2 касания - включить в режиме ДЕМО
    • долгое удержание - включить в режиме "белая лампа" на минимальную яркость (ночник)
    • касание, удержание - включить в режиме "белая лампа" на максимальную яркость
  • Во включенном состоянии
    • 1 касание - выключить лампу
    • 2 касания - следующий эффект
    • 3 касания - предыдущий эффект
    • 5 касаний - вывод IP на лампу
    • 6 касаний - вывод текущего времени бегущей строкой
    • удержание - регулировка яркости
    • 1 касание, удержание - регулировка "скорости" эффекта
    • 2 касания, удержание - регулировка "масштаба" эффекта

Это дефолтное состояние для кнопки, но абсолютно любую настройку можно поменять

HTTP/MQTT команды

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

Комментарии

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
@andy040670, у меня сейчас эта прошивка стоит на лампе 730 диодов. Меньше 13к памяти не бывает. Иногда неск. дней стабильно всё, иногда - падает по неск. раз, ребутится при попытке переключить эффект или просто в web-интерфейсе что-то обновить, походить по нему. А с Алисы - не падало ни разу.
esp8266
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Меньше 13к памяти не бывает. Иногда неск. дней стабильно всё, иногда - падает по неск. раз, ребутится при попытке переключить эффект или просто в web-интерфейсе что-то обновить
Я и говорю, что с памятью всё нормально, падения хаотичные. Просто включаю и падает, потом работает, или как вы справедливо заметили, "при попытке переключить эффект или просто в web-интерфейсе что-то обновить".
Может проработать 1 минуту, а может два круга в демо пройти (30 сек эффект, без 0, 250, 254, 255 эффектов)
Тут даже делать ничего не надо.
В прошивке включено только мп3 и микрофон.

Как я уже писал выше, у меня осталась плата прошитая с моего репо, до того как я случайно его испортил, попыткой слить дев в мастер, так вот, она самая стабильная.
Поставил на прогон, пока 0 вылетов.
1.png
Надеюсь vortigont поправит, приведёт к исходному состоянию и улучшит (оптимизирует) прошивку со временем.
 
Изменено:

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
@andy040670, ясно.

А вы замечали такой глюк: Мерцание, скорость 127 - если её уменьшить, то за минуту все точки исчезают и новых не появляется. Музыка играет, свечения нет) Матрица 16*16
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Мерцание, скорость 127 - если её уменьшить, то за минуту все точки исчезают и новых не появляется.
Здесь не понятно что вы имеете в виду. Скорость меняется, последствий нет, на старой прошивке, vortigont'а и на украинской.
Музыка играет, свечения нет) Матрица 16*16
Музыка играет, свечения нет потому что нет у меня матрицы)))
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
Здесь не понятно что вы имеете в виду.
Вспышки мерцания секунд за 20-30 все исчезают полностью. Лампа тухнет. Т.е. перестают новые появляться. Стоит лишь потрогать скорость. Если вернуть на 127 и выкл/вкл - эффект снова работает как надо.

нет у меня матрицы)))
Понятно, вы - не проверите )))


@andy040670, - а как там красный цвет графики включен? Палитру тоже менять можно?
 

vortigont

★★★★★✩✩
24 Апр 2020
916
493
Saint-Petersburg, Russia
особо не ковырялся пока, но из того что оставлял на выходные крутиться видно что по памяти текут и 8266 и есп32. 8266 у меня часов по 6 работала, на каком эффекте падала я не следил. У есп 32 просто памяти больше, но тоже течет. Тут бы отделить зерна от плевел - течет какой-то эффект или что-то прочее в коде
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Тут бы отделить зерна от плевел - течет какой-то эффект или что-то прочее в коде
Утечка как я понял постоянная, потому что копится. У меня хватает только на 2 круга демо, 30 сек на эффект.
Падение на втором круге происходит всегда на эффекте 71. Меташары, следующий эффект тоже сильно жрёт память.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
Что нужно изменить/добавить строки и в каких файлах, чтобы через mqtt менять громкость плеера? На данный момент, команды вроде есть, но они не работают - громкость не меняется.
 

vortigont

★★★★★✩✩
24 Апр 2020
916
493
Saint-Petersburg, Russia
@Константин 271, для начала снимите лог где будет видно работают они или нет.
У меня нет плеера, я смотрел по логу - что-то там на команды отрабатывает. Детально разбираться вам, раз у вас плеер есть ) Дальше будем думать.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
для начала снимите лог где будет видно работают они или нет.
У меня нет плеера, я смотрел по логу - что-то там на команды отрабатывает.
Отрабатывают
Через веб интерфейс:
Bash:
DFplayer: Set volume: 17
Eff:1, FPS: 0, FastLED FPS: 0
MEM stat: 23680, HF: 11, Time: 17:35
По HTTP: /cmd?mp3volume=1
Bash:
pubCallback :
HTTP: MP3VOLUME - 1
SET
RA 0: 1
Не работает.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
а если так?
/cmd?MP3_VOL=10
Так работает:
Bash:
pubCallback :
HTTP: MP3_VOL - 10
SET
RA 22: 10
DFplayer: Set volume: 10
HTTP: MP3_VOL - 10
SET
RA 22: 10
DFplayer: Set volume: 10
Но в UI значение меняется только после перезагрузки страницы.
P/s
В украинской были не давно правки по этому поводу: MP3 volume http/mqtt control
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,141
1,446
Погоняв прошивку на 8266 в режиме демо 30 сек на эффект, заметил что после ~ 2-3 часов плата ребутится, как правило на эффекте "Метошары"
По идее, ещё Синусоид должен начинать тормозить спустя несколько дней.
Эффекты с багами до сих пор.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
для начала снимите лог где будет видно работают они или нет.
я на деле проверял. Команда идёт. Громкость не меняется.
Лог - как и чем?
В украинской были не давно правки по этому поводу
Да. Там - добавили.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
Кстати, как в этой лампе попросить произнести время, аналогично 6-кратному тапу по сенсору в прошивке Fiery? Т.е. в произвольный момент жму - слышу время.
И как запрограммировать говорить время ежечасно, к примеру? Желательно пример. Я так и не добился никакого произношения.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
я на деле проверял. Команда идёт. Громкость не меняется.
/set/MP3_VOL 15 , значение 0-30.
Кстати, как в этой лампе попросить произнести время, аналогично 6-кратному тапу по сенсору в прошивке Fiery? Т.е. в произвольный момент жму - слышу время.
6 касаний - отображение текущего времени с бегущей строкой, на включённой лампе. (Должна говорить если настроено)
И как запрограммировать говорить время ежечасно, к примеру? Желательно пример. Я так и не добился никакого произношения.
События -> Добавить -> Вывести время. Дата/время события (начало, с какого времени начать). Повтор=60. Останов через, мин=0. В любом состоянии=по желанию. Озвучивать время=вкл. Повтор, дни недели=выбрать все. -> Добавить.

Настройки -> DFPlayer -> Время=вариант 2. -> Сохранить.
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
916
493
Saint-Petersburg, Russia
Лог - как и чем?
Нужно собрать и залить прошивку в дебаг версии, вроде как в билдере это все есть, и там же команада на запуск монитора - запускаете при подключенной лампе и смотрите сообщения в консоль.
фух... освойте уже консоль, все станет намного проще. В папке проекта команда pio device monitor -e esp8266dev

@andy040670,
может сразу в шапку такие советы? Заберёте тему? Я постараюсь фак на гитхабе в маркдаун тоже оформить.

Нашел я (наверняка не последнее) место где память течет - это всё любимые контролы которые пересоздаются дважды при смене эффекта :) Тут структура из списка на указатели, кдн её копирует простым присвоением, а оператора копирования у списка нет. В итоге периодически появляются висячие указатели и use-after-free, оно будет либо падать случайно либо течь. Я недавно заменил либу списков на свою, где реализован deep-copy, и оно потекло как из ведра :)
Получается довольно много править, доведу до консистенции, выложу обновку. Хотя всех проблем это явно не решит, тут много таких мест.
 
  • Лойс +1
Реакции: andy040670

Константин 271

★★★✩✩✩✩
12 Июл 2020
947
103
/set/MP3_VOL 15 , значение 0-30.
команда /user/*********/2ABF25D12345/embui/set/MP3_VOL и payload {value} не срабатывает. Громкость не меняется. Сервак mqtt.by - но я пробовал и другие. Все работает, кроме громкости. Да и сам автор на гитхабе отвечал, что управления громкостью не было. Так что рулиться она не может даже теоретически. И потом он уведомил, что добавил эту функцию. Т.е. надо брать с гитхаба то, что он сделал после своего сообщения. Либо надо править ручками файлы в русской версии - знать бы что и куда он вписал. Наверняка это пара строк в паре файлов.

(Должна говорить если настроено)
может, и должно, но ни разу у меня не говорило. Посылка текста %TM тоже не приводит к произношению, хотя время - "бежит".

Настройки -> DFPlayer -> Время=вариант 2. -> Сохранить.
Строкой - да, выводит, и то - только на включенной лампе, во время проигрывания эфекта. На выключенной ничего. А время - не произносит. Строка - бежит синим цветом.

События -> Добавить -> Вывести время. Дата/время события (начало, с какого времени начать). Повтор=60. Останов через, мин=0. В любом состоянии=по желанию. Озвучивать время=вкл. Повтор, дни недели=выбрать все. -> Добавить.
а вот это - сработало! Даже на выключенной - сперва бегущая зелёная строка, потом - произношение. Сделал каждую минуту. Работает. Говорит. Но по 6-кратному тапу не говорит, да и не показывает, если лампа выключена.

Нужно собрать и залить прошивку в дебаг версии
это для меня тёмный лес.
Я только билдером делаю)
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
может, и должно, но ни разу у меня не говорило. Посылка текста %TM тоже не приводит к произношению, хотя время - "бежит".
У меня говорит на включенной лампе. На выключенной говорить не будет, так задумал автор, чтоб ночью лампа кого нибудь заикой не оставила.
команда /user/*********/2ABF25D12345/embui/set/MP3_VOL и payload {value} не срабатывает.
По HTTP отрабатывает нормально. HTTP и MQTT команды одни и те же, по крайней мере так задумывалось автором. Подымать локального москита мне сейчас в лом, чтоб проверить.
это для меня тёмный лес.
Я только билдером делаю)
В билдере для esp8266 - пункт 7D - собрать и прошить с логом (DEBUG).
Для esp32 - пункт 9D - собрать и прошить с логом (DEBUG).
После прошивки в интерфейсе в "Ещё" включить чикрыжик "Отладка".
В билдере - пункт D - Вывод отладочной информации (ЛОГ) - запустит сериал порт, где увидите отладочную информацию. ЕСП должна быть подключена по usb к компьютеру.
может сразу в шапку такие советы? Заберёте тему? Я постараюсь фак на гитхабе в маркдаун тоже оформить.
Не, я тут еще не много посижу, а потом опять на пол года пропаду (пока не факт), да и не программист я от слова совсем, просто была у меня эта лампа, разобрал (матрица ушла в другую сторону). Если проект будет развивается, подумываю прикупить и матрицу. Так что лучше ВЫ.)))
 

Svetlaya

✩✩✩✩✩✩✩
12 Апр 2021
12
3
Всем привет)
Вопрос, вывод текста по MQTT работает? Если да, киньте путь пожалуйста (name/embui/set/bright)