WiFi лампа-будильник. Обсуждение прошивки от vvip-68

WiFi лампа-будильник. Обсуждение прошивки от vvip-68
Всем добрый день. Собрал светодиодную матрицу на wemos d1r1 и на прошивке от vvip-68(за прошивку огромное ему спасибо). Матрица получилась размером 102 на 16 пикселей. Захотелось управлять гирляндой с телефона, чтобы wemos был подключён к домашнему роутеру. Плата подключается к WiFi но не получает данных о погоде и данных с сервера времени. Гирлянда зависает, и плата так и не может получить данные из интернета. Монитор порта выглядит вот так:1645769623394.png
Буду благодарен любой помощи в решении проблемы.
Заранее спасибо!
 
Изменено:

Комментарии

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Добрый вечер! В сборке прошивки для ESP8266 веб-интерфейс открывается и работает на iOS и android. В сборке прошивки для ESP32 веб-интерфейс на android-устройствах не открывается (пустая страница), на iOS выглядит вот так:
IMG_5403.pngIMG_5404.png
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
И в первом и во втором случае налицо явный признак "недогруженности" страницы...
Там в прошивке несколько файлов. три-четыре - основные, без которых страничка даже не нарисуется (первый случай) и остальные - без которых страничка будет выглядеть неправильно (второй случай) - это файл стилей css и файл шрифта - woff.

Странно что это в версии ESP32 происходит. Обычно на ESP8266 проблемы могут возникнуть из за малого количества свободной оперативной памяти на ней. При недостатке памяти Web-сервер не отправляет браузеру запрошенный файл, отдает ошибку. В ESP32 такого не наблюдалось у меня...

Что происходит если несколько раз "обновить" страницу?
По идее когда все 6 файлов браузер загружает - они остаются в кэше и браузер уже не лезет на устройство (webserver)...

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

PS
Ага, вот возможная причина - нет ли у вас при загрузке файлов в файловую систему ESP32 примерно такого сообщения

1681917439759.png

У ESP32 по умолчанию файловая система меньше чем у ESP32.
Что у вас в папке data находится?Там что-то очень большое лежит.
Например, если есть папка 16x16 с роликами для эффекта SD-карта - они занимают много места. Надо какие-то удалить.

Либо в варианте разметки файловой системы выбрать вариантNo OTA (2MB APP / 2MB SPIFFS), но тогда не будет возможности обновлять "по воздуху"

PS1
Я удалил из проекта "лишние" файлы из за которых не хватало места в файловой системе ESP32
Теперь файлы web-интерфейса для ESP32 должны загружаться нормально...
 
Изменено:

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
Мне тоже это показалось странным. Папка с веб-интерфейсом одна и та же, а на более продвинутой Esp32 результат хуже. Наверное, дело в используемых ESP32 библиотеках.
Обновление страницы ничего не меняет. При этом, контролер в сети и частично управляем через андроид-приложение по его ip-адресу.
Я тестировал через iPhone XS и 12, iPad 4, Huawey Nova 3 и Nova 8, Samsung Galaxy Tab S6 - везде такой результат.
А не может роутер избирательно блокировать трафик?
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@VadZher, смотрите выше. Дело в размере файловой системы.На ESP8266 ее 2 МБ, на ESP32 - 1.5Мб

Слишком много демо-файлов добавлено в проект. Нужно удалить часть роликов из папки 16x16
 
  • Лойс +1
Реакции: VadZher

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Спасибо Вам большое! Помогло удаление папки 16x16. Тем более, что для моей матрицы 39х30 она и не нужна!
Наверное, ещё можно было загрузить прошивку в режиме контролера: no OTA 2Mb App/2Mb SPIFFS?
 
  • Лойс +1
Реакции: vvip

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Сейчас прочитал. Не сразу отображаются изменения в уже прочитанных сообщениях.
Такого сообщения об ошибке у меня не появлялось. Кстати, на одном из андроид-устройств даже после указанных исправлений веб-интерфейс упорно не хотел отображаться. Помогла очистка кэша.
Спасибо Вам за помощь, поддержку и обновление прошивки!

@vvip,
После уменьшения масштаба отображения начальной страницы Web-интерфейса на моих устройствах он смотрится мелко. Конечно, можно увеличить картинку двумя пальцами, но первая версия смотрелась гораздо интереснее. Я вернулся к начальному масштабу веб-интерфейса, используя первую версию папки data\web на GitHub. Но что делать, если веб-интерфейс будет меняться? Может, предусмотреть ещё одну его версию (для желающих) помимо универсального варианта?
 
Изменено:

Константин 271

★★★✩✩✩✩
12 Июл 2020
950
105
Может, предусмотреть ещё одну его версию (для желающих) помимо универсального варианта?
может, в настройках на web странице просто галочку добавить? Типа "320 px" - Вкл/Выкл. Там же, где и матрицу настраиваем, и прочее.
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@Константин 271,
не получится. Все это прописывается в index.html который грузится (и управляет отрисовкой контента) еще до того, как загрузится все остальное, и в этом всем остальном менять уже что-либо поздно

В index.html:
HTML:
<meta name="viewport" content="width=device-width, initial-scale=0.75, minimum-scale=0.5, maximum-scale=2">
В предыдущей версии - был initial-scale=1, в "новой" - initial-scale=0.75

У кого не влазило - поэкспериментируйте с этим, скажите при каком значении initial-scale у вас страница начинает "влазить"?
Для этого просто распаковать index.html.gz в папке web, запакованный - удалить, а незапакованный - исправить и залить на контроллер (всю папку data). По расчетам получается что-то около 0.825

В браузере обязательно жестко обновить кэш -на компах это Ctrl-F5, в мобильниках видимо как-то удалить кэш браузера.
 
Изменено:

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Отлично! Каждый может подобрать коэффициент под своё устройство, либо пользоваться универсальным вариантом.
В мобильном для тестирования лучше использовать режим «инкогнито» или «частный доступ», он не использует кэш.
Обратил внимание, что в сборке для esp8266 в настройках эффекта при отключении часов не получается включить их обратно. Переключатель двигается, но часы на матрице больше не отображаются.
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@VadZher, принято. Посмотрю, исправлю, сообщу

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

Исправление 2 - убрана пауза (замирание эффектов) перед показом бегущей строки.

Исправление 3 - разрешена бегущая строка поверх эффекта "Часы".
Часы на время бегущей строки не показываются, чтобы не было наслоения"

Обновления требует И прошивка И загрузка файлов Web-интерфейса в файловую систему МК.
 
Изменено:
  • Лойс +1
Реакции: VadZher

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Есть пожелания по оптимизации настроек эффектов, прошу их рассмотреть:
1. Настройки эффекта "Лампа" не сохраняются при выключении панели. При выборе эффекта после отключения всегда загорается яркий белый свет, что не очень удобно.
2. В подэффекте "Диагональная радуга" слайдер "Вариант" не действует, лучше бы он растягивал радугу.
3. В эффектах "Радуга" и "Циклон" слайдер "Скорость" эффективно действует только в диапазоне значений 230-255, а не 0-255.
4. В эффектах "Звездопад", "Дождь", "Циклон" слайдер "Вариант" инвертирован, чем больше значение - тем меньше звёзд/капель/размер циклона.
5. В эффекте "Камин" слайдер "Скорость" отсутствует, а хотелось бы регулировать скорость эффекта.
6. В эффекте "Погода" слайдер "Скорость" на мой взгляд не актуален.
Для тестирования использовал прошивку "WiFiPanel v.1.14.2023.0422", версия для ESP8266.
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@VadZher,
1. С лампой - сложно. По сути, программное отключение устройства это "Включить лампу черного цвета". А плавная смена цветов - это "Включить лампу определенного цвета" и плавно менять цвет. При этом настройки именно как эффекта Лампа - теряются. Тут нужно как-то перерабатывать алгоритм. Пока не готов. Проще выкинуть лампу и плавную смену цветов вообще из списка эффектов... А вообще эффект "Лампа" изначально и задумывался как лампа белого цвета. Это он уже потом пытался дрейфовать во что-то другое...
2. В диагональной радуге - починил, должно теперь растягивать...
3. Со скоростью эффектов Радуга и Циклон - покрутил. Что-то изменилось, не знаю насколько это удовлетворит именно ваши запросы.
4. Эффект "Звездопад" - поменял, теперь чем больше значение Вариант, тем интенсивнее звезды. Для эффектов "Дождь" и "Циклон" настройка "Вариант" - вообще не про это. В эффекте "Дождь" количество "осадков" меняется во времени по синусоиде - от "мало осадков" до "шторм с грозой". Вот скорость этой смены регулируется ползунком "Вариант". Иными словами, за минуту эффекта интенсивность от мороси до шторма сменится один раз или например 4. В эффекте "Циклон" ползунок "Вариант" регулирует скорость затухания хвоста. При малом значении эффект успевает закрасить всю матрицу и только на противоходе "хвост" постепенно исчезает. При большом значении "Вариант" - скорость затухания большая и хвост гаснет практически сразу через несколько столбцов от головы отрисовки.
5.Эффект "Камин" зависит от временнЫх функций FastLed - то есть параметр отрисовки эффекта (генерация очередного кадра) там меняется по реальному времени. Попытка изменить "скорость" приведет к тому, что картинка, меняющаяся по реальному времени будет выводиться на матрицу рывками (с низким fps) - просто как слайды огня, а не как slowmo. Для регулируемого огня есть эффект "Огонь".
6. В эффекте "Погода" слайдер "Скорость" регулирует скорость мерцания картинки - то есть плавного "дыхания" - изменения яркости, чтобы немного "оживить" картинку, чтобы это не был статический слайд. Если вам не интересна такая вариация эффекта - просто поставьте скорость мерцания на самую медленную.

Измененный скетч сохранен в хранилище. Там есть изменения и в скетче и немного в веб-интерфейсе...
 
  • Лойс +1
Реакции: VadZher

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
Доброго времени суток! Подскажите пожалуйста, в какую mqtt-метрику отправлять команды управления?
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@Amarok,
 
  • Лойс +1
Реакции: Amarok

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
А как совсем остановить бегущую строку? Мне просто нужно выводить текущий процент выполненной работы. Процент изменился - Я отправил новый процент. Мне не нужно чтобы строка бегала.
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@Amarok, по всей видимости что-то изменить в прошивке под ваши конкретные хотелки... Бегучая строка - она на то и бегучая, что все время бегает...
 
  • Лойс +1
Реакции: Amarok

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@Amarok, в любом месте. Просто пишете свой код, который всё что вам нужно делает.
 

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
@vvip, Простите, и может быть вы подскажете как остановить Строчку?
 

vvip

★★★★✩✩✩
18 Дек 2018
506
230
Новое в прошивке

Версия WiFiPanel v.1.14.2023.0429 получила поддержку распределенных матриц.
Это частный случай работы нескольких устройств в группе синхронизации, при котором мастер-устройство формирует полный кадр изображения эффекта, но выводит только начальный сегмент. Остальные сегменты отправляются на устройства- приемники, каждое из которых выводит назначенные ему сегменты виртуального кадра. Максимальный размер полного кадра - 2040 диодов, но при необходимости может быть увеличен изменением скетча.

Где это может быть использовано? Например:
  • Новогодняя гирлянда на все три / четыре внешних окна квартиры (а то и на соседние квартиры в несколько этажей), которые работают как один большой экран. При этом нет необходимости тянуть провода физически - достаточно, чтобы все устройства - мастер и приемники были в одной локальной сети.
  • Оформление сцены на выступлении любительского коллектива - сегменты развешиваются в разных частях сцены, каждому сегменту назначаются части виртуального кадра, возможно пересекающиеся, разных размеров и так далее.
  • Источником изображения также могут быть эффекты прямой трансляции из программ типа Jinx!
 
  • Лойс +1
Реакции: VadZher

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@Amarok,но это же практически невозможно.
  • Строка начинается "за пределами экрана", если ее не прокручивать - она там так и останется.
  • Строка как правило длиннее чем ширина матрицы. Как она будет выводиться, если не прокручивается? Что будет выводиться, если не влазит?
И так далее и так далее. Вам придется практически переписать процедуру вывода бегущей строки.

Сама процедура вывода - runningText() -находится в файле runningText.ino
Горизонтальная позиция начала вывода строки - глобальная переменная offset
Скорость вывода (сдвиг на один пиксел) - каждый раз по срабатыванию таймера - textTimer.

Подробнее - не подскажу. Это нужно переписывать процедуру вывода бегущей строки - мне это не интересно.
Возможно вы договоритесь с кем-нибудь тут или в теме "Ищу разработчика".
Сформулируете ТЗ на задачу, договоритесь об оплате и вам сделают, если сами не потяните.
 

Сотнег

★★★★★★★
15 Янв 2020
4,404
1,509
@vvip,
можно зафиксировать индекс сдвига в строке, где рисуются буквы.
Чтобы он не реагировал на счётчик.
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
125
34
Омск
@vvip,
Спасибо, что учли предложения по оптимизации эффектов и разъяснили особенности их алгоритмов! Все изменения мне понравились и, уверен, что порадуют и других пользователей. Обратил внимание, что если физической кнопкой выключить матрицу при отображении эффекта "Лампа", то не получается включить её кнопкой обратно - нужно выбрать эффект в веб-интерфейсе. Видимо, это происходит из-за включения чёрной лампы, о чём Вы и говорили ранее.
Версия прошивки "WiFiPanel v.1.14.2023.0429" при компиляции для ESP8266 и ESP32 выдаёт ошибку 'masterX' was not declared in this scope. Хотя, эта группа переменных описана в файле a_def_soft.h. Видимо, компилятор обращается к ним раньше, чем они определены в скетче.
Попробовал перенести эту группу переменных в начало файла a_main.h, прошивка компилируется без ошибок.
Нашёл причину ошибки компиляции: у меня в файле настроек пользователя a_def_devc.h было отключено использование протокола E1.31, в результате чего компилятор не использовал часть скетча с описанием переменных для распределённых матриц.
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
506
230
@VadZher, это ошибка. При отключенном E131 эти переменные вообще не должны фигурировать в остальной части скетча. Он все равно должен собираться. Где-то не доглядел. Исправлю.

@Сотнег, можно. Но это все равно требует переписывания скетча и не снимает ряд вопросов.
  • что делать если строка не вмещается на матрицу по ширине? Показывать часть строки? Зачем?
  • строка, даже если и вмещается - может быть разной ширины - если хотим по центру матрицы - нужно не фиксировать offset а рассчитывать его, чтобы центрировать текст
  • конец отображения строки и возврат к эффекту происходит, когда счетчик offset достигает значения, когда строка скрывается с матрицы - вся показана. Если его зафиксировать - нужно писать что-то, что будет завершать показ.
Ну и, наверняка, еще что-то. Мы же толком даже не знаем зачем это все нужно. Никаких подробностей и какого-нибудь мало-мальски сформулированного ТЗ. Может проще написать вообще отдельный эффект и включать его, а бегущую строку не трогать.

@VadZher, исправил.
 
Изменено:
  • Лойс +1
Реакции: VadZher