Обновлены вся базовая среда и окружение
- Arduino Core 3.1x
- ESP IDF 5.3
- new toolchain and GCC
- EmbUI 4.x with new API
- ArduinoJson 7.x
именованные пресеты для модулей
- пресеты получили имена, выбор пресета осуществляется через выпадающий список с именами
- пресеты можно переименовывать
- настройки текущего пресета можно клонировать в другой пресет
Полностью переписан код работы со списом эффектов, индекс используемых эффектов и пр.
Полностью переработана схема контролов для эффектов.
- Используется отдельный манифест файл определяющий схему контролов для каждого эффекта.
- Объект контрола основан на использовании скалированных значений где размерность "ручек" контрола может отличаться от диапазона выдаваемых значений для объекта эффекта. Подобная схема уже используется для яркости.
- Объекты определяющие вид контролов для вебморды отвязан от кода контроллера и задаётся в джейсон файле подгружаемых данных
- Возможно создание контролов в виде выпадающих списков, радио и пр.
Переписаны некторые эффекты, переработан код контролов, адаптированы под масштаб панелей
Пресеты настроек для эффектов, каждый эффект может иметь множество конфигураций
удален код генерации разных джейсонов для разных списов
Удалены некрасивые/неподдерживаемый/лишние эффекты со старыми типами контролов
Удален код работы микрофона, нет ресурсов на поддержку старого кода
- update icons for buttons in UI objects
- bump platform package to 3.0.4
- fix: tm display does not display brightness change value when controlled via encoder Closes #127
- omnicron - multiple fixes
- Use Arduino Core 2.x for Huidu boards build
- remove WLED app discovery
- планировщик OmniCron
- Switch to Arduino Core 3.0.2 (Tasmota's)
- lightweight Arduino_GFX lib
- WebUI improvements
- Widgets are replaced with unified "Module" classes
- Add profile and configs for Huidu HD‐WF2 board
- add release builder scritps for HD-WF2 boards
- change some default values for I2S
- fix garbage on profiles changes
- fix crashes on clock profiles switching
- some improvements for "Magma" effect
- some fixes in clock widget
- часы: дополнительные параметры наложения
- в профиле часов теперь сохраняется номер эффекта оптимальный для профиля
- в профиле часов доступен выбор алгоритма наложения
- алгоритм наложения "Цветовая маска"
- исправлены ошибки в реализации прозрачности
- weather city code is handled as integer instead of string
- добавлены шрифты для часов разных размеров
- настраиваемые размеры области под слои с часами/датой/строкой
- размеры слоя для часов/строки задаются из UI,
- можно задать область больше/меньше текста
- дополнительно задается смещение курсора внутри области для формирования отступа/полей при необходимости для шрифтов с завитками/выступами
- Профили конфигураций для виджетов
- объект виджета может использовать несколько профилей конфигурации
- по-умолчанию доступно 10 ячеек для сохранения конфигураций
- переключение профиля из WebUI
- подгрузка последнего сохраненного профиля при старте
- Модифицированны эффекты "Огонь 2021", "Огонь 2012", ось У перевернута в соответсвии с ориентацией печати шрифтами
- Effect Magma - invert Y axis
- invert Y axis to match with GFX lib
- make leapers bounce random a bit
- Огонь 2012 передлека
- эффект доведен состояния максимально приближенного к оригиналу от Mark Kriegsman
- убрана излишняя "магия", ползунки регулируют вероятность искр и степень их затухания
- bump to Tasmota core 2.0.18
- fix NTP servers setup under EmbUI
- fix some bugs in widgets
- Виджет бегущей строки мог завершиться с ошибкой при деактивации
- последующий интервал обновления погоды мог неверно устанавливаться при запуске виджета
- Переход на облегченное ардуино ядро от Tasmota
- значительно сокращен размер образа прошивки
- use hacked HTTPClient lib that does not need mbedTLS and related code
- Форматирование даты макросами std::strftime
- Реализован стек слоёв для наложения на холст с использованием альфа-каналов
- Часы/дата переделаны с использованием прозрачности в слоях
- Реализована бегущая строка в слое для отображения погоды через сервис OpenWeather
- Пайплайны для автосборки релизов и публикации бинарников на ГитХаб статик
- Пайплайн-оповещение о релизах в Телеграмм
- правки в кукушке
- правки ссылок на странице управления
- Код адаптирован под ArduinoJson 7
- fix: эффекты, у которых был отключен флаг "доступности для демо", всё равно выбирались в демо режиме
- реорганизованы настроки "другие"
- Добавлен отдельный переключатель под "случайные параметры" в демо режиме
- оптимизирована отрисовка страницы доп настроек
- Функция "рассвет"/"закат"
- "закат" - плавное затухание лампы/панели с привязкой к будильнику
- "рассвет" - к будильнику привязывается структура запуска медленного повышения яркости
- rename 3 digit effect numbers to 2 digit
- fix crash when loading widget's configs
- fix demo time save/restore
- fix displaying MP3 volume on TM1637 display
- Remove LinkedList dependency
- minor cleanup, readme update, links, etc...
- Factory firmware builds
- on-demandfactory images builder CI pipeline
- post_buildfactory.py based on Tasmota's builder will create full factory images
- OTA images will also be collected and uploaded to artifacts
- Microphone
- force ADC resolution to 10 bit
- move microphone gpio configuration to WebUI
- block all mike operation if mike pin is undefined
- PCNT HW accelerated Encoder библиотека энкодера заменена на ESP32Encoder с поддержкой аппаратного квадратурного декодра на PCNT движке esp32 обработка энкодера полностью переписана и интегрированна с шиной сообщений в связке с "кнопкой" параметры энкодера настраиваются в живом режиме, поддерживаются 1х, 2х, 4х энкодеры переработата схема переключения эффектов с затуханием, работа фейдера отслеживается через шину событий оптимизированна схема переключения яркости при смене эффектов доработан экран тм для отображения громкости звука плеера и номера переключаемого эффекта WebUI settings for Encoder
- Implement button lock checkbox
- Most of the lamp's configuration variables moved to NVS
- avoid useless config rewrites
- Tabulated LOGs
- Widgets manager that will handle creating/destructing widgets on-demand
- Alarm clock
Four alarms by default are availabe
Each alarm could one of those types
- one time
- daily
- workday
- weekend Melody could be set per alarm
- Cockoo/Talking clock
- hour/half/quater notifications
- selectable tunes for each notification interval
- silent hours for Talking clock
- simplify fading, rework options saving
- fader will be engaged only when panel's brightness is > FADE_LOWBRTFRACT
- optimize lamp's flags save/restore to avoid useless rewrites on start
- Fix effect controls
- Fix and simplify control selections
- Removed dublicated speedFactor variables from effects controls
- flatten mike flag options
- workaround race conditions in TaskScheduler
- Demo mode rework
- simplify demo switching/saving, remove old enums for lamp normal/unnormal modes, etc...
- rework timer control
- avoid extra config rewrites on on power on
- Effects
- EffectPuzzles - wrong row size calculation #70
- EffectPuzzles add locking for resize
- add locking for EffectCube2d
- testris clock fix am/pm letters fall
- fix TetrisClock crash in 12h mode
- Oscillator run in demo mode when mike is disabled
- Clock widget
- flickerless refresh using segmented area updates
- other fonts, 3x5 font
- chop off leading zero on small font
- DFPlayer adapter
- fix various problems with start/stop tracks
- Other fixes
- LEDDisplay fix crash when starting with blank configs
- removed that Control 7 hack for enabling/disabling mike per effect
- remove obsolete DS18B20 code
- fix wrong value being published for power switch
- remove "sort" from effects configuration
- implement run-time configuration for address leds RGB color order option for WS2812, Closes #54
- update windows batch installer
- add font Awesome icons to UI buttons
- reworked LOG macros, updated macro will allow to set severity level and component tag
- DFPlayer adapter
- use forked DFMiniMp3 lib
- keep cfg in json file
- add effect track loop function
- Button - reimplement button control
- use new ESPAsyncButton library for button handling
- implement event-based button<>lamp communication
- implement UI configuration for button, gpio, logic level, etc...
- implement UI configuration for button events, i.e. mapping actions to button events
- implement UI configuration for button timings
- Effects
- removed rudiment "individual brightness" from effect configs
- EffectFlags add control to randomly switch flags
- fix TetrisClock orientation
- исправлен эффект "Узоры" на широких экранах
- fix fireworks running on large screens. Closes #47
- TM1637 rework
- tm's options are kept in a display.json file
- modified 1637 driver to handle appended messages
- TMDisplay class now handles events from a message bus
- show IP on WiFi connect
- show power On/Off
- show Brightness change
- tm display track brightness control from button events
- Lamp class refactoring
- replace EFFSWITCH enum with enum class effswitch_t
- rename Lamp::effects member to Lamp::effwrkr
- remove long obsolete sync_parameters()
- rename overloaded Lamp::switcheffect to private Lamp::_switcheffect
- add IPC to EmbUI.feeders event publisher
- Implement ESP32 event loop bus for exchangind control messages between lamp's componets
- control matrix MOSFET via event bus
- power on/off events via event loop bus
- brightness control events
- effect switch events
- remove obsolete code
- RTC module related libs and code
- DS temp sensor related
- E131 related code
- remove MP3PLAYER define
- remove obsolete ESP_USE_BUTTON define and related code
- убрана кнопка "калибровка микрофона"
- remove button actions from interfaces.cpp
- remove old tm methood calls from encoder and rtc
- alarm
- events
- gauge
- some webui related code
- code related to pending/current effect switching from EffectWorker
- Other
- восстанавливать статус активности микрофона после перезагрузки. Closes #19
- removed build_time define MIC_EFFECTS
- Update EmbUI resources
- Update Builder scripts
- refactoring MQTT/HTTP API
- make API for MQTT/HTTP compatible with WebSocket data messages format.
- Integrate message exchange between APIs.
- Removed obsolete code, i.e. sync_parameters(), http callback actions etc...
- refactoring code related to EmbUI API changes
- deprecate old-style weak functions, replaced with assignable action handlers
- sting literals refactoring to match EmbUI api change
- major refactoring for interface function names, const literals, etc...
- avoid reboot on led stripe reconfig, when saving matrix config if gpio has not changed then avoid useless reboot
- external devices
- removed TM1637_CLOCK define from config files, tm1637 suport is built-in by default, module is enabled if it's pins are defined through webui config
- WebUI
- implement WebUI configuration page for HUB75 parameters setup
- add tiled configuration setup for ws2812 matrixes
- run-time switch between ws2812 and HUB75 panel output
- hide obsolete functionality "Text", "Events"
- removed "Кол-во файлов в папке MP3" setting from UI
- HUB75 panels output
- implement HUB75 backend engine for HUB75 panels via HUB75-I2S-DMA lib
- hub75 configuration via API
- add NO_CIE1931 option for HUB75 I2S lib
- LedFB libarary
- implement LEDDisplay class output device access is now hidden behind LEDDisplay class, which provides methods to access canvas/overlay as memory-backed buffers. Output device specific implementation and overlay mixing is of no dependency on other components.
- OverlayEngine class that manages canvas buffer binding to end device and overlay operations such as allocation, blending, back-buffering
- introduce 'persistence' flag for effect indicating that it uses canvas buffer as pixel data storage and it should persist on ovelay operations (using back-buffer for this)
- add support for LedTiles transformations.
- Led matrixes or stripes of same topology could be combined into tiles
- same kind of topology transformations supported for tiles as for Led stripe
- reworkied "Drawing" feature using OverlayEngine, simplified packet data structures for pixel data
- segregate effect calculation into sepparate Taks
- a Task is created on-demand to run effect calculations and render result via OverlayEngine
- Effects fixes
- Noise3dMap::fillNoise was using wrong x,y mapping
- refactoring for EffectRadialFire, make it dimension agnostic
- removed old "Clock Effect"
- EffectPacific removed static vars, fixed color application
- EffectSinusoid3 clear buffer on load
- EffectBBalls limit num of balls to panel width
- 3DNoise effect running on non-square panels
- EffectComet runnning on non sq pane
- EffectRingsLock - fix crashing when running on panel, some internal restructuring
- EffectNoise crash on non rectangular canvas
- EffectMaze was crashing on non-rect canvas
- EffectBBalls changing number of balls could crash some times
- refine EffectSmokeballs
- максимальное число огней оганиченно ширина/4
- огни бегают по всей ширине широкоформатной матрицы
- добавлен контрол высоты огней
- мелкие оптимизации
- EffectLiquidLamp fix sporadic crashes on filter change
- platformio.ini - update libs definitions, set SemVers for known external libs
- removed lamp configurations editor
- adjust UI related code to match EmbUI BAPI changes
- removed 8266 legacy - F() macro, FPSTR macro, PROGMEM
- fader changes
- adjust lower fader brightness with FADE_LOWBRTFRACT parameter,
- fixed brightness for fast fading
- use run-time tunable for save/restore on/off/demo state on power-up, Closes #24
- fix fire2018 dependence on 'brightness' variable, Closes #28
- reworked brightness control, add luma curves lib
- removed Global/Individual brightness for effects, using only Global brightness from now on
- ignore first "special" control for brightness in the code
- introduce selectable luma curve correction for brightness, applies globally, could be overriden per each effect config
- adjusted API/actions to work with global brightness only
- brightness could be scaled to any range, i.e. 0%-100%, or 1-20 (default)
- includes alignment
- tm1637 fix for blinking dots
- add thread safety WA for effect switching via '<<','>>' UI buttons
- fix race condition in EffectShadows
- DFPlayer - fix crash on start with undefined pins
- LAMP power ON/OFF consistency
- EffectWorker will reset active effect on switch-on
- LAMP object will force-wipe the matrix when shutting OFF
- when led fader is done
- when switch-off without fader
- when LAMP::frameShow() has been called but lamp is no state for drawing anything (it fixes issues with leftover artifacts when not using fader)
- when LAMP::effectsTick() ended up in a no rerun state for effectsTimer scheduler
- fix potential out-of-bound access crash in GradientPaletteList::[] operator
- implement EffectWorker::switchEffect
- regression when switching effects without fader
- controls settings were not saved on switch
- sometimes lamp crashed on switch
- removed EffectCalc::pre_init()
- replaced several similar methods for delayed effect switching with a single EffectWorker::switchEffect()
- all in a run-time matrix configuration
- настройка вывода подключения матрицы из WebUI
- настройка размеров матрицы из WebUI
- настройка ориентации/топологии матрицы из WebUI
- LedFB - implement run-time topology transformation
- other fixes
- fixed crash when accessin non-existing speedfactor control on empty controls list
- fixed wrong loading of controls for non-fading effect switch
- fix potential issue with dirty sleds buffer
- fix argument reodreding Noise3dMap::lxy()
- rework drawing feature
- adopted drawing functionality for my framework (js and mcu code)
- drastically simplified backend side code, removed strings deserialization, parsing and processing
- removed extra actions for drawing, using one callback for all data
- adjusted front-end code to do most string conversion and serialize formatted data for backend
- implement additional 404 handler for WLED that does not break Captive Portal detection
- bye bye 8266!
last release branch with esp8266 support
- disable WLED announce for 8266 (it crashes in sys context if adding MDNS announce for wled), won't fix
- annouce manifest for WLED mobile app
- removed most of _remote_action::RA* calls based on variadics and pointers, it's UB in C++ reimplemented remote_action features with templated functions and EmbUI callback injection, making data/events flow in proper way reusing registered actions for WebUI
- rework AUX pin control actions, made it run-time ping configurable
- fix LOG macro warnings
- removed ace_editor from FS
- remove code related to WHITE_LAMP_MODE
- fix tm display dots blink
- исправлена сборка с TM1637 display
- для энкодера упрощены вызовы из обработчика прерываний, длинные операции вынесены в loop()
- fix issue with incorrect brightness on effect save
- fix FIre2018 - last column is always off
- fix in EffectMaze
- EffectPuzzles random fix
- fixed an issue buffer switch if effect tries to clear canvas on initialization
- EffectBBalls - aligh balls
- fix boolean controls
- исправлены проблемы сборки под обновленный фреймворк есп32 и платформу есп32 v6.1.7
- введен класс кадрового CRGB буфера абстрагирующий топологию и тип устройства вывода
- буфер допускает привязку/отвязку от FastLED, копирование, атомарный обмен и общие операции над RGB массивом
- методы обращения к буферу и транляции под топологию матрицы из EffectMath упразднены в пользу работы через LedFB
- буфера лампы под слои текста/рисовалки переведены на использование экземпляров LedFB, часть операций копирования заменена атомарной заменой
- убраны флаги зеркалирования из объекта лампы, топология определяеся конфигурацией буфера
- изменения в коде эффектов
- множество эффектов переработанно с использованием структур сущностей и стандартных контейнеров
- оптимизация использования памяти для эффектов
- для части эффектов убраны излишние буфера и промежуточное копирование
- эффекты с переменным числом объектов, вместе с изменением числа сущностей растет/уменьшается их контейнер вместо использования фиксированных массивов
- промежуточные двумерные массивы для эффектов унифицированы в абстрактный шаблон Vector2D
- переработаны эффекты на основе Noise3D Map
- Noise3D Map выделен в отдельный класс с собственным буфером
- унифицирован метод регенерации шума
- переработан класс Boid и зависимые от него эффекты, убраны зависимость от статических макросов WIDTH/HEIGHT, добавлен контейнер для объектов стаи
- все эффекты переведены на работу через фреймбуфер
- убраны зависимости от макросов WIDTH/HEIGHT
- убраны зависимости от статических констант/макросов производных WIDTH/HEIGHT
- убраны все прямые обращения к глобальному экземпляру класса FastLED
- весь код кроме объекта LedFB избавлен от зависимости на статические макросы WIDTH/HEIGHT и их производные
- добавлена http/mqtt команда для регулировки яркости лампы в процентах 0-100
- добавлена http/mqtt команда для регулировки громкости мп3 плеера
- добавлен класс Effcfg для управления конфигурацией эффектов, упразднены операции с создание тяжелых экземпляров класса EffectWorker при копировании конфигураций эффектов, работе затухания и пр.
- раскрыто системное меню по-умолчанию, упразднена опция сборки 'SHOWSYSCONFIG'
- при сборке с плеером настройки DFPlayer'а всегда показываются в WebUI, независимо от того подключен ли плеер
- значики микрофона и нумерация эффектов в списках включена по-умолчанию, убрана опция, поозволяющая отключать эти символы
- реализована буферизованная запись при генерации кеш-файлов и индекса на ФС
- значительное ускорение процедур генерации кеш-файлов и индекса на ФС
- упраздены кривые схемы и разнобой с медленной/быстрой/отложенной генерацией файлов списков эффектов, используется один унифицированный генератор
- переработана схема подрузки конфигурации и переключения эффектов, устранены дублирующие вызовы, оптимизированна работа с файлами
- реализовано корректное кеширование списков эффектов на стороне браузера, устранены излишние подгрузки в случае если списки не изменялись
- переработан класс реализующий плавное изменение яркости
- оптимизирована mqtt публикация, в случае если нет подключения с серверу, попытки публикации отменяются
- оптимизированы классы GradientPaletteList, GradientPalette
- удалена поддержка протокола ArduinoOTA, успользуется обновление через http
- влит код из репозитория andy040670 примерно от 2021 года, устранены ошибки сборки
- переработаны списки контролов UIControl
- указатели заменены на smartpointers, реализованы конструкторы копирования, глубокие копии списков, устранение утечек памяти, ошибки работы с памятью, висячие указатели
- к репозиторию настроена CI сборка
- переработаны скрипты установки/сборки для windows (спасибо andy040670)
- добавлены переменные для путей к репозиториям и зависимостям
- убрана зависимость от внешней утилиты wget.exe
- реструктуризация кода, файлов, сторонних бибилиотек
- некоторые сторонние библиотеки убраны из репозитория и заменены внешними зависимостями
- переименованы констатны TCONST_00XX, CMD_* в человекочитаемый вид
- переименованы множество имен переменных, классов, макросов в соответсвии с общепринятым стилем
- переработаны заголовочные файлы, перенесены определения и декларации в соответсвии с логической принадлежностью файлов, код методов перенесен в соответствующие cpp файлы
- переработаны инклюды заголовочных файлов в соответсвии с минимально необходимыми зависимостями
- из репозитория удалены посторонние бинарные файлы
- исправлены множество ошибкок в коде работы с эффектами - вылеты за границы массивов, деление на ноль, утечки и излишний расход памяти, оптимизация циклов и т.п.
- EffectSplashBals
- EffectOsc
- EffectLeapers
- EffectPicasso
- EffectMagma
- EffectNexus
- EffectLiquidLamp
- EffectPicasso
- EffectSmokeballs
- EffectBBalls
- EffectMaze
- EffectWrain
- Puzzle
- EffectSmokeballs
- EffectPolarL
- EffectPacific
- EffectStarShips
- EffectFire2021
- EffectCube2d
- EffectPopcorn
- EffectPuzzles
- EffectRadialFire
- EffectWcolor
- new Effect - Tetris Clock