ESP, IoT WiFi лампа-будильник. Обсуждение прошивки от GUNNER47

ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 
Изменено:

Комментарии

mechanic

★★★★✩✩✩
Команда форума
31 Июл 2018
403
206
ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
@Mamansetr,
наверное, блок питания проверять, или дублировать питание,
или проверять, как вы чего спаяли.
У вас из ленты самодельная матрица?
 

Mamansetr

✩✩✩✩✩✩✩
16 Мар 2021
3
1
Матрица покупная, готовая, 16 на 16. Всё как в видео, питание продублировал, опять же как у Алекса, прошивка от ганнера
 
  • Лойс +1
Реакции: Vladimir2505

Mamansetr

✩✩✩✩✩✩✩
16 Мар 2021
3
1
Увы, но уже не могу. Лампа подарена. Надеялся что проблема типовая и софтовая. печально что нет. Пардоньте за беспокойство. Заказал ещё несколько матриц, если проблема повторится, подниму тему ещё раз
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
@Mamansetr,
сперва собирайте по простейшей схеме (картинка, где используются родные разъёмы)
без дублирования питания и прочего.
Это даст понимание, как оно может и должно работать.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@Mamansetr, до следующей сборки читать это https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/ особенно про контроль напряжений.
У вас явно просадки напряжения на входе 5в контроллера.


Пс. Все почему-то думают, что если контроллер не виснет и не перегружается, значит с питанием у него все ОК. С питанием то у него действительно все ок, потому как само ядро ESP работает от 1.8в. А вот периферия контроллера начинает работать не корректно. К примеру, он не может выдать достаточный уровень напряжения на выходе на матрицу/ленту, из за чего могут наблюдаться артефакты.
 

MishaPolishuk

✩✩✩✩✩✩✩
11 Мар 2021
1
0
Ребята подскажите. Собрал лампу на modemcu эффекты все загрузились но когда подключаю лампу к телефону на этапе получение ip адреса прерываеться подключение и лампа не подключаеться к телефону:mad:

https://ledplus.com.ua/p722653210-modul-wifi-nodemcu.html
Покупал здесь

Прошивка от gunner47 самая свежая
 

alvikskor

★★★✩✩✩✩
18 Янв 2021
388
130
Днепр. Украина
@Сотнег,
Всем доброго дня.
Выдалось немного времени. Поковырял в пределах своего разумения код. Обнаружил, что если WiFi появляется раньше,чем глобальный интернет (во время загрузки моего роутера TP-LINK TL-WR840N происходит именно так) то функция wifi.hostbyname возвращает адрес NTP 255.255.255.255. И дальше при попытке получить время лампа виснет. Точнее не реагирует на кнопку. Возможно , ей некогда этой кнопкой заниматься. А после подключения приложения лампа отвисает, так как перестаёт синхронизировать время через NTP. Чуть переделал кусок кода в файле time.ino. Добавил Ping.ping (8,8,8,8) перед определением адреса нтп. Вроде работает. Привожу этот кусок. Гляньте, нет ли подводных камней.
C++:
  if (Ping.ping(remote_ip)) // Проверка соединения с интернетом с помощью ping  на IP 8.8.8.8 Работает (с моим роутером) надёжней, чем int err = WiFi.hostByName(...)
  {
  #ifdef GENERAL_DEBUG
  LOG.println(F("Ping is successful "));
  #endif
  int err = WiFi.hostByName(NTP_ADDRESS, ntpServerIp, RESOLVE_TIMEOUT);
  if (err!=1 || ntpServerIp[0] == 0 || ntpServerIp[0] == 255) //if (ntpServerIp[0] <= 0)
  {  
    #ifdef GENERAL_DEBUG
    LOG.print(F("Статус Error: "));
    LOG.println(err);
    LOG.print(F("IP адрес NTP: "));
    LOG.println(ntpServerIp);
    if (ntpServerAddressResolved)
    {
      LOG.println(F("Подключение к интернету отсутствует"));
    }
    #endif
    ntpServerAddressResolved = false;
  }
  else
  {
    #ifdef GENERAL_DEBUG
    LOG.print(F("IP адрес NTP: "));
    LOG.println(ntpServerIp);
    if (!ntpServerAddressResolved)
    {
      LOG.println(F("Подключение к интернету установлено"));
    }
    #endif

    ntpServerAddressResolved = true;
   }
}
else
  {
    #ifdef GENERAL_DEBUG
    LOG.println(F("Ping is wrong "));
    if (ntpServerAddressResolved)
    {
      LOG.println(F("Подключение к интернету отсутствует"));
    }
    #endif
    //lastResolveTryMoment = 0; // Если раскоментировано, повторная проверка подключения к интернету сразу. Если закоментировано, то через RESOLVE_INTERVAL
    ntpServerAddressResolved = false;
  }

}
#endif
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Добавил Ping.ping (8,8,8,8) перед определением адреса нтп. Вроде работает. Привожу этот кусок. Гляньте, нет ли подводных камней.
Этот новый ip-адрес для пинга - и есть подводный камень.
Мало ли что с ним случится. Вдруг провайдер начнёт заставлять пользоваться своим DNS?
Зачем он вам, если вы всё равно проверяете || ntpServerIp[0] == 255 ?

функция wifi.hostbyname возвращает адрес NTP 255.255.255.255
Я бы (в изначальном коде) заменил строчки
WiFi.hostByName(NTP_ADDRESS, ntpServerIp, RESOLVE_TIMEOUT);
if (ntpServerIp[0] <= 0)
на строчку
if (!WiFi.hostByName(NTP_ADDRESS, ntpServerIp, RESOLVE_TIMEOUT) || ntpServerIp[0] == 0 || ntpServerIp == IPAddress(255U, 255U, 255U, 255U))
и посмотрел, что будет.

функция wifi.hostbyname возвращает адрес NTP 255.255.255.255
Так она, вроде, и должна...
C-like:
IPAddress dummy(0xFF,0xFF,0xFF,0xFF);
aResult = _ipAddr;
result = (aResult != dummy);
Получается, ошибка автора была в том, что он не проверял результат выполнения функции,
а проверял только первую цифру ip-адреса.
 
Изменено:

alvikskor

★★★✩✩✩✩
18 Янв 2021
388
130
Днепр. Украина
Этот новый ip-адрес для пинга - и есть подводный камень.
Ну, это вряд ли. 8.8.8.8 это есть dns.google.com. Надёжней трудно отыскать.
Зачем он вам, если вы всё равно проверяете || ntpServerIp[0] == 255 ?
С этим у меня возникли сложности. Уж я не знаю в чем причина, или в моём роутере, или в библиотеке и её фукции WiFi.hostByName , но в процессе перезагрузки роутера, когда вифи появляется раньше интернета и функция возвращает 255.255.255.255 , то , даже, после появления интернета она продолжает возвращать 255.255.255.255. Вы же видели, я специально вывод возвращаемого адреса сделал. И когда повторная проверка производится сразу (а я проверял так для ускорения процесса) , то лампа фактически виснет. и так либо до перезагрузки лампы, либо до подключения приложения ( и отключения нтп).

Получается, ошибка автора была в том, что он не проверял результат выполнения функции,
а проверял только первую цифру ip-адреса.
Проверял
int err = WiFi.hostByName(NTP_ADDRESS, ntpServerIp, RESOLVE_TIMEOUT);
if (err!=1 || ntpServerIp[0] == 0 || ntpServerIp[0] == 255)
Только err всегда была равна 1. То есть всё ОК, по мнению функции, но только не работает.
 
  • Лойс +1
Реакции: Сотнег

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Ну, это вряд ли. 8.8.8.8 это есть dns.google.com. Надёжней трудно отыскать.
Понятно, что вряд ли,
но я бы не зарекался.
Вдруг провайдер начнёт заставлять пользоваться своим DNS?

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

У меня нет лучшего варианта,
но к пингу ещё одного лишнего и совершенно левого ip-адреса отношение плохое.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Мне это тоже не очень нравится. но по другому не придумал, что сделать.
Так не заморачивайтесь, ваш подход является стандартным - проверять доступность серверов гугла для выяснения наличия интернета.
Особо боязливые или из чебурнетов могут также проверять доступность яндекса/байду :)
 

alvikskor

★★★✩✩✩✩
18 Янв 2021
388
130
Днепр. Украина
попробовал вернуться к вариантубез ping, но с задержкой повторного подключения 30 секунд
C++:
  int err = WiFi.hostByName(NTP_ADDRESS, ntpServerIp, RESOLVE_TIMEOUT);
  if (err!=1 || ntpServerIp[0] == 0 || ntpServerIp[0] == 255) //if (ntpServerIp[0] <= 0)
  { 
    #ifdef GENERAL_DEBUG
    LOG.print(F("Статус Error: "));
    LOG.println(err);
    LOG.print(F("IP адрес NTP: "));
    LOG.println(ntpServerIp);
    if (ntpServerAddressResolved)
    {
      LOG.println(F("Подключение к интернету отсутствует"));
    }
    #endif
    ntpServerAddressResolved = false;
  }
  else
  {
    #ifdef GENERAL_DEBUG
    LOG.print(F("IP адрес NTP: "));
    LOG.println(ntpServerIp);
    if (!ntpServerAddressResolved)
    {
      LOG.println(F("Подключение к интернету установлено"));
    }
    #endif

    ntpServerAddressResolved = true;
   }
вот что из этого вышло:
23:14:21.979 -> Старт в режиме WiFi клиента (подключение к роутеру)
23:14:21.979 -> Подключение к WiFi сети: Pestel
23:14:46.493 -> IP адрес: 192.168.0.101
23:14:46.493 -> Порт UDP сервера: 8888
23:14:48.053 -> Статус Error: 1
23:14:48.053 -> IP адрес NTP: 255.255.255.255
23:15:18.029 -> Статус Error: 1
23:15:18.029 -> IP адрес NTP: 255.255.255.255
23:15:48.048 -> Статус Error: 1 Сдесь появился интернет
23:15:48.048 -> IP адрес NTP: 255.255.255.255
23:16:18.058 -> Статус Error: 1
23:16:18.058 -> IP адрес NTP: 255.255.255.255
23:16:48.037 -> Статус Error: 1
23:16:48.037 -> IP адрес NTP: 255.255.255.255
23:16:50.599 -> Рабочий режим лампы: ESP_MODE = 1 Сброс контроллера
23:16:50.599 -> Случайный выбор эффектов: RANDOM_ON = 1
23:16:50.599 -> Старт в режиме WiFi клиента (подключение к роутеру)
23:16:50.599 -> Подключение к WiFi сети: Pestel
23:16:54.722 -> IP адрес: 192.168.0.101
23:16:54.722 -> Порт UDP сервера: 8888
23:16:56.243 -> Статус Error: 1
23:16:56.243 -> IP адрес NTP: 255.255.255.255
23:17:26.229 -> Статус Error: 1
23:17:26.229 -> IP адрес NTP: 255.255.255.255
Но самое печальное, что даже после сброса платы есп кнопкой reset , та же фигня.
Возвращается к жизни только передёргиванием питания.

похоже, действительно роутер этот адрес плате на запрос отдаёт?
Вопрос в том, почему после передёргивания питания лампы все нормализуется. Роутер выдаёт нормальный адрес. А при сбросе контроллера лампы кнопкой reset этого не происходит. Ведь роутеру всё равно. В обоих случаях клиент для него теряется и через несколтко секунд появляется.
И затык происхолдит даже если роутер не перегружать, а просто выдернуть из него WAN , чтобы пропал интернет , и перегрузить лампу любым способом. Другого роутера нет, проверить не могу. Если кто-то может, проверьте у себя.
Я склоняюсь к багу в библиотеке
 
Изменено:
  • Лойс +1
Реакции: Сотнег

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
даже если роутер не перегружать, а просто выдернуть из него WAN
А я только хотел предложить вам пинговать не 8.8.8.8,
а ip роутера.


Если кто-то может, проверьте у себя.
Попробую на неделе поймать момент, когда интернет будет никому не нужен.
 

vmashchenko

★✩✩✩✩✩✩
14 Апр 2020
61
25
@Сотнег протестировал новую прошивку v2-86in1.

Отдельное спасибо за направленный свет и возможность его регулировки. Теперь и яркость больше (когда лампа используется, как настольная) и нет освещения назад, которое часто не нужно.

Можно сделать такую фичу и для других эффектов? Хотя бы просто - сужать область отображения эффекта (не 360 градусов, а меньше)
- например, при настройке параметра масштаб от 240 и выше (каждый шаг это отключение 1-2 колонки матрицы).
Это важно для ламп на аккумуляторах, особенно в режимах, где используется белый свет. По сути, в два раза может лампа работать с направленным светом. Да и зачем показывать сзади эффект, когда это не нужно.
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Можно сделать такую фичу и для других эффектов? Хотя бы просто - сужать область отображения эффекта (не 360 градусов, а меньше)
- например, при настройке параметра масштаб от 240 и выше (каждый шаг это отключение 1-2 колонки матрицы).
Это важно для ламп на аккумуляторах, особенно в режимах, где используется белый свет. По сути, в два раза может лампа работать с направленным светом. Да и зачем показывать сзади эффект, когда это не нужно.
На первый взгляд, овчинка выделки не стоит.
Работы, кажется, что много, а выхлоп не такой весомый.

Для экономных ламп было бы правильнее изначально брать матрицу 8х16
и использовать её, как фрагмент от полноразмерной лампы.
 

vmashchenko

★✩✩✩✩✩✩
14 Апр 2020
61
25
Код работает на матрицах нестандартных размеров - проверял.

А вот с направленным свечением овчинка выделки стоит, уверяю. Я это вижу полезным, и один человек, которому показал тоже это оценил и сказал, что надо для других эффектов делать.
Работы по-идее, не должно быть много, теоретически: написать одну функцию для всех эффектов, которая реагирует на изменения масштаба и тушит колонки в зависимости от масштаба.
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
@vmashchenko,
в прошивке gunner47 нет буферов, в которых можно было бы "тушить колонки",
а эффекты используют горящие пиксели на матрице для обсчёта следующего кадра.
Поэтому работы будет не мало, если этим заниматься.

Вот в прошивке JeeUI такое было бы горазло проще реализовать,
но там других трудоёмких для исправления косяков много.
 

vmashchenko

★✩✩✩✩✩✩
14 Апр 2020
61
25
@vmashchenko,
в прошивке gunner47 нет буферов, в которых можно было бы "тушить колонки",
а эффекты используют горящие пиксели на матрице для обсчёта следующего кадра.
Поэтому работы будет не мало, если этим заниматься.

Вот в прошивке JeeUI такое было бы горазло проще реализовать,
но там других трудоёмких для исправления косяков много.
А если не тушить, а ставить хотя бы яркость 1 для таких колонок - не проще будет реализовать?
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Вот в прошивке JeeUI такое было бы горазло проще реализовать,
Вообще даже не нужно реализовывать, достаточно нарисовать шаблон затенения в слое рисования и на этом все :)
Пока загрузка и выгрузка картинок не реализована - можно шаблон грузить по mqtt или http. Как следствие - код для реализации хотелки можно вообще не писать, ежели чего :), а работать будет данная фича для всех эффектов сразу.

Так что можете топать в гит, изучать и через неопределенное время сказать - что снова не шмогли :)
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
@vmashchenko, эффекты и яркость используют.
Без буфера вариант - только ширину матрицы делать переменной,
но это во всех эффектах использование параметра ширины менять - ещё более трудоёмко.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@Сотнег, ну вы и усложнили. Кто мешает перед FasLed.show() погасить ненужные пиксели? Там код фактически та же "Белая лампа" только наоборот.
 
  • Лойс +1
Реакции: vmashchenko

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
@kostyamat,
если затереть половину матрицы, тогда эффекты типа "на движке Кометы" (например)
следующий кадр будут обсчитывать без половины данных.