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

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

Комментарии

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Zordog, ну возьми выше скрипт да попообуй. Посоздавай динамически массивы, занимающие память. добавь диагностический вывод остатков свободной памяти в монитор. Ты все увидишь сам.
 

Oleg Ivanov

✩✩✩✩✩✩✩
26 Окт 2023
12
0
Добрый день добрым людям!
А есть какая-то возможность запустить SD-карту на WemosD1mini или единственный вариант - использовать ESP32?
Два МК Wemos в режиме эмуляции SD-карты работают без проблем, а сегодня подключил SD-шилд и с подключенной картой работают только примеры из библиотеки SD.
Как только прописываю define USE_SD 1, define FS_AS_SD 0 МК перезагружается в цикле.
WiFiPanel v.1.14с.2024.0215
CRC: Контроллер: ESP8266 NodeMCU
Версия ядра: ESP8266 v3.1.2
FastLED: 3.6.0
Версия EEPROM: 0xE3
Host: 'WiFiPanel'
Имя : 'WiFiPanel'
Инициализация файловой системы...
Использовано 1736704 из 3121152 байт
-------------------------------------------
Выделение памяти для LEDS :
32000 - 31224 -> 776
FM: 31152 Max: 31152 Frag: 0
-------------------------------------------

Матрица: плоская 16x16
Адресация: по подключению
Угол: правый нижний
Направление: вверх
Тип: зигзаг
Вывод на ленту:
Линия 1 PIN=D2, START=0, COUNT=256, COLORS=GRB

Доступные возможности:
  • Язык интерфейса: RUS
  • Бегущая строка: шрифт 5x8
- Кнопка управления
+ Синхронизация времени с сервером NTP
  • Управление питанием матрицы
  • Управление питанием (линия будильника)
  • Управление питанием (дополнительная линия)
  • Получение информации о погоде
+ Управление через Web-канал
  • Групповая синхронизация по протоколу E1.31
  • Дополнительный индикатор TM1637
+ Эффекты Jinx! с SD-карты CS=D8, CLK=D5, MISO=D6, MOSI=D7
  • Поддержка MP3 Player
  • Поддержка OTA
+ Кэш текстов бегущей строки: 200 символов на строку

Инициализация SD-карты...
SD-карта подключена.


--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Exception (3):
epc1=0x4000bf64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4029a0f1 depc=0x00000000

ctx: cont
sp: 3ffffd50 end: 3fffffd0 offset: 0150
3ffffea0: 4029a0f1 3ffe9a3f 3ffffeec 40252cd5
3ffffeb0: 3fff2678 3ffe9a3f 00000000 402299ba
3ffffec0: 00000000 00000009 00000000 40254f04
3ffffed0: 00000000 00000000 00000000 4024d774
3ffffee0: 00000000 00000000 3fff262c 4025b41c
3ffffef0: 00000000 000003e8 0000000f 00000000
3fffff00: 00000000 00000000 00000000 00000000
3fffff10: 00000000 3fff2644 3fff464c 001b001f
3fffff20: 80000000 3fff42dc 000f000f 89000078
3fffff30: 3fff2678 3fff2678 3fff17c9 4022ec8f
3fffff40: 00000000 001a8000 00000000 00000100
3fffff50: 00000005 00000020 00000000 00363632
3fffff60: 00000000 feefeffe 00000000 feefeffe
3fffff70: 00000000 00000000 00303030 00000000
3fffff80: 00000100 00000000 00000001 00000004
3fffff90: 00000000 feefeffe feefeffe feefeffe
3fffffa0: feefeffe feefeffe feefeffe 3fff2888
3fffffb0: 3fffdad0 00000000 3fff285c 402563cc
3fffffc0: feefeffe feefeffe 3fffdab0 401010e9
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

ets Jan 8 2013,rst cause:2, boot mode:(3,6)
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Oleg Ivanov, нормально она работает на Wemos d1. Когда правильно подключена и пины соответствуют и без конфликтов с другими пинами. Были случае, что не видит карточку (при не правильном подключении, не подведенном питании или неправильно отформатированной карте или карте не того производителя), но вот чтобы перезагрузка была - не встречал...

А как ведет себя, если для эксперимента просто в исходной конфигурации от автора ничего не менять, просто включить SD-карту, а все остальные девайсы - отключены, только вывод на ленту?

А если попробовать эту же физическую сборку на версии 1.13?
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Oleg Ivanov,
чтобы проект собрался с данными настройками и не уходил в циклическую загрузку - поправьте в eeprom.ino вот эту строку, чтобы она выглядела как на картинке
1729761178504.png

Но я бы все равно рекомендовал для пользы дела уйти на 1.13, потому что 1.14 с этими исправлениями у меня собралась, показывает картинки, но с Web-интерфейсом - увы... Оно почему-то постоянно теряет связь. В прошлом году, вроде работало, в этом году - не пойму что поменялось.

Но может быть вам повезет и вы сможете с Web-UI нормально работать...
Я пока не разобрался в причинах... Если что - напишу позже...

И да - Яндекс.Погода по прежнему не сделана. Или выключайте ее совсем нафиг, или попробуйте с OpenWeatherMap...

UPD: По поводу постоянных отвалов Web-интерфейса...
Оказалось у меня стояла какая-то сторонняя библиотека AsyncWebServer...
Заменил ее на библиотеку из папки проекта - всё отвалы прекратились...
А я полгода мучался периодически возвращаясь к проекту и не в состоянии понять что происходит...

Если постоянно отваливается web-интерфейс - обратите внимание что за библа AsyncWebServer у вас стоит...
Впрочем... Я проект все равно убрал из общего доступа - слишком много в нем накопилось того, что внезапно перестало работать...
 
Изменено:
  • Лойс +1
Реакции: Oleg Ivanov

Oleg Ivanov

✩✩✩✩✩✩✩
26 Окт 2023
12
0
@vvip , докладываю!
1. Поправки в eeprom.ino все починили - SD-карта определяется, файлы читаются, просто супер и огромное спасибо!
2. Web-интерфейс с библиотекой AsyncWebServer из папки проекта в локальном режиме матрицы (МК) связь не терял и не теряет - все стабильно. С подключением к локалке - проверю отдельно.
3.Заметил некоторый баг: в Web-в настройках матрицы выбор GRB вешает вывод на ленту напрочь. Через пару-тройку минут начинает "проблескивать" первый светодиод в ленте и на этом практически все. В Мониторе порта МК все ОК - с клиентом идет обмен, эффекты якобы переключаются и т.д. Выбор любых других вариантов кроме GRB все приводит в норму.
4. Есть ощущение, что включение протокола E1.31 в локальном режиме притормаживает эффекты, но это отдельно посмотрю, когда группы организую.
@vvip , еще раз спасибо!
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Oleg Ivanov,
3. Это какой-то плавающий глюк, с которым я безуспешно борюсь набегами уже несколько лет :(
При определенных вариантах компиляции / изменении настроек эффекты перестают выводиться - мигает только первый светодиод.
Вот сегодня у себя в очередной раз - все работает, крутится. Но стоит только включить часы - мигающий первый светодиод.
Если в это время побежит строка или переключится на дату - все растормаживается. Лечится изменением каких-нибудь настроек или в проекте (что-то включить, что-то отключить) или настроек компиляции в меню "Инструменты" или добавлением случайного бессмысленного кода в скетч..

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

4. Не замечал особых торможений. Но тут совет - не нужно - не включай. А вообще - с точки зрения - на формирование пакета E131 и его отправку - тоже нужен какой-то ресурс. А вообще - теоретически - оно в локальном режиме и не должно бы вообще работать. Ему для работы локальная сеть нужна...

----

PS: вроде почти сделал, чтобы с получением погоды все ок было... На ESP32 - по HTTPS работает, на ESP8266 - HTTPS не работает. Погоду без переделок может только с OpenWeatherMap забирать (но как показывает практика - сервис не всегда отвечает). Еще есть WeatherBit.io - видимо его вместо Яндекса прикрутить... Хорошо у него код города с OpenWeatherMap совпадает...

Другие сервисы весь день смотрел - ничего путнего не нашел...

Если кто знает какие нормальные погодные сервисы - прошу сообщить.
Требования к ним такие:
  • чтобы отдавали погоду по http (не https !!!)
  • результат приходил в JSON
  • желательно, чтобы обращение по коду города (иначе все переписывать в UI нужно чтобы по широте/долготе настройки принимать - а не хочется
  • API запрос - в GET строке, желательно чтобы и ключ если требуется в ней же передавать, а не в заголовках запроса или вообще без ключа как ранее Яндекс
  • Ответ - чем короче тем лучше - иначе под большой ответ будут проблемы с выделением памяти
  • В ответе на запрос текущей погоды должно быть время рассвета/заката - иначе не будут работать режимы по рассвету/закату
  • Сервис был бесплатным и на бесплатном тарифе отдавал не менее 50 запросов в сутки (а лучше 100 или 200), и - помноженное на 30 дней - не менее 3000-5000 (а лучше 10000) запросов в месяц.

Ну или аналоги сервисов, почившего в бозе гейта https2http - ему можно было по http отправить запрос к работающему по https-серверу и получить ответ по http без всяких этих штучек с шифрованием.
 
Изменено:
  • Лойс +1
Реакции: Oleg Ivanov

Сотнег

★★★★★★★
15 Янв 2020
4,390
1,504
@vvip, скриптик-то, вроде, простой:
PHP:
<?
$url = $_SERVER['QUERY_STRING'];
$url_check1 = 'https://api.weather.yandex.ru/'; // этот домен разрешён

if (strncasecmp($url, $url_check1, strlen($url_check1)) == 0)
  {
     $ch = curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($ch, CURLOPT_HEADER, false);
     $html = curl_exec($ch);
     curl_close($ch);
     echo $html;
  }
  else echo 'nope';
?>
Если его на любой домен, поддерживающий запросы по http, закинуть,
тогда, по идее, можно по запросу получить содержимое с адреса после ? (после вопросительного знака):
http://МОЙ_САЙТ.ru/http2https.php?https://api.weather.yandex.ru/v2/...

А если положить на отдельном домене в виде файла index.php, тогда запрос будет формата:
http://МОЙ_САЙТ.ru?https://api.weather.yandex.ru/v2/...
 

Вложения

Изменено:
  • Лойс +1
Реакции: Zordog

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Сотнег, вот спасибо, просто огромное!!!
Спасибо @Zordog, который оперативно поднял шлюз на своем сервере и предоставил к нему доступ!

Часам с погодой - быть! Постараюсь доделать скрипт на этих выходных...
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
Обновил в репозитории на GitHub обе версии - 1.13 и 1.14 - поправлено получение погоды.

Для ESP32 - получение через HTTPS, для ESP8266 - через HTTP, с использованием скрипта, любезно предоставленного @Сотнег и сервера, на котором этот скрипт "крутится", любезно предоставленного @Zordog

Надеюсь, что ничего не сломал - изменения в основном затрагивали получение погоды.

В 1.14 - поправлено использование настроенного часового пояса - ранее несмотря на настройки часовой пояс брался тот, что прописан в скетче, а не тот, что сохранили в Web-интерфейсе.

В 1.13 - портирован с 1.14 эффект "Фейерверк", предоставленный @Zordog, немного оптимизирован вывод на TM1637 - должно меньше тормозить

В основном это всё. Наверняка есть какие-то баги, не замеченный мной. У меня нет возможности оттестировать всё досконально на всех вариантах микроконтроллеров и всех комбинациях подключенной периферии. Если что найдете - пишите. Будем думать. Будем исправлять. Если это всё еще кому-то кроме меня нужно...

PS: на системах с ESP8266 при получении погоды с Яндекс не рекомендуется устанавливать интервал обновления погоды чаще чем один раз в 60 минут. В крайнем случае - раз в 30 минут. Поскольку запросы на Яндекс будут идти с одного сервера (с одного IP) - во избежание блокировки сервера Яндексом за подозрительный спам-трафик...
 
Изменено:

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
42
8
Если это всё еще кому-то кроме меня нужно...
Конечно нужно! На мой взгляд самый толковый проект, не застрявший на "лампе" и не скатившийся в банальный информер! Да простят меня авторы смежных проектов. А frontend, так это лучшее, что я видел на esp.
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
503
225
Снова обновил 1.13 в репозитории
Исправлена ошибка - на длинных строках некорректно работали макросы {R} и {S} в бегущей строке
Спасибо бдительным пользователям...

На всякий случай - напоминаю про глюк, который я никак не могу найти, и который периодически портит жизнь.
Причем в обеих версиях - и 1.13 и 1.14

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

Умные люди говорят, что где-то некорректная работа с памятью, но моих знаний C++ не хватает чтобы найти причину и устранить.

Текущий способ устранения, который работает у меня - описан в посте #786 - изменить какую-нибудь настройку в программе (например - включить / выключить поддержку E131, даже если вы ее не используете). Или в настройках компиляции в меню "Инструменты" - включить/выключить проверку стека. Это как-то по другому компонует программу, перераспределяет код в сегментах.

После перекомпиляции и заливки - пройтись по всем эффектам, запустить бегущую строку для проверки. Мне помогает.

Если кто из знающих может ткнуть меня носом где я облажался - буду премного благодарен.
 
Изменено:

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
42
8

@vvip,
При моих скромных понятиях в esp, эта причина в обёртке ардуино иде поверх esp-idf.
Уже размышляю о переводе всего этого дела на нативную среду. Но это уже platfotmio и freertos.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Zordog, куча других проектов в сети, на Arduino-обертке. А глюк только у меня? Не, тут явно я где-то накосячил...
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
120
30
Омск
@vvip,
Добрый день! В прошивке 1.14.2024.2610 для ESP32 в эффектах «Поток» и «Полосы», независимо от настройки «Отображать часы», каждые 10 секунд сверху вниз «падает» текущее время, за ним температура, а потом дата. Не критично, но и не похоже, что так было задумано автором.
Также, в настройках wi-fi не доступна кнопка «применить», видимо, из-за использования в пароле символов #, % и пробела. При этом, контролер спокойно подключается к роутеру, если этот пароль ввести в прошивке в файле a_def_pass.h
Большое спасибо за отличныйIMG_2458.jpeg проект, его развитие и поддержку!
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@VadZher, чтобы часы и прочая лабудень не падали - надо в настройках эффекта ползунок (самый нижний) - "Интервал", что ли - сдвинуть в крайнее правое положение. Пароль - да, пробел считается недопустимым символом. % и # - допустимые
 
  • Лойс +1
Реакции: VadZher

Сотнег

★★★★★★★
15 Янв 2020
4,390
1,504
@vvip,
согласно спецификациям вайфая,
SSID и пароль могут содержать любые символы Unicode.
Длина SSID от 1 до 32 октетов (байтов).
Типа: "pattern": "[^*]{1,32}"
У пароля длина от 8 до 63 байтов.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Сотнег,знаю. Никогда не было нужно такого. Поправлю...
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
120
30
Омск
@vvip,
Ну, это только ради перфекционизма. Я свой пробел в пароле ввёл на этапе прошивки контролера. Думаю, и остальные могут сделать также.
Напомните, пожалуйста: как мне увеличить масштаб интерфейса на экране телефона? На приложенном ранее снимке экрана видно, что у меня интерфейс смотрится мелковато.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
А вот, поведаю я вам, други, историю. Кому-то она покажется забавной, кому-то занимательной, кому-то проходной (и так знаем - сам же в wiki писал) - тогда проходите мимо... Остальным - в копилку знаний, может когда и пригодится. Но с проектом этим история связана.

Есть у меня два устройства - часы с погодой. Удобно было перед выходом из дома посмотреть - не холодно ли. Может, шапку одевать пора, а не в пляжных шортах на улицу переться. Оба собраны на заре проекта - то есть в году этак 2019-2020. Тогда еще ядро 2.7.4 было и FastLED примерно 3.4-3.5... И Яндекс погоду показывал. И комплектуха покупалась примерно в то же время у китайцев на Али. Матрицы вот эти заводские 16x16

Но, Яндекс перестал работать, а OpenWeatherMap что-то подглючивал часто - вообще не отвечал. И перегружались часы, и погоду не показывали. В общем - беда-беда. А тут @vvip взял, да и починил погоду от Яндекса. И в репозиторий изменения закинул.

Решил я на радостях часики обновить. Тем более - с Web-интерфейсом - удобно же. Предварительно на стенде на столе все собрал, матрицы новые недавно купленные - всё работает. Чудо чудное! Заливаю прошивку на часы эти старые.... И что за fuck!!! - цифры расплываются, смещение по строкам/столбцам, первый диод на матрице сам по себе горит-переливается. Цвета не соответствуют - случайным образом вспыхивают, ореол вокруг точек - соседние светятся... В общем - хрень полная.

Я и версии FastLED менял, типы светодиодов от WS2811 до WS2813 ставил и все, что в промежутке. Ничего не помогает... Беда-беда, горе-горюшко...

Потом вспомнил, как одну проблемную гирлянду чинил - думаю - дай так попробую. Поставил я, значит FastLED 3.6.0,
пошел в папку с его исходниками - C:\Users\<user>\Documents\Arduino\libraries\FastLED\src\platforms\esp\8266
Нашел там файл, именуемый clockless_esp8266.h

А в файле где-то в самом начале строчечка
template <int DATA_PIN, int T1, int T2, int T3, EOrder RGB_ORDER = RGB, int XTRA0 = 0, bool FLIP = false, int WAIT_TIME = 85>

И стал я вот эту самую WAIT_TIME = 85 (в прежних версиях 50 было...) увеличивать.
После каждого увеличения - компилил, заливал, проверял.
Первая матрица пришла в чувство и стала без глюков работать на значении 150, вторая - аж на 350...
Побочных эффектов не проявилося (типа там WiFi нестабилен - нет, всё ок)...

В общем - завёл я часики...
Может кому пригодится. А может кто и сам всё это знал...
 
  • Лойс +1
Реакции: ALEX173RUS и Oleg Ivanov

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@vvip,
Напомните, пожалуйста: как мне увеличить масштаб интерфейса на экране телефона? На приложенном ранее снимке экрана видно, что у меня интерфейс смотрится мелковато.
Я у себя двойным щипком на экране увеличиваю. Типо ткнул - пальцы развел, оно укрупнилось. Но наверное от телефона, от версии ОС зависит... И, может быть - от браузера
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Сотнег, это ж сказка. Мулька. Но правда в ней есть. История, рассказанная от третьего лица.
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
120
30
Омск
@vvip,
В папке data в файле index.html.gz для себя изменил значение initial-scale с 0,825 на 1,2. Теперь интерфейс на весь экран сразу, после загрузки. Но, поскольку, как Вы и сказали, у всех экраны (да и системы) разные - 0,825 - оптимальное значение.
 
  • Лойс +1
Реакции: Zordog и vvip

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@VadZher,я, понятное дело, под себя и под свой телефон писал...
Но надо бы, видимо, куда-нибудь в FAQ закинуть...
 
  • Лойс +1
Реакции: Zordog и VadZher