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

Комментарии

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
RTOS активно используется на пример в этом проекте , к сожалению он не является открытым, но автор охотно общается в телеге и отвечает на вопросы.
Каких-то достоверных данных о том как собрать ардуино ядро под ртос сдк и, тем более, запустить там фастлед я не нашел вообще.
На сколько я понимаю, как и на есп32.
Ну, да ладно.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
На сколько я понимаю, как и на есп32.
не, вы путаете ртос, ардуино и идф сдк.
Текущее ардуино ядро под есп32 строится на основе IDF-SDK и использует его HAL. Cборка выполняется вот этим билдером. Кроме того ардуино ядро можно собрать как компонент IDF, т.е. воспользовать не готовой сборкой либ, а собрать под свой проект индивидуально на основе того же ESP-IDF. В платформио это поддерживается.

Текущее ардуинно ядро под 8266 строится на ноносе и использует его хал. СОбрать ардуино ядро на ртос сдк не получится.
Можно писать код под чистый IDF SDK на 8266, и, похоже, тот проект что вы указали так и построен. Ярдуино ядро для этого не нужно.

Я писал библиотеки под чистый IDF-SDK для esp32 без использования АПИ ардуино ядра, там всё несколько сложнее, но апи намного богаче.
Лампа и EmbUI под чистый IDF rtos не заработает, т.к. там слишком много кода завязано на ардуино апи. Переписать и избавиться от ардуино апи целиком можно, но на это нужны ресурсы и особого смысла я в этом не вижу. Тут люди в платформио испытывают проблемы со сборкой, а под IDF и подавно её толком никто не соберет потом.
 
  • Лойс +1
Реакции: shax

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
День "Д", час "Ч" наступил - в фит ветку тиснул код, лишенный поддержки 8266. Гора с плеч )
Теперь используется обновленный фреймворк EmbUI так же без 8266, поэтому нужно обязательно перезалить ФС что бы обновить скрипты и шаблон. Попутно оптимизировал немного "рисовалку", хотя внешне это не заметно. Из новых плюшек - теперь в фреймворке есть captive-portal, т.е. если подключиться к лампе в режиме точки доступа, то сразу откроется её вебморда, как в гостевых WiFi сетях, без необходимости самому в браузере открывать 192.168.4.1
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Не знаю ,как должен работать ,гостевой режим. У меня не получилось с первого раза подключить клиент ,так и оставался гостевой режим. Потом после назначения пинов и перезагрузках ,клиент подключился. Просто хочеться понятной работы, если подключаешься пускай перезагружаеться. Я настройки на компьютере делаю ,поэтому сразу лезу в подключение клиента, на телефоне мне не удобно.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, WiFi-клиент контроллера подключается как и раньше - вводите имя сети/пароль и он подключается если сеть доступна.
Просто точка доступа сразу не гаснет даже если подключение было успешным, происходит это спустя небольшой промежуток времени. Меня бесит когда сразу с ошибкой все отваливается.
Надо будет добавить какое-то визуальное подтверждение что контроллер подключился к сети и получил ip-адрес. Лень, но как-нибудь позже сделаю.
 
  • Лойс +1
Реакции: Andron-65 и dina

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Здравствуйте, есть ли возможность сделать "Часы" одной строкой, как на фото. И было бы классно, если в каждом эффекте был выключатель "поверх эффекта" для часов.
 

Вложения

vortigont

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

  • cначала идем в "Настройки" - "конфигурация gpio" - "Matrix", выставляем пин подключения матрицы. Контроллер перезагрузится через 5 секунд. ЖДЕМ! перезагрузки, а не бежим тыкать все подряд. Переподключаемся к вебморде. Перезагрузка это ограничение либы FastLED, которое без ковыряния самой либы не обойти.
  • затем включаем лампу на какой-нибудь удобный эффект где видно ориентацию (я проверял на "шторме")
  • идем в "Настройки" - "топология ленты", и там выставляем свои размеры и ориентацию ленты, нажимаем "сохранить"

опции в "топология ленты" применяются сразу на лету, изменения будут тут же отображены на матрице. Для "ламповой" матрицы обязательно ставим флажёк "змейка", остальные либо ставим с умом если знаете как ориентирована матрица, либо перебираем по очереди, пока не попадем на нужный вариант.

Смотрите, тестируйте, может какие мелкие проблемы вылезут.

1687581181255.png
 
  • Лойс +1
Реакции: dina и andy040670

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Не получаеться ,точки нету.
 

Вложения

  • 44.5 KB Просмотры: 6

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
@vortigont,
Без очистки памяти прошилось и подключилось со старым IP адресом. ФС обновлял. Я считаю это нормально.
При настройке матрицы устанавливал 15*15(такая матрица), а прописалось 31*31. Но матрица показывает нормально.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Подключение клиента ,тот ещё квест.С полным стиранием шил. Питание передергивал,только после этого клиент подключился минут 10 колдовал. По матрице получаеться единственно верная ориентация ,когда и эффект и бегущяя строка ,правильно отображаеться. У кого лампа сделана ,придеться матрицу переставлять ,если не совпадет. А так да ,по взрослому получаеться лампа. Надо че то с подключением делать, обратной связи нет.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
15*15(такая матрица), а прописалось 31*31
это как так?

У кого лампа сделана ,придеться матрицу переставлять ,если не совпадет
не надо ничего переставлять, ориентация и отражение выставляется в настройках - проверить ориентацию еще можно через "рисование", потыкать точки по углам и убедиться что это верные углы. Если текст при этом получается зерканый, то это походу проблема в выводе текста. Я туда еще не смотрел, код там вырви глаз просто, надо тоже переписывать. В общем на текст не ориентируйтесь.
Там где-то я делал настроечный эффект, надо его выводить, наверное при настройке топологии, может позже добавлю.

Надо че то с подключением делать, обратной связи нет.
с подключением опишите толком что у вас не работает, я так ничего и не понял.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,По эффектам нормальная ориентация, все понятно, текст да зеркалит. Только в одном положении эффект и текст отрабатывает правильно (не чекрыжики ,а матрицу крутить надо). По подключению ,ввел параметры сети ,сохранил ,точка осталась висеть ,клиент не появился ,ждал.Дальше начал прописывать пины ,с точки, после перезагрузки пинов ,точка пропала ,клиент не появился ,ждал.Не дождался ,начал передергивать питание. Клиент появился, но как то очень медленно соображал,ждал. Еще раз передернул питание ,после этого адекватно заработал. Если ни че не напутал ,как то так. По прописалось 31 ,все что меньше 16 ,настройка добавляет 16 ,14+16=30 15+16=31
 
Изменено:

dina

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

@vortigont,В след раз ,когда шить буду ,все с дебагом буду шить.Про 31 я выше написал.
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Перепрошился с полным стиранием, точка доступа и клиент настроил стандартно(по времени). Заметил, что при выключении "Плавное переключение эффектов",не сохраняется настройка яркости в эффекте. При включении всё нормально.
Фото с настройками матрицы(после полного стирания перед прошивкой)

Да, ещё заметил: при выключенном "Плавное переключение эффектов", иногда контроллер уходит в перезагрузку при переключении эффектов.
 

Вложения

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
все что меньше 16 ,настройка добавляет 16 ,14+16=30 15+16=31
всё нашел я этот баг с отображением, поправил.

что при выключении "Плавное переключение эффектов",не сохраняется настройка яркости в эффекте
с яркостью там бардак накопился, исправлять не буду, в планах переработать эту часть целиком.

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

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
с яркостью там бардак накопился, исправлять не буду, в планах переработать эту часть целиком.
Не только яркость оказывается, а все настройки которые меняешь.
если заметите на каком эффекте это происходит
Лавовая лампа, Часы, Космогонщик, Северное сияние, Меташары- причём, то перезагружается, то нет.
или получится снять креш трейс будет полезнее
Как это сделать?

Да, всё таки сохранение состояния лампы при перезагрузке-выключения питания(сети), может нужно сделать?

всё нашел я этот баг с отображением, поправил.
Спасибо,всё нормально.
 

Вложения

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Не только яркость оказывается, а все настройки
Так в режиме демо это нормально, зачем их сохранят-то если эффект сейчас поменяется, зазря флешку упиливать.


Как это сделать
Почитайте на странице проекта - надо собрать версию dubug тогда в терминал монитора будет выводится лог.


сохранение состояния лампы при перезагрузке-выключения питания
Было, добавлю
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Так в режиме демо это нормально,
Здравствуйте, это не в режиме "Демо", просто настраиваю эффект и перехожу к другому, затем возвращаюсь, а там всё на "заводских настройках".
Когда включен плавный переход, то всё нормально. Пробовал подождать 30 сек., не помогло.
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Вчера настроил событие, на включение эффекта "огненная Лампа", выключил лампу(движком), утром она не сработала, и потерялось окно "События".
Включал, выключал, перезагружал- не помогает. Остальные окна работают.
 

Вложения

dina

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

@vortigont,Может Вы будете конкретно говорить,что тестировать с дебагом или без. А то нет системного подхода и Вам ,наверно тяжело прыгать и ошибки могут возникать. А попутно замеченое в исуе складывать ? Может я не прав. Сколько в процентах кдн кода в этой прошивке осталось ?
 
Изменено: