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
Где, если не там, заложены команды...
Там надо порядок навести.
А яркость - как задавать больше 100? Алиса не знает бОльших цифр :) Думает, что 100 - это 100% и выше некуда.
Изменить шаг, в скриптах, в навыках или ещё где...
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
/embui/set/mp3volume - не срабатывает, а больше в списке команд я ничего не нашёл
mp3volume это не команда, это имя поля в вебуи.
Добавил патч в свой реп, попробуйте, команда мкутт|хттп MP3_VOL. Если сработает, то в сериал мониторе должно вывести
DFplayer: Set volume:... Если не сработает, то не повезло - накодил пальцем в небо, тут такой бардак в коде, у меня скулы сводит от этой паутины.
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
выкинул сторонние либы из репа, подрасчитил бардачек с инклудами и конфигами и добавил CI сборщик к репозиторию. Дабы больше не думать что там правильно собирается или не собирается.
Перебирать все комбинации по фичам смысла нет, сделал 3 типа сборки на каждую архитектуру с дефолтным конфигом - минималку, минималку с дебагом и полную. Как-то так.

1673692770379.png
 
  • Лойс +1
Реакции: Burai

dimazn1

✩✩✩✩✩✩✩
6 Окт 2020
16
5
@vortigont,
В вашей версии прошивки данный шаблон сохранился? Сейчас попробовал ваш билд и билд 2.7.0. В 2.7.0 кое как автодетект отработал, на вашей увы, не определяется автоматом.

Попробую через код добавить mqtt светильник, если конечно разберусь.
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
@dimazn1,
шаблон вот здесь, насколько он рабочий я не знаю, у меня нет HA. Это всё код из старой базы от КДНа.
Прошивку собирали с флагом EMBUI_USE_MQTT? Управление по мкутт вообще работает?
Думаю будет намного эффективнее если вы таки заглянете в монитор своего мкутт сервера и ХА и посмотрите что туда прилетает/не прилетает и что не так. Если укажете на пролему в шаблоне, могу попробовать исправить.
 

dimazn1

✩✩✩✩✩✩✩
6 Окт 2020
16
5
@vortigont,
Флаг не ставил, только заливал прошифку и файловую систему "как есть". Сам mqtt работает (как через удалённый брокер так и через локальный от HA, если посылать команды ручками). Но не работает именно автодетект. Т.е. устройство не появляется в списке автоматом как светильник.

По хорошему для авторегистрации устройства должна посылаться команда в специальный топик. Попробую посмотреть отличается ли сообщения между прошивками

@vortigont,
В общем, если интересно, то при попытке автодетекта обе прошивки шлют информацию о подключаемой лампе в одинаковый топик:
homeassistant/light/FireLamp-XXXXXX, но значения там разные (отличается в основном конец). Скорее всего шаблон правили, раз данные разнятся.
В файле "1" - данные которые приходят в топик автодетекта из украинской прошивки .
В файле "2" - из вашей.

Ну и фиг с ним. Я думаю если с HA разобратьтся, светильник можно и руками добавить
 

Вложения

  • 760 байт Просмотры: 9
  • 816 байт Просмотры: 8
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
@dimazn1,
ну что-то я не вижу принципиальных различий, отличается пара параметров. т.е. функционал какой-то может не работать, но на регистрацию это влиять не должно. Вообще ХА та еще вещь в себе, в документации приводится шаблон для "лампочек", но это шаблон на ямле для самого ХА. Переменные в нем указаны совсем другие, структуру джейсона для автодискавера я что-то в документации вообще не нашел. Либо в ХА что-то сильно поменяли либо существуют еще другие допустимые ключи типа тех что в шаблоне проекта, легаси это или нет - я не знаю. Если вы работали с ХА и знаете где почитать нормальное описание АПИ автодискавера - киньте, посмотрю на досуге. Особо сложного там ничего нет, но нужна документация.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
@vortigont, вашу прошивку не знаю, как тестить, на моей - не работает.
Я билдером пользуюсь.

Кстати, говорящие часы как попросить произнести время? Сенсором это возможно? Например, в соседней прошивке - шестикратным касанием, причём что на включенной, что на выключенной лампе.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Кстати, говорящие часы как попросить произнести время? Сенсором это возможно? Например, в соседней прошивке - шестикратным касанием, причём что на включенной, что на выключенной лампе.
Управление
С помощью кнопки:
  • В состоянии off:
    • 1 касание - включить на последнем эффекте
    • 2 касания - включить в демо-режиме
    • Длительное удержание - включение в режиме "белая лампа" при минимальной яркости (ночной свет)
    • касание, удержание - включение в режиме белой лампы при максимальной яркости
  • В состоянии on:
    • 1 касание - выключите лампу
    • 2 касания - следующий эффект
    • 3 касания - предварительный эффект
    • 4 касания + 4 касания - запуск сервиса OTA
    • 5 касаний - IP выход на лампу
    • 6 касаний - отображение текущего времени с бегущей строкой
    • Удержание - регулировка яркости:
    • 1 касание, удержание - регулировка эффекта "скорости"
    • 2 касания, удержание - регулировка "масштаба" эффекта
 
  • Лойс +1
Реакции: Константин 271

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
вот тут дублирование голосом можно настроить?
Должно по умолчанию.
Точно помню, если отправить %TM в "Вывод текста" то время проговаривает.
Если настроить вывод времени в "Событиях", тоже проговаривает.
С кнопкой никогда не пробовал, но по логике тоже должно.
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
повыкидывал ненужные ресурсы, остальное пережал в brotli, подвинул разделы немного, полная прошивка с ОТА теперь лезет на esp32 с 4Мб, еще остался небольшой резерв.
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
А что за логин/пароль просит страница Настройки/Настройки ESP, если разрешить системное меню?
Нажимаешь Отмена и всё равно доступ даёт, рулишь амперами и т.д. Но большое пустое поле в центре1674457651523.png
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
А что за логин/пароль просит страница Настройки/Настройки ESP, если разрешить системное меню?
Нажимаешь Отмена и всё равно доступ даёт, рулишь амперами и т.д. Но большое пустое поле в центре
Файловый менеджер.
Если мне память не изменяет, то логин: esp8266, пароль: esp8266
Для ЕСП32 логин: esp32, пароль: esp32.
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
  • Лойс +1
Реакции: Константин 271

Константин 271

★★★✩✩✩✩
12 Июл 2020
948
103
Спасибо, ясно.
Можно хоть кратенько - как вашу версию открыть, сконфигурировать и залить в 8266 и 32, где настройки менять?
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
@Константин 271,
да, собственно так же как и другие. А в чем затык у вас?

Клонируете репозиторий, конфиг файл настраиваете под себя. Собираете и заливаете командами
pio run -e esp8266 -t upload для 8266
pio run -e esp8266dev -t upload для 8266 с дебагом
pio run -e esp32 -t upload для есп32 с дебагом

для заливки фс команду меняете на -t uploadfs
 

vortigont

★★★★★★✩
24 Апр 2020
934
506
Saint-Petersburg, Russia
@Константин 271,
билдер и так запускает платформио для сборки, т.е. у вас все нужные компоненты уже установленны. Можно открыть консоль и собирать просто командами. Я бы поправил билдер по свой реп, там просто пути к репам исправить надо, но я не работаю под виндой и мне не начем тестировать.
Если готовы тестить сами, я поправлю.