Моя версия прошивки для "Огненной лампы"
Прошивка была написана для себя с целью реализовать недостающий функционал. Как разработчик ПО на C++ я решил воспользоваться знакомыми и удобными инструментами для написания прошивки, в итоге полностью переписал с нуля на C++. Напряг на работе коллегу фронтендера "написать сайт".
Реализовано около 50 эффектов. Эффекты в основном украдены из других прошивок с сохранением авторства в комментариях или в тексте коммита.
Основные отличия:
Поддерживаются платы:
Никакие библиотеки скачивать и копировать не нужно, все само скачается и установится при сборке.
Настройка прошивки.
src/MyMatrix.cpp - можно сменить пин подключения ленты для своей платы. Из-за особенностей сборки библиотеки FastLED нет возможности вынести этот параметр в конфиг без использования кодогенерации при сборке.
src/EffectsManager.cpp - в самом конце можно закомментировать ненужные эффекты, освободив память и повысив стабильность работы.
data/effects.json - хранятся стандартные параметры эффектов.
после изменения проверяйте правильность json на всякий случай в каком-нибудь сервисе в интернете
matrix - настройки матрицы.
Затем скопировать артефакты сборки из папки gzipped в папку data проекта
В репозитории настроен Travis CI, поэтому можно воспользоваться простым способом и скачать уже собранные артефакты со страницы Github Releases. Нужно скачать файл data.zip и распаковать содержимое в папку data.
На всякий случай команды для сборки прошивки и файловой системы в командной строке:
Где после -e идет название цели для сборки. Поддерживаются следующие цели:
Разная полезная информация:
В веб интерфейсе есть возможность заливать OTA обновления, поддерживается загрузка прошивки в bin, файловой системы в bin или файла settings.json.
Изменения автоматически сохраняются в SPIFFS. Можно получить текущие настройки перейдя по адресу лампы /settings.json либо /effects.json.
По адресу /effectJson отдаются настройки текущего эффекта.
Через MQTT можно задавать отдельные параметры для ткущего эффекта. Для этого в топик homeassistant/light/devlamp/set (где devlamp это значение поля name из mqtt конфига) нужно передать строку json вида:
В прошивке есть небольшие наработки по добавлению эффектов "спектрометра". Есть поддержка входа с микрофона или линейного входа, но эффекты с его поддержкой не дописаны, есть только один эффект "Визуального эквалайзера"
Пишите вопросы по доработке и сборке прошивки тут или в телеграм @icoderus. Во втором сообщении скришшоты.
GitHub - CODeRUS/GyverLampCpp: GyverLamp https://github.com/AlexGyver/GyverLamp fork
GyverLamp https://github.com/AlexGyver/GyverLamp fork - CODeRUS/GyverLampCpp
github.com
Прошивка была написана для себя с целью реализовать недостающий функционал. Как разработчик ПО на C++ я решил воспользоваться знакомыми и удобными инструментами для написания прошивки, в итоге полностью переписал с нуля на C++. Напряг на работе коллегу фронтендера "написать сайт".
Реализовано около 50 эффектов. Эффекты в основном украдены из других прошивок с сохранением авторства в комментариях или в тексте коммита.
Основные отличия:
- Web интерфейс лампы на реакте, фронтенд хранится в SPIFFS. Не требует установки приложений.
- Web интерфейс подключения к wifi на реакте.
- Может подключаться к WPA-E корпоративным точкам доступа.
- MQTT автоматическая интеграция в Home Assistant.
- Поддержка DMX / Art-Net протокола для управления матрицей по сети с использованием специального ПО.
- Нет поддержки мобильных приложений
- Нет эффекта рассвета, будильника
Поддерживаются платы:
- ESP8266
- ESP32
- Дополнительная поддержка для платы Sonoff Basic с возможностью управления встроенной кнопкой
Никакие библиотеки скачивать и копировать не нужно, все само скачается и установится при сборке.
Настройка прошивки.
src/MyMatrix.cpp - можно сменить пин подключения ленты для своей платы. Из-за особенностей сборки библиотеки FastLED нет возможности вынести этот параметр в конфиг без использования кодогенерации при сборке.
src/EffectsManager.cpp - в самом конце можно закомментировать ненужные эффекты, освободив память и повысив стабильность работы.
data/effects.json - хранятся стандартные параметры эффектов.
- i - идентификатор эффекта, должен соответствовать имени эффекта из файла src/EffectsManager.cpp
- n - имя эффекта, отображаемое на странице управления и в Home Assistant
- s - скорость эффекта
- l - масштаб эффекта
- b - яркость эффекта
после изменения проверяйте правильность json на всякий случай в каком-нибудь сервисе в интернете
matrix - настройки матрицы.
- type - соответствует сумме значений из библиотеки Framebuffer GFX: https://github.com/marcmerlin/Framebuffer_GFX/blob/master/Framebuffer_GFX.h#L43
надо сложить нужные значения. Например: NEO_MATRIX_ZIGZAG + NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + NEO_MATRIX_ROWS (или NEO_MATRIX_COLUMNS смотря куда идет лента). Получается 11 или 15 в зависимости от расположения строчек матрицы. На анимации включения можно посмотреть как расположены строки. Должно быть так: пиксели бегут из нижнего левого угла. Красный пиксель бежит по горизонтали вправо, зеленый по вертикали вверх. Значит параметры матрицы указаны верно. - rotation - значение поворота матрицы. От 0 до 3, каждое значение - поворот на угол +90 градусов.
- mdns - имя, по которому лампа будет доступна в сети под доменом .local (работает не во всех операционных системах и может зависеть от браузера)
- apName - имя первоначальной точки доступа, к которой нужно подключиться по wifi со смартфона или ноутбука для выбора точки доступа wifi
- ntpServer - сервер для обновления времени
- ntpOffset - смещение в секундах для часового пояса
- hostname - сетевое имя лампы, которое можно будет увидеть в настройках wifi роутера
- host - адрес сервера
- port - порт сервера
- username - имя пользователя, если требуется
- password - пароль, если требуется
- uniqueId - идентификатор entity light для Home Assistant
- name - идентификатор устройства для Home Assistant
- model - модель устройства для Home Assistant
- pin - номер GPIO пина, к которому подключена кнопка
- type - 0 для PullTypeHigh или 1 для PullTypeLow
- state - 0 для DefaultStateOpen и 1 для DefaultStateClose
- Собрать прошивку
- Собрать файловую систему
Затем скопировать артефакты сборки из папки gzipped в папку data проекта
В репозитории настроен Travis CI, поэтому можно воспользоваться простым способом и скачать уже собранные артефакты со страницы Github Releases. Нужно скачать файл data.zip и распаковать содержимое в папку data.
На всякий случай команды для сборки прошивки и файловой системы в командной строке:
pio run -e nodemcu
pio run --target buildfs -e nodemcu
pio run --target upload -e nodemcu
pio run --target uploadfs -e nodemcu
Где после -e идет название цели для сборки. Поддерживаются следующие цели:
- sonoff-r1 - обычная плата Sonoff Basic с 1М памяти
- sonoff-r1-4m - плата Sonoff Basic с 4М памяти
- nodemcu - платы на esp8266
- esp32dev - платы на esp32
Разная полезная информация:
В веб интерфейсе есть возможность заливать OTA обновления, поддерживается загрузка прошивки в bin, файловой системы в bin или файла settings.json.
Изменения автоматически сохраняются в SPIFFS. Можно получить текущие настройки перейдя по адресу лампы /settings.json либо /effects.json.
По адресу /effectJson отдаются настройки текущего эффекта.
Через MQTT можно задавать отдельные параметры для ткущего эффекта. Для этого в топик homeassistant/light/devlamp/set (где devlamp это значение поля name из mqtt конфига) нужно передать строку json вида:
{"s": 10, "b": 200}
. Названия полей json соответствуют полям из /effectJson, можно присылать любое количество полей для текущего эффекта за раз.В прошивке есть небольшие наработки по добавлению эффектов "спектрометра". Есть поддержка входа с микрофона или линейного входа, но эффекты с его поддержкой не дописаны, есть только один эффект "Визуального эквалайзера"
Пишите вопросы по доработке и сборке прошивки тут или в телеграм @icoderus. Во втором сообщении скришшоты.
Изменено: