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

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

Комментарии

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Amarok, в обоих случаях - переписывать скетч программы под свои нужды.

Если, скажем, научить выводить картинки из weather.h не так уж и сложно (правда обычный размер шрифта 5x7, а картинок 16x16 - нужно выравнивание при выводе, чтобы по центру бегущей строки плюс поправка на ширину символа, чтобы следующий символ выводился не со смещением 5+1, а 16+1) - нужно научить скетч распознавать UTF-символ погоды и в соответствующем месте рисовать вместо буквы шрифта картинку из погоды (может проще самому картинки погоды в шрифте с подходящим размером нарисовать?). В общем - тоже придется потрахаться с переписыванием и отладкой.

Что касательно вывода текста в несколько строк (или иначе нескольких бегущих строк) - нужно полностью продумывать и переписывать скетч касательно бегущих строк, чтобы иметь такой функционал.

Делайте форк проекта, реализуйте, потом давайте ссылку - люди будут ваш форк с удовольствием использовать...
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
Просто оставлю это здесь. В копилку знаний.
Как получать погоду с Яндекса и с OpenWeatherMap по https в принципе ясно.
Код в приаттаченном файле.

Теперь плохая новость. Это работает, если свободной оперативной памяти на контроллере остается не менее 32-35 КБайт.
Если чуть меньше (около 20-25 КБайт) - скетч просто крашится и контроллер перезагружается.
Если существенно меньше - просто "соединение не установлено".
Видимо в процессе реализации шифрования, получения сертификата с сервера библиотеке (компоненту WiFiClientSecure) требуется выделять разово большой кусок памяти и её не хватает....

Печаль в том, что на ESP8266 в версиях и 1.13 (управление через android приложение) и 1.14 (управление через Web) свободной памяти остается 17-20 КБайт... То есть на ESP8266 погоду с яндекса по HTTPS получить не удастся. Увы. А по HTTP он ее перестал отдавать еще 28 июля...

На ESP32 свободной памяти остается существенно больше, вероятно на этом контроллере скетч обоих версий в части получения погоды работать будет.

То есть, по видимому, в дальнейшем придется отказаться от поддержки ESP8266 (Wemos d1 mini, NodeMCU) и оставить только ESP32.
Стоимость обоих контроллеров в настоящее время - практически одинакова. ESP32 - не существенно дороже...

Вот такие новости...

PS: Если кто имеет скетчи бесплатного получения погоды, работающие на малом объеме памяти с ресурсов помимо яндекса и OpenWeatherMap - делитесь скетчами и описанием как настроить, если есть какие-то нюансы... Вдруг удастся на ESP8266 запустить...
 

Вложения

Изменено:
  • Лойс +1
Реакции: Сотнег и AnCore

Dns7

✩✩✩✩✩✩✩
8 Сен 2024
13
0
Доброго времени. При компиляции возникает такая ошибка(на скрине). Хочу залить прошивку в ESP32, в Arduino IDE выбираю ESP32 Dev module.
Версия ядра 2.0.6, начинал с 1.0.6 но выдавал ошибку связанную с LittleFS. Версия FastLed 3.5.0.
 

Вложения

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Dns7,там в описании не исправлено. Нужна версия FastLED 3.6.0 или 3.7.0/ И версия ядра скорее всего 2.0.14
 

Dns7

✩✩✩✩✩✩✩
8 Сен 2024
13
0
@vvip, Не помогло к сожалению. Судя по ошибкам что то не так с библиотекой ESP mDNS которая вроде как идет в комплекте с ядром ESP.
 

Вложения

  • 159.6 KB Просмотры: 9

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Dns7,ну, если ты по прежнему хочешь по каким-то причинам использовать ядро 2.0.6 -придется разбираться самому. Тут я не в курсе.
 

Dns7

✩✩✩✩✩✩✩
8 Сен 2024
13
0
@vvip, Версия ядра, библиотек не имеет значение вообще. Цель просто реализовать проект. Версию 2.0.6 установил из за того что проект не компилировался выдавая ошибку(на скрине) на версии 1.0.6. Вы на 3ей странице порекомендовали установить ядро 2.0.6.
 

Вложения

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Dns7, а выше, описывая как устранить ошибку, я порекомендовал поставить FastLED 3.6.0 и ядро 2.0.14.
Но ты проигнорировал это предложение и продолжаешь трахаться, пытаясь скомпилировать под 2.0.6 Я ответил - что я не знаю как исправить в коде для того чтобы это собиралось под 2.0.6 и вообще возможно ли это.
Если бы тебе не было принципиально под каким ядром - ты бы просто поставил то что рекомендовано и собрал бы проект.
А с 2.0.6 я ничем помочь, увы, не могу. Жди может еще кто ответит.

И 1.14 - с Web-интерфейсом работает нестабильно бывает. Починить тоже пока не могу.
И Погоду с яндекса я пока не выложил починенную.
Так что может лучше посмотреть в сторону другого проекта
 

AnCore

★✩✩✩✩✩✩
27 Янв 2020
176
36
@Dns7, может быть имеет значение версия arduino ide (у меня 1.8.19, например).. поставьте рекомендованную версию ядра и fastLed
 

Вложения

Dns7

✩✩✩✩✩✩✩
8 Сен 2024
13
0
@vvip, Пардон😑 про версию ядра прошел мимо, прочитал половину и сразу пошел обновлять FastLED. Попробую с другим ядром. Внимательность мой "конек".
 

Dns7

✩✩✩✩✩✩✩
8 Сен 2024
13
0
@AnCore, Обязательно попробую с ядром, версия IDE у меня тоже 1.8.19.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@AnCore,не имеет значения. Я собирал и под 1.8.19 и под 2.3.2
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Сотнег, нет. Тут нет GyverHUB. Я не помню уже точно, но Vortigont помог сделать NTP средствами ядра (плюс часовые пояса, переход на летнее/зимнее, еще что-то...), а не на отдельной функции, плюс обнаружение по mDNS. Скорее всего из за этого была поднята версия ядра. Кстати пробовал поднять до более современных 3.x.x - не помню почему (кажется проблемы с зоопарком ESP32 какие-то были) , но не взлетело. Откатился на 2.0.14
 

ala-a-din

✩✩✩✩✩✩✩
13 Мар 2021
29
0
Прошил esp32 судя по монитору порта в Arduino IDE все работает, кроме погоды. Пишет превышен интевал запроса. Как исправить?
Пробовал с Яндекса и с Openweather.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@ala-a-din, ну с OpenWeatherMap должно работать, хотя и через раз - почему-то не всегда отвечает. А с Яндекса - переписывать получение с HTTP на HTTPS либо вообще выкидывать его и искать другие погодные сервисы. Ибо Яндекс с 28 июля 2024 года зажопился отдавать погоду по http.

Я искал, но на чем-то конкретном не остановился. Они либо платные, либо с ограничениями типа получать погоду не чаще чем раз в час или два, что по моему мнению как-то слишком редко... Так ничего и не выбрал в итоге для реализации.

И в отличие от Яндекса практически все сервисы требуют регистрации в личном кабинете и получение индивидуального ключа API.
Другой момент - у яндекса и OWM задается код города (на что и рассчитано приложение иWeb-интерфейс), а прочие сервисы требуют широту и долготу. Значит, их тоже нужно переделывать...

Такие пироги.

PS По OpenWeatherMap - тоже нужен ключ API и регистрация в личном кабинете. Если не менять дефолтный ключ что идет в прошивке - вполне возможно у сервиса есть какие-нибудь ограничения - вроде не более 10 запросов в час или 100 запросов в день или 1000 в месяц. И вот все, кто собрал устройство и не менял ключи API ломятся на сервер под одной учёткой. Быстро исчерпывают все вместе лимит и - кто не успел - тот опоздал. Успевшие получают погоду, остальные отлуп...

@Сотнег, предложенный тобой сервис http2https отлично работал. Примерно неделю. После чего сдох. По крайней мере у меня не отвечает больше... Увы...
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,390
1,504
@vvip,
может быть, @AlexGyver поднимет у себя на сайте такой редиректор?
Хотя бы с ограничениями на погодные сервера...
 

ala-a-din

✩✩✩✩✩✩✩
13 Мар 2021
29
0
либо с ограничениями типа получать погоду не чаще чем раз в час или два
Из курса метеорологии скажу так: погоду обновляют везде фактическую METAR которая не чаще чем в 30 минут, прогнозы TAF не чаще чем раз в 6 часов.
Поэтому если есть сервис который может давать погоду раз в 1 час - это будет хорошо.

По поводу api open weather - конечно же я подставил свой ключ, но то что он будет работать через раз вы правы, у меня один ключ работает в одном приложении на ТВ так там часто ошибки в последние месяцы.
 

Oleg Ivanov

✩✩✩✩✩✩✩
26 Окт 2023
12
0
UPD: Раскомментированные строки убрали проблему:
Из скетча GyverLamp 87in1 от gunner47:
// если у вас не обычная матрица, а сборка из ленты или гирлянда, и возникают непонятной природы артефакты в рисунке эффекта, попробуйте менять следующие три строчки
//#define FASTLED_ALLOW_INTERRUPTS      (1)                 // default: 1; // Use this to force FastLED to allow interrupts in the clockless chipsets (or to force it to disallow), overriding the default on platforms that support this. Set the value to 1 to allow interrupts or 0 to disallow them.
#define FASTLED_INTERRUPT_RETRY_COUNT   (0)                 // default: 2; // Use this to determine how many times FastLED will attempt to re-transmit a frame if interrupted for too long by interrupts
#define FASTLED_ESP8266_RAW_PIN_ORDER                       // FASTLED_ESP8266_RAW_PIN_ORDER, FASTLED_ESP8266_D1_PIN_ORDER or FASTLED_ESP8266_NODEMCU_PIN_ORDER
Добрый день.
А ни у кого не было проблем с китайскими матрицами 16х16 на WS2812B?
Почему-то идет включение диодов, рядом с активными. Загораются на полной яркости с "инвертированным" цветом.
На обычной ленте таких проблем нет - все чистенько.
На прошивке GyverLamp 87in1 от gunner47 на тех же пинах ленты/кнопки и такой же версии FastLed тоже все чисто.
Железо WemosD1mini и тактовая кнопка - все остальное отпаяно и отключено в скетче.
Перепайка/переназначение пина управления ленты (сейчас D2), смена версии ядра 8266/FastLed (сейчас 3.1.2/ 3.6), смена БП на проблему не влияет.
Что еще подкрутить можно?
 
Изменено:

Zordog

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

@vvip,
А как насчёт библиотеки BearSSL, которая интегрирована в библиотеку WiFi?
Там даже можно просто выбрать режим setInsecure() и устанавливать SSL-соединения без проверки сертификата. Рассматривали такое?
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Zordog, рассматривал. Выше по форуму (28 августа) я выкладывал скрипт как раз с использованием этой фичи. Оно работает только если памяти свободной более 35K. Если памяти менее 25к - оно просто крашит всю систему. Если менее 20 К - просто не соединяется. А по факту в этом проекте на ESP8266 - в наличии остается 10-15к свободных. На ESP32 наверное будет работать, но от 8266 тоже отказываться не хочется - у меня много устройств на нем сделано и работает... Хочется найти какое-то универсальное решение...
 
Изменено:

Zordog

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

@vvip,
Вся суть в setInsecure(). Как я понял, тогда не используется TLS и, как следствие, не выделяется 16-22 Кб из кучи (heap).
При обращении к проверенному адресу я, в старых релизах unix-систем (работа такая), обращаюсь по ip без проверки подлинности сертификата. Это костыль конечно, но не всегда есть возможность обновить openssl.
 
Изменено: