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

Комментарии

dimazn1

✩✩✩✩✩✩✩
6 Окт 2020
16
5
@Константин 271,
Для включения и выключения используется топик XXXXX/embui/set/on (где XXXXX ID который присваивает прошивка контроллеру, посмотреть можно в настройках). Payload соответственно 1 для вкл и 0 для выкл
Для включения режима Демо используйте топик XXXXX/embui/set/demo
 
  • Лойс +1
Реакции: Константин 271

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@dimazn1, а где это расписано? Можно полностью? Хотя бы включение эфф. № и смена яркости

C++:
В поле Topic вводим команды например: 123456789/jee/set/ONflag
Это команда на включение\выключение лампы
Где 123456789 ID вашей лампы его можно посмотреть в web интерфейсе ID:

Payload вводим параметр true или false

в Client ID вводим тоже ID вашей лампы

параметр SSL нужно отключить.

так же есть команда: 123456789/jee/set/effList
С помощью нее можно включать номер эффекта

А активационной фразе: Включи {1} эффект
в Payload вводим параметр {1}

Поиск значений в фразе: произвольное целое число
ответ от Кузи: включила {1}ой эффект
- не актуально?
 
Изменено:

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@dimazn1, т.е. для включения эффекта 5 надо топик XXXXX/embui/set/EFFECT и в поле payload ввести {value} ? Самое главное - вкл/выкл и переключить эффект.
А по звуку - топик XXXXX/embui/set/MP3_SOUND и в поле payload ввести 1 для включения и 0 для выключения?

ps в общем, не подключается он к https://m7.wqtt.ru - вводил и так, и так m7.wqtt.ru - с теми же настройками всё контачит в другой прошивке, в этой - не хочет. Либо она не дружит с сервером wqtt.ru либо надо как-то включать этот mqtt в прошивке, но поиском по user_config.h вообще нет mqtt - по идее, после нажатия на Подключиться он должен сам соединяться. Но на сервере никаких сообщений не появляется.
 
Изменено:

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@andy040670, не подключается он к https://m7.wqtt.ru - вводил и так, и так m7.wqtt.ru - с теми же настройками всё контачит в другой прошивке, в этой - не хочет. Либо она не дружит с сервером wqtt.ru либо надо как-то включать этот mqtt в прошивке, но поиском по user_config.h вообще нет mqtt - по идее, после нажатия на Подключиться он должен сам соединяться. Но на сервере никаких сообщений не появляется. Что ещё попробовать?
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
не подключается он к https://m7.wqtt.ru
Я х.з. Сам использовал локальный брокер, всё подключалось и работало, возможно дело в SSL, точнее его поддержки в прошивке, но на это вам точнее ответит @vortigont.
P/s
clusterfly.ru - бесплатный брокер. Группа Телеграм https://t.me/clusterfly_ru
dealgate.ru - бесплатный брокер, поддержка управления через Алису и WhatsApp. Поддержка сценариев.
P/ss
wqtt.ru триальный сервис, убедитесь что подписка активна, и не превышает ли количество подключённых устройств.
 
Изменено:
  • Лойс +1
Реакции: Константин 271

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
Ладно, попробую ещё.

Кстати, не замечали интересный баг данной прошивки - не всегда матрица гаснет полностью, остаётся неяркое остаточное свечение, иногда. А иногда - полностью
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
mqtt здесь SSL не поддерживает, да. Нужен сервер без ссл.
Подрихтовал немного инклуды, вроде теперь собирается с различными приблудами - кнопки, дисплей, градусник и что там еще... ну и бардак тут...
 
  • Ахах! +1
Реакции: andy040670

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
Кстати, попробовал поймать скринами ошибки, бегущие при сборке под есп32 - может кто подскажет, как пофиксить?
 

Вложения

dimazn1

✩✩✩✩✩✩✩
6 Окт 2020
16
5
@Константин 271, я полюзуюсь этим брокером https://mqtt.by.
Но в настройках прошивки нужно топик для этого брокера прописать таким образом:
/user/login/xxxxxx (где login - логин с сайта брокера, xxxxx ID контроллера).
 

Вложения

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
либо надо как-то включать этот mqtt в прошивке
вообще, да, надо. Не знаю из какого репозитория вы что собираете, но надо собирать с флагом EMBUI_USE_MQTT

А ESP32 по идее должна поддерживать SSL, на уровне SDK RTOS.
крипто поддерживает. А релаизация ssl во сторонних мкутт либах это дело другое. Основная проблема тут в том что SSL это огромная помойка из сертификатов, списков отзыва, стаплинга и прочих костылей навернутых вокруг него. На конртроллерах тупо нет места чтобы хранить сотни публичных серитификатов и списки отзыва. Все что тут можно сделать это впихнуть конкретный отпечаток конкретного серта и проверять его. Поменялся сервер или серт - всем привет, перезаливай прошивку или придумывай как рассказать пользователю как ему залить новый отпечаток. Что лишает всю затею какого-либо смысла. Т.е. ссл имеет смысл в сценарии "моя прошивка - мой клауд/сервер".
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@dimazn1, спасибо. А яркостью и громкостью, получается, нельзя управлять? Поменьше/побольше, а не выкл/вкл
 
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
А яркостью и громкостью, получается, нельзя управлять? Поменьше/побольше, а не выкл/вкл
/embui/set/bright 127<-- значение.
Громкость на вскидку не вспомню.
P/s
Если у вас при сборке сыпет ошибками и собираете прошивку билдером, то вероятней всего вы собираете мастер из моего репозитория (он не рабочий) если вы конечно ранее делали это. Чтоб сменить репозиторий, нужно удалить Git и установить заново из install.bat - выполнив пункт 3-4 из скачанного и распакованного репозитория @vortigont'a.
Если вы используете VSC, там просто смените проект.
Если вы собираете под ЕСП32, используйте user_config.h_32, переименовав его в user_config.h, иначе тоже будут ошибки по пинам.
 
Изменено:
  • Лойс +1
Реакции: Константин 271

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
а где это взято?
Я думал, только отсюда годится:
C++:
/** набор служебных текстовых констант (HTTP/MQTT запросы)
 */

static const char CMD_TCONST_0000[] PROGMEM = "ON";   // Без параметров - возвращает 1/0 в зависимости вкл/выкл лампа, принимает параметр - 1/0 (вкл/выкл лампу)
static const char CMD_TCONST_0001[] PROGMEM = "OFF";  // Без параметров - возвращает 1/0 в зависимости выкл/вкл лампа, принимает параметр - 1/0 (выкл/вкл лампу)
static const char CMD_TCONST_0002[] PROGMEM = "G_BRIGHT"; // Без параметров - возвращает 1/0 в зависимости вкл/выкл глобальная яркость, принимает параметр - 1/0 (вкл/выкл глобальная яркость)
static const char CMD_TCONST_0003[] PROGMEM = "DEMO"; // Без параметров - возвращает 1/0 в зависимости вкл/выкл глобальная яркость, принимает параметр - 1/0 (вкл/выкл глобальная яркость)
static const char CMD_TCONST_0004[] PROGMEM = "PLAYER"; // Без параметров - возвращает 1/0 в зависимости вкл/выкл плеер, принимает параметр - 1/0 (вкл/выкл плеер)
static const char CMD_TCONST_0005[] PROGMEM = "MP3_SOUND";  // Без параметров - возвращает 1/0 в зависимости вкл/выкл проигрывание MP3, принимает параметр - 1/0 (вкл/выкл проигрывание MP3)
static const char CMD_TCONST_0006[] PROGMEM = "MP3_PREV";   // Без параметров - переключает трек на 1 назад, принимает числовой параметр, на сколько треков вернуть назад
static const char CMD_TCONST_0007[] PROGMEM = "MP3_NEXT";   // Без параметров - переключает трек на 1 назад, принимает числовой параметр, на сколько треков вернуть назад
static const char CMD_TCONST_0008[] PROGMEM = "MIC";        // Без параметров - возвращает 1/0 в зависимости вкл/выкл микрофон, принимает параметр - 1/0 (вкл/выкл микрофон)
static const char CMD_TCONST_0009[] PROGMEM = "EFFECT";     // Без параметров - возвращает номер текущего эффекта, принимает числовой параметр - включить заданный эффект
static const char CMD_TCONST_000A[] PROGMEM = "WARNING";    // Без параметров - мигает желтым 5 раз (1 раз в сек), принимает параметры /cmd?warning=[16777215,5000,500,1] - неблокирующий вывод мигалки поверх эффекта (выдача предупреждений), первое число - цвет, второе - полный период, третье - полупериод мигания, четвертое - тип уведомления (0 - цвет, 1-2 - цвет и счетчик, 3 - счетчик)
static const char CMD_TCONST_000B[] PROGMEM = "EFF_CONFIG"; // Без параметров - возвращает ВСЕ настройки текущего эффекта, с параметрами - не реализовано пока
static const char CMD_TCONST_000C[] PROGMEM = "CONTROL";    // Только с параметрами - принимает числовой параметр (номер контрола) и возвращает его текущие настройки, также принимает массив /cmd?control=[N,val] где - N - номер контрола, val - нужное значение
static const char CMD_TCONST_000D[] PROGMEM = "RGB"; // RGB = r,g,b т.е. к примеру для красного 255,0,0
// static const char CMD_TCONST_000E[] PROGMEM = "";
static const char CMD_TCONST_000F[] PROGMEM = "LIST";  // Без параметров - возвращает полный список эффектов (их номера)
static const char CMD_TCONST_0010[] PROGMEM = "SHOWLIST";  // Без параметров - возвращает список отображаемых эффектов (их номера)
static const char CMD_TCONST_0011[] PROGMEM = "DEMOLIST";   // Без параметров - возвращает список отображаемых эффектов (их номера) в DEMO режиме
static const char CMD_TCONST_0012[] PROGMEM = "EFF_NAME";   // Без параметров - возвращает из конфига имя текущего эффекта, принимает числовой параметр (номер эффекта) и возвращает имя этого эффекта
static const char CMD_TCONST_0013[] PROGMEM = "EFF_ONAME";  // Без параметров - возвращает из внутренней памяти имя текущего эффекта, принимает числовой параметр (номер эффекта) и возвращает имя этого эффекта
static const char CMD_TCONST_0014[] PROGMEM = "MOVE_NEXT";  // Без параметров - переключает на следующий эффект
static const char CMD_TCONST_0015[] PROGMEM = "MOVE_PREV";  // Без параметров - переключает на предыдущий эффект
static const char CMD_TCONST_0016[] PROGMEM = "MOVE_RND";   // Без параметров - переключает на рандомный эффект
static const char CMD_TCONST_0017[] PROGMEM = "REBOOT";     // Без параметров - перезагружает лампу
static const char CMD_TCONST_0018[] PROGMEM = "ALARM";      // Без параметров - возвращает 1/0 в зависимости включен ли сейчас будильник рассвет, принимает параметры "cmd?alarm={alarmP=N,alarmT=N,msg="Message",lV=N, afS=N, sT=N}", где alarmP длительность рассвета, alarmT - светить после рассвета, msg - сообщение, lV - уровень громкости будильника, afS - стандартная ли мелодия будильника, sT - мелодия будильника (от 0 до 7), все комманды указывать не обязательно
static const char CMD_TCONST_0019[] PROGMEM = "MATRIX";   // Возвращает размер матрицы в формате [X, Y]
static const char CMD_TCONST_001A[] PROGMEM = "MSG";      // Только с параметрами - выводит сообщение на лампу
static const char CMD_TCONST_001B[] PROGMEM = "DRAW";     // Только с параметрами =[цвет,X,Y] - закрашивает пиксель указанным цветом (если включено рисование)
static const char CMD_TCONST_001C[] PROGMEM = "INC_CONTROL";  // Только с параметрами =[N,val] - увеличивает\уменьшает контрол N на значение val
static const char CMD_TCONST_001D[] PROGMEM = "FILL_MATRIX";  // Только с параметрами - закрашивает матрицу указанным цветом (если включено рисование)
static const char CMD_TCONST_001E[] PROGMEM = "OTA";          // Запускает OTA режим
static const char CMD_TCONST_001F[] PROGMEM = "AUX_ON";       // Включает AUX пин
static const char CMD_TCONST_0020[] PROGMEM = "AUX_OFF";      // Выключает AUX пин
static const char CMD_TCONST_0021[] PROGMEM = "AUX_TOGGLE";   // Переключает AUX пин
static const char CMD_TCONST_0022[] PROGMEM = "DRAWING";      // Без параметров - возвращает 1/0 в зависимости вкл/выкл рисование, принимает параметр - 1/0 (вкл/выкл рисование)
Или можно и отсюда? ->
C++:
/** набор служебных текстовых констант (не для локализации)
 */
static const char TCONST_0000[] PROGMEM = "effects";
static const char TCONST_0001[] PROGMEM = "pTime";
static const char TCONST_0002[] PROGMEM = "pMem";
static const char TCONST_0003[] PROGMEM = "lamptext";
static const char TCONST_0004[] PROGMEM = "settings";
static const char TCONST_0005[] PROGMEM = "set_effect";
static const char TCONST_0006[] PROGMEM = "eff_sel";
static const char TCONST_0007[] PROGMEM = "eff_fav";
static const char TCONST_0008[] PROGMEM = "encoder";
static const char TCONST_0009[] PROGMEM = "copy";
static const char TCONST_000A[] PROGMEM = "del*";
static const char TCONST_000B[] PROGMEM = "makeidx";
static const char TCONST_000C[] PROGMEM = "set_enc";
static const char TCONST_000D[] PROGMEM = "black";
static const char TCONST_000E[] PROGMEM = "AUX";
static const char TCONST_000F[] PROGMEM = "effects_config";
static const char TCONST_0010[] PROGMEM = "effListConf";
static const char TCONST_0011[] PROGMEM = "effects_param";
static const char TCONST_0012[] PROGMEM = "bright";
static const char TCONST_0013[] PROGMEM = "speed";
static const char TCONST_0014[] PROGMEM = "scale";
static const char TCONST_0015[] PROGMEM = "dynCtrl";
static const char TCONST_0016[] PROGMEM = "effListMain";
static const char TCONST_0017[] PROGMEM = "nofade";
static const char TCONST_0018[] PROGMEM = "GlobBRI";
static const char TCONST_0019[] PROGMEM = "flags";
static const char TCONST_001A[] PROGMEM = "ONflag";
static const char TCONST_001B[] PROGMEM = "Demo";
static const char TCONST_001C[] PROGMEM = "GBR";
static const char TCONST_001D[] PROGMEM = "Events";
static const char TCONST_001E[] PROGMEM = "Mic";
static const char TCONST_001F[] PROGMEM = "Btn";
static const char TCONST_0020[] PROGMEM = "show_flags";
static const char TCONST_0021[] PROGMEM = "mode";
static const char TCONST_0022[] PROGMEM = "eff_prev";
static const char TCONST_0023[] PROGMEM = "eff_next";
static const char TCONST_0024[] PROGMEM = "#708090";
static const char TCONST_0025[] PROGMEM = "#5f9ea0";
static const char TCONST_0026[] PROGMEM = "DTimer";
static const char TCONST_0027[] PROGMEM = "OTA";
static const char TCONST_0028[] PROGMEM = "lamp_config";
static const char TCONST_0029[] PROGMEM = "edit_lamp_config";
static const char TCONST_002A[] PROGMEM = "fileName";
static const char TCONST_002B[] PROGMEM = "/backup/idx";
static const char TCONST_002C[] PROGMEM = "/backup/idx/";
static const char TCONST_002D[] PROGMEM = "load";
static const char TCONST_002E[] PROGMEM = "save";
static const char TCONST_002F[] PROGMEM = "ds18b20";
static const char TCONST_0030[] PROGMEM = "add_lamp_config";
static const char TCONST_0031[] PROGMEM = "/backup/glb/";
static const char TCONST_0032[] PROGMEM = "/backup/evn/";
static const char TCONST_0033[] PROGMEM = "/backup/btn/";
static const char TCONST_0034[] PROGMEM = "textsend";
static const char TCONST_0035[] PROGMEM = "msg";
static const char TCONST_0036[] PROGMEM = "txtColor";
static const char TCONST_0037[] PROGMEM = "settings_mic";
static const char TCONST_0038[] PROGMEM = "set_mic";
static const char TCONST_0039[] PROGMEM = "micScale";
static const char TCONST_003A[] PROGMEM = "micNoise";
static const char TCONST_003B[] PROGMEM = "micnRdcLvl";
static const char TCONST_003C[] PROGMEM = "mic_cal";
static const char TCONST_003D[] PROGMEM = "settings_wifi";
static const char TCONST_003E[] PROGMEM = "pTemp";
static const char TCONST_003F[] PROGMEM = "EncVG";
static const char TCONST_0040[] PROGMEM = "EncVGCol";
static const char TCONST_0041[] PROGMEM = "wcpass";
static const char TCONST_0042[] PROGMEM = "encTxtCol";
static const char TCONST_0043[] PROGMEM = "encTxtDel";
static const char TCONST_0044[] PROGMEM = "streaming";
static const char TCONST_0045[] PROGMEM = "set_mqtt";
static const char TCONST_0046[] PROGMEM = "isStreamOn";
static const char TCONST_0047[] PROGMEM = "stream_type";
static const char TCONST_0048[] PROGMEM = "isShowOff";
static const char TCONST_0049[] PROGMEM = "direct";
static const char TCONST_004A[] PROGMEM = "mapping";
static const char TCONST_004B[] PROGMEM = "set_other";
static const char TCONST_004C[] PROGMEM = "MIRR_H";
static const char TCONST_004D[] PROGMEM = "MIRR_V";
static const char TCONST_004E[] PROGMEM = "isFaderON";
static const char TCONST_004F[] PROGMEM = "DRand";
static const char TCONST_0050[] PROGMEM = "effSort";
static const char TCONST_0051[] PROGMEM = "txtSpeed";
static const char TCONST_0052[] PROGMEM = "txtOf";
static const char TCONST_0053[] PROGMEM = "spdcf";
static const char TCONST_0054[] PROGMEM = "ny_period";
static const char TCONST_0055[] PROGMEM = "ny_unix";
static const char TCONST_0056[] PROGMEM = "isPlayTime";
// static const char TCONST_0057[] PROGMEM = "TZSET";
// static const char TCONST_0058[] PROGMEM = "userntp";
// static const char TCONST_0059[] PROGMEM = "setdatetime";
// static const char TCONST_005A[] PROGMEM = "update";
static const char TCONST_005B[] PROGMEM = "blue";
static const char TCONST_005C[] PROGMEM = "show_event";
static const char TCONST_005D[] PROGMEM = "event_conf";
static const char TCONST_005E[] PROGMEM = "eventList";
static const char TCONST_005F[] PROGMEM = "edit";
static const char TCONST_0060[] PROGMEM = "enabled";
static const char TCONST_0061[] PROGMEM = "d1";
static const char TCONST_0062[] PROGMEM = "d2";
static const char TCONST_0063[] PROGMEM = "d3";
static const char TCONST_0064[] PROGMEM = "d4";
static const char TCONST_0065[] PROGMEM = "d5";
static const char TCONST_0066[] PROGMEM = "d6";
static const char TCONST_0067[] PROGMEM = "d7";
static const char TCONST_0068[] PROGMEM = "evList";
static const char TCONST_0069[] PROGMEM = "repeat";
static const char TCONST_006A[] PROGMEM = "stopat";
static const char TCONST_006B[] PROGMEM = "tmEvent";
static const char TCONST_006C[] PROGMEM = "set_event";
static const char TCONST_006D[] PROGMEM = "show_button";
static const char TCONST_006E[] PROGMEM = "butt_conf";
static const char TCONST_006F[] PROGMEM = "buttList";
static const char TCONST_0070[] PROGMEM = "on";
static const char TCONST_0071[] PROGMEM = "hold";
static const char TCONST_0072[] PROGMEM = "onetime";
static const char TCONST_0073[] PROGMEM = "clicks";
static const char TCONST_0074[] PROGMEM = "bactList";
static const char TCONST_0075[] PROGMEM = "set_butt";
static const char TCONST_0076[] PROGMEM = "show_butt";
static const char TCONST_0077[] PROGMEM = "Universe";
// static const char TCONST_0078[] PROGMEM = "show_wifi";
static const char TCONST_0079[] PROGMEM = "show_mic";
static const char TCONST_007A[] PROGMEM = "show_other";
//static const char TCONST_007B[] PROGMEM = "m_pref";
static const char TCONST_007C[] PROGMEM = "#ffffff";
static const char TCONST_007D[] PROGMEM = "1609459200";
static const char TCONST_007E[] PROGMEM = "main";
static const char TCONST_007F[] PROGMEM = "dynCtrl*";
static const char TCONST_0080[] PROGMEM = "STA";
static const char TCONST_0081[] PROGMEM = "/tmpqlist.tmp";
static const char TCONST_0082[] PROGMEM = "/fquicklist.json";
static const char TCONST_0083[] PROGMEM = "/fslowlist.json";
static const char TCONST_0084[] PROGMEM = "/slowlist.json";
static const char TCONST_0085[] PROGMEM = "/tmplist.tmp";
static const char TCONST_0086[] PROGMEM = "/quicklist.json";
// static const char TCONST_0087[] PROGMEM = "alarm";
// static const char TCONST_0088[] PROGMEM = "aux_on";
// static const char TCONST_0089[] PROGMEM = "aux_off";
// static const char TCONST_008A[] PROGMEM = "aux_toggle";
static const char TCONST_008B[] PROGMEM = "embui/pub/";
static const char TCONST_008C[] PROGMEM = "pin";
static const char TCONST_008D[] PROGMEM = "act";
static const char TCONST_008E[] PROGMEM = "isClearing";
static const char TCONST_008F[] PROGMEM = "pUptime";
static const char TCONST_0090[] PROGMEM = "numInList";
static const char TCONST_0091[] PROGMEM = "effHasMic";
static const char TCONST_0092[] PROGMEM = "effname";
static const char TCONST_0093[] PROGMEM = "set_opt_pass";
static const char TCONST_0094[] PROGMEM = "syslampFlags";
static const char TCONST_0095[] PROGMEM = "debug";
static const char TCONST_0096[] PROGMEM = "isShowSysMenu";
static const char TCONST_0097[] PROGMEM = "PINB"; // пин кнопки
static const char TCONST_0098[] PROGMEM = "CLmt"; // лимит тока
static const char TCONST_0099[] PROGMEM = "sysSettings";
static const char TCONST_009A[] PROGMEM = "ESPsysSettings";
static const char TCONST_009B[] PROGMEM = "PINMP3RX";
static const char TCONST_009C[] PROGMEM = "PINMP3TX";
static const char TCONST_009D[] PROGMEM = "isOnMP3";
static const char TCONST_009E[] PROGMEM = "showName";
static const char TCONST_009F[] PROGMEM = "show_mp3";
static const char TCONST_00A0[] PROGMEM = "set_mp3";
static const char TCONST_00A1[] PROGMEM = "settings_mp3";
static const char TCONST_00A2[] PROGMEM = "mp3volume";
static const char TCONST_00A3[] PROGMEM = "playTime";
static const char TCONST_00A4[] PROGMEM = "playName";
static const char TCONST_00A5[] PROGMEM = "playEffect";
static const char TCONST_00A6[] PROGMEM = "alarmSound";
static const char TCONST_00A7[] PROGMEM = "eqSetings";
static const char TCONST_00A8[] PROGMEM = "playMP3";
static const char TCONST_00A9[] PROGMEM = "mp3count";
static const char TCONST_00AA[] PROGMEM = "demo";
static const char TCONST_00AB[] PROGMEM = "soundfile";
static const char TCONST_00AC[] PROGMEM = "embui/get/";
static const char TCONST_00AD[] PROGMEM = "state";
static const char TCONST_00AE[] PROGMEM = "eff_config";
static const char TCONST_00AF[] PROGMEM = "limitAlarmVolume";
static const char TCONST_00B0[] PROGMEM = "delfromlist";
static const char TCONST_00B1[] PROGMEM = "delall";
static const char TCONST_00B2[] PROGMEM = "delCfg";
static const char TCONST_00B3[] PROGMEM = "orange";
static const char TCONST_00B4[] PROGMEM = "gbright";
static const char TCONST_00B5[] PROGMEM = "bparam";
static const char TCONST_00B6[] PROGMEM = "delete";
// static const char TCONST_00B7[] PROGMEM = "warning";
static const char TCONST_00B8[] PROGMEM = "opt_pass";
static const char TCONST_00B9[] PROGMEM = "text_config";
static const char TCONST_00BA[] PROGMEM = "edit_text_config";
static const char TCONST_00BB[] PROGMEM = "alarmP";
static const char TCONST_00BC[] PROGMEM = "alarmT";
static const char TCONST_00BD[] PROGMEM = "alarmPT";
// static const char TCONST_00BE[] PROGMEM = "mp3_prev";
// static const char TCONST_00BF[] PROGMEM = "mp3_next";
static const char TCONST_00C0[] PROGMEM = "mp3_p5";
static const char TCONST_00C1[] PROGMEM = "mp3_n5";
static const char TCONST_00C2[] PROGMEM = "pFS";
static const char TCONST_00C3[] PROGMEM = "txtBfade";
static const char TCONST_00C4[] PROGMEM = "drawbuff";
// static const char TCONST_00C5[] PROGMEM = "draw";
// static const char TCONST_00C6[] PROGMEM = "matrix";
// static const char TCONST_00C7[] PROGMEM = "fillmatrix";
static const char TCONST_00C8[] PROGMEM = "drawing";
static const char TCONST_00C9[] PROGMEM = "drawing_ctrl";
static const char TCONST_00CA[] PROGMEM = "drawing_ctrl*";
static const char TCONST_00CB[] PROGMEM = "blabel";
static const char TCONST_00CC[] PROGMEM = "height";
static const char TCONST_00CD[] PROGMEM = "width";
static const char TCONST_00CE[] PROGMEM = "pRSSI";
static const char TCONST_00CF[] PROGMEM = "fileName2";
static const char TCONST_00D0[] PROGMEM = "control";
static const char TCONST_00D1[] PROGMEM = "afS";
static const char TCONST_00D2[] PROGMEM = "lV";
static const char TCONST_00D3[] PROGMEM = "sT";
// static const char TCONST_00D4[] PROGMEM = "inccontrol";
static const char TCONST_00D5[] PROGMEM = "force";
// static const char TCONST_00D6[] PROGMEM = "tm1637";
static const char TCONST_00D7[] PROGMEM = "tmBright";
static const char TCONST_00D8[] PROGMEM = "tmBrightOn";
static const char TCONST_00D9[] PROGMEM = "tmBrightOff";
static const char TCONST_00DA[] PROGMEM = "tm24";
static const char TCONST_00DB[] PROGMEM = "tmZero";
static const char TCONST_00DC[] PROGMEM = "drawClear";
static const char TCONST_00DD[] PROGMEM = "Mode";
static const char TCONST_00DE[] PROGMEM = "Time";
static const char TCONST_00DF[] PROGMEM = "Memory";
static const char TCONST_00E0[] PROGMEM = "Uptime";
static const char TCONST_00E1[] PROGMEM = "RSSI";
static const char TCONST_00E2[] PROGMEM = "Ip";
static const char TCONST_00E3[] PROGMEM = "Mac";
static const char TCONST_00E4[] PROGMEM = "Host";
static const char TCONST_00E5[] PROGMEM = "Version";
static const char TCONST_00E6[] PROGMEM = "MQTTTopic";
static const char TCONST_00E7[] PROGMEM = "embui/";
static const char TCONST_00E8[] PROGMEM = "Normal";
static const char TCONST_00E9[] PROGMEM = "Alarm";
static const char TCONST_00EA[] PROGMEM = "Demo";
static const char TCONST_00EB[] PROGMEM = "RGB";
static const char TCONST_00EC[] PROGMEM = "White";
static const char TCONST_00ED[] PROGMEM = "Other";
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
а где это взято?
static const char TCONST_0012[] PROGMEM = "bright";
Я думал, только отсюда годится:
Это годится так:
C++:
static const char CMD_TCONST_0002[] PROGMEM = "G_BRIGHT"; // Без параметров - возвращает 1/0 в зависимости вкл/выкл глобальная яркость, принимает параметр - 1/0 (вкл/выкл глобальная яркость)
/embui/set/g_bright 127 <-- установит уровень глобальной яркости.
/embui/set/g_bright 0 <-- выключит глобальную яркость.
С командами здесь всегда была чехарда, комментарии не всегда совпадают с функционалом.
Я ранее на этом форуме собирал, выкладывал, обновлял список команд, но увы всё потёрли, а команды постоянно видоизменялись.
 
Изменено:
  • Лойс +1
Реакции: Константин 271

dimazn1

✩✩✩✩✩✩✩
6 Окт 2020
16
5
@Константин 271, полагаю нужно в пейлоад указывать не 0 или 1 а значение яркости. Глубоко не копался в этом. Мне достаточно было вкл/выкл.

А вот если кто знает как добавить управление лампой в home assistant, тому будет огромное спасибо
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@andy040670, с громкостью можно победить?
4297775214F7/embui/set/mp3volume20
- команда проходит, на серваке видно, выше строку привожу, но по факту громкость не меняется.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
А вот если кто знает как добавить управление лампой в home assistant, тому будет огромное спасибо
а как это обычно происходит? В коде есть шаблон для ха_автодискавери, при подключении к мкутт лапа его отправляет. Насколько это живой шаблон - не знаю. Подебажте у себя на мкутт сервере сообщения.
 

andy040670

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

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@vortigont, в общем, вчера руки были кривые, за ночь выровнялись, утром сделал и заработало 😄
могу вкл/выкл, но не могу громкость звука регулировать. Похоже, нет команды или она не та.


я с плеером через мктт не заморачивался
/embui/set/mp3volume - не срабатывает, а больше в списке команд я ничего не нашёл. Причём на серваке вижу, что команда проходит, цифра громкости - тоже, по факту - ноль реакции.
kostyamat если не проигнорит, то подскажет) Хоть в личку
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
@kostyamat если не проигнорит, то подскажет) Хоть в личку
Он не пользуется мктт и в эту часть кода никогда не лез, там заправлял КДН единолично, потом в прошивке скорее всего уже всё 10 раз поменялось, раньше по крайней мере так и было (одни динамические контролы чего стоят).
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
@andy040670, странно. Ведь effect_types.h это часть кода прошивки, откуда она и берёт команды на отработку. Где, если не там, заложены команды...
Спасибо и на том, как говорится.

А яркость - как задавать больше 100? Алиса не знает бОльших цифр :) Думает, что 100 - это 100% и выше некуда.