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

Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

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

Комментарии

recoshet

★✩✩✩✩✩✩
15 Июн 2019
1
14
Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

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

DAJIb

✩✩✩✩✩✩✩
28 Сен 2019
15
3
Граждане подскажите, решил поменять режим лампы из WiFi клиента на точку доступа,прошил, но ничего не поменялось.
Прошивка gunner47 последняя, wemos d1 mini.
Надо как то по особенному перепрошивать ?
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Граждане подскажите, решил поменять режим лампы из WiFi клиента на точку доступа,прошил, но ничего не поменялось.
Прошивка gunner47 последняя, wemos d1 mini.
Надо как то по особенному перепрошивать ?
Нет, ничего особенного. Описание к прошивке читали? Теперь же ESP_MODE запоминается в энергонезависимую память. То, что вы задаёте в прошивке будет работать только после прошивки с полной очисткой flash памяти. Дальнейшие преключения "точка доступа/клиент" работают по семерному клику на кнопку. Лампа должна 3 раза мигнуть красным и перезагрузиться в другом режиме.
 

DAJIb

✩✩✩✩✩✩✩
28 Сен 2019
15
3
Нет, ничего особенного. Описание к прошивке читали? Теперь же ESP_MODE запоминается в энергонезависимую память.
Спасибо.А не подскажете как сделатьс полную очистку flash памяти.Просто гугл на вопрос выдает такое ,что для нас с бронепоезда не совсем понятно.Может есть где обьяснение на русском
 

Xabar

✩✩✩✩✩✩✩
14 Сен 2019
14
0
В Ардуино IDE вкладка "Инструменты" - пункт "Erase flash" - выбрать "Sketch+WiFi setting"
 

Николай1992

✩✩✩✩✩✩✩
7 Мар 2019
10
0
День добрый. Переписал прошивку от gunner47, для возможности использовать ESP32. если кому интересно, то лежит тут
https://github.com/kang2k10/GyverLampESP32/tree/master/firmware/GyverLamp_v1.4
предыдущие версии прошивки не менял

ps. В папке libraries лежит библиотека WIFIMANAGER-ESP32
И на этом все, статичное свечение диодов и то не всегда, что может быть не так ?
 

Вложения

gunner47

★★★★★✩✩
18 Июн 2019
253
393
И на этом все, статичное свечение диодов и то не всегда, что может быть не так ?
Почти невозможно ответить на такие вопросы, если нет никаких данных. Что в мониторе порта? Какой режим ESP_MODE? Развёрнута ли лампой точка доступа WiFi? Вводили ли вы имя сети и пароль? Перезагружается ли модуль всё время или нет (просто выдаёт статический сигнал на диоды)?
 

Денис Пелих

✩✩✩✩✩✩✩
17 Июн 2019
9
1
Всем привет! Что можно сделать если кнопка "будильник" в приложении не работает? никаких действий при нажатии на нее нет (MQTT включен, остальное все стандартно и работает в штатном режиме)

UPD:
Перестал работать OTA режим, из arduino ide IP порт недоступен, в лампе OTA включен.
Снимок.JPG
 
Изменено:

Юрий П.

★✩✩✩✩✩✩
9 Окт 2019
7
19
Привет! Проявилась ошибка, от которой не удаётся избавиться:
Хотелось бы выводить тексты, например пересланные по wifi, или с будильника с пояснением причины разбуда.
Время выводится нормально https://community.alexgyver.ru/threads/wifi-lampa-budilnik.1406/post-13955
и ещё https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proekta.1411/post-14087
но там текст короткий.
Но более длинный иногда зависает или перезапускает. Срабатывает аппаратное прерывание по сторожевому таймеру:
ets Jan 8 2013,rst cause:4, boot mode: (1,6)
wdt reset

Не хватает времени на прорисовку, а может сеть вмешивается, но здесь не хотелось бы сильно влезать, что бы сохранить совместимости с будущими версиями.
Может кто подскажет, как прерывание отключить или время увеличить? Типа yield(); в прорисовке как-то не помогает.
 
Изменено:

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Всем привет! Что можно сделать если кнопка "будильник" в приложении не работает? никаких действий при нажатии на нее нет (MQTT включен, остальное все стандартно и работает в штатном режиме)
Самый универсальный совет - проверять монитор порта или вывод в telnet. Но похоже, лампа не получила время из интернета, будильник отключается только в этом случае. Попробовать перезагрузить лампу. Можно проверить доступность используемого в прошивке ntp сервера. В принципе лампа пытается синхронизировать время каждые 5 минут, если не смогла получить его при старте, а в дальнейшем - каждые полчаса.
 

Денис Пелих

✩✩✩✩✩✩✩
17 Июн 2019
9
1
Самый универсальный совет - проверять монитор порта или вывод в telnet. Но похоже, лампа не получила время из интернета, будильник отключается только в этом случае. Попробовать перезагрузить лампу. Можно проверить доступность используемого в прошивке ntp сервера. В принципе лампа пытается синхронизировать время каждые 5 минут, если не смогла получить его при старте, а в дальнейшем - каждые полчаса.
Монитор порта недоступен, в OTA режим не переходит((
Screenshot_20191014-005836.pngScreenshot_20191014-005740.png
Putty тоже молчит
Снимок.JPG

Из приложения все работает кроме будильника, по MQTT приходит статус OTA и управляется нормально.
 
Изменено:

Юрий П.

★✩✩✩✩✩✩
9 Окт 2019
7
19
Вот ещё малость по выводу времени:
В закладке "runningText" вводим
C++:
long LastTimeOut = 0; // Последнее показанное время

void TextOut(String ATxt, CRGB letterColor) {
  while(!fillString(ATxt.c_str(), letterColor)) delay(1);
}

void TimeOut(CRGB letterColor) {
  LastTimeOut = thisTime;
  int i = thisTime % 60;
  String s = String(i);
  if (i < 10) s = "0" + s; //левый ноль добавим
  s = String((thisTime - i) / 60) + ":" + s;
  TextOut(s, letterColor);
}
В функции текста добавляем параметр Цвет текста "CRGB letterColor":
bool fillString(const char* text, CRGB letterColor)
void drawLetter(uint8_t index, uint8_t letter, int8_t offset, CRGB letterColor)
с коррекциями по телу функций.

А в закладке "time" после строки
thisTime = timeClient.getHours() * 60 + timeClient.getMinutes();
вставляем следующее:
C++:
      //Печать текста времени каждые 10 минут синим и каждый час красным
      if ((ESP_MODE == 1U) && (thisTime != LastTimeOut)) {
        if (timeClient.getMinutes() == 0) {TimeOut(CRGB::Red);} else      
        if ((timeClient.getMinutes() % 10) == 0) {TimeOut(CRGB::Blue);}
      }
В итоге каждые 10 минут показывает время синим, а каждый час красным. Цветной текст, против белого, смотрится отчётливее, при меньшей яркости меньше рассеивается.

Да, кстати и уровень вывода текста так же интереснее повысить
#define TEXT_HEIGHT (7U) // высота, на которой бежит текст (от низа матрицы)
 
Изменено:
  • Лойс +1
Реакции: kDn

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Монитор порта недоступен, в OTA режим не переходит((
Посмотреть вложение 5110Посмотреть вложение 5111
Сегодня выше обсуждалось.Перезагрузите лампу, запросите OTA ещё раз.
На 100% не уверен, но вроде как у esp всего 4 доступных сетевых сокета. Один занят под обмен данными с приложением, второй для MQTT, ещё один для OTA, ещё есть синхронизация времени и telnet, если включен. В общем, может настать ситуация, в которой esp не сможет открыть ещё одно сетевое соедиинение. Пора прекращать навешивать новые функции...
 

Денис Пелих

✩✩✩✩✩✩✩
17 Июн 2019
9
1
Сегодня выше обсуждалось.Перезагрузите лампу, запросите OTA ещё раз.
На 100% не уверен, но вроде как у esp всего 4 доступных сетевых сокета. Один занят под обмен данными с приложением, второй для MQTT, ещё один для OTA, ещё есть синхронизация времени и telnet, если включен. В общем, может настать ситуация, в которой esp не сможет открыть ещё одно сетевое соедиинение. Пора прекращать навешивать новые функции...
Из розетки выключал уже ни один раз, после перезагрузки остаётся эффект "матрица". Завтра попробую прошить стандартным способом.
P.s. Огромное спасибо за труды. Лампа получилась просто супер. В Вашей прошивке есть все, чего не хватало в стоковой версии.
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Из розетки выключал уже ни один раз, после перезагрузки остаётся эффект "матрица". Завтра попробую прошить стандартным способом.
P.s. Огромное спасибо за труды. Лампа получилась просто супер. В Вашей прошивке есть все, чего не хватало в стоковой версии.
Если другое не поможет, прошивайте с полной очисткой памяти. Я сейчас тестирую со включенным MQTT, пытаюсь обновиться по OTA - вроде не ругается, прошивается. Но пару раз лампа при старте не получала время - отключался будильник. Подумал, что очень часто прошиваю, перезапускаю, ntp сервер действительно мог отклонять пакеты с моего ip. Поменял ntp в прошивке - лампа стала получать время стабильно. Подождал полдня, вернул прежний ntp - время приходит. Не знаю, бан это был или недоступность сервера времени.

Но и с OTA тоже пару раз было, что не запускалось обновление. Просто перезапускал лампу, пока висело окно ввода пароля и запрашивал OTA повторно - всё прошивалось. К счастью, это нечастая в нормальном режиме использования операция.

Как-то раньше просили сделать вот так:
А можно сделать так - если лампа не находит сеть, то переходит в режим AP, ждет какое-то время, если нет соединения, то рубит Wi-Fi и переходит в автономный режим от кнопки до следующей перезагрузки... Получается 3-й режим, вроде как логично ...
Я отказался. Но теперь вот нашёл сценарий, который очень даже оправдывает это нововведение. Речь о том случае, когда хочется перенести лампу в место без WiFi и управлять, подключившись к ней, как к точке доступа или кнопкой. Сейчас переключить её в ESP_MODE = 0 можно без перепрошивки, но это нужно обязательно сделать заранее, когда она ещё в зоне действия WiFi сети. Если забыть, то на новом месте она сама развернёт точку доступа, но только для ввода SSID и пароля от новой WiFi сети. И на кнопку реагировать не будет. Это не удобно. Единственный выход - развернуть точку доступа на телефоне с тем же именем и паролем, какой был в прежней WiFi сети. В общем, не удобно. Так что я завтра выложу ещё одно обновление - если при ESP_MODE = 1 при первом запуске не был введён SSID/пароль, то через 5 минут лампа сама перезагрузится в ESP_MODE = 0. Потом её можно будет снова вернуть в ESP_MODE = 1 семикратным кликом.
Специальный анонс здесь делать не буду, пока не напишу описание всего на github'е.
И нужно больше времени уделять тестированию, последние прошивки вышли слишком сырыми.

И ещё заинтересовала идея @Юрий П. выводить время. Если вы не против, перетащу к себе. Заодно потестирую разные варианты текста. Хотя не уверен, что удастся победить watchdog.
 

Юрий П.

★✩✩✩✩✩✩
9 Окт 2019
7
19
...И ещё заинтересовала идея @Юрий П. выводить время. Если вы не против, перетащу к себе. Заодно потестирую разные варианты текста. Хотя не уверен, что удастся победить watchdog.
Буду только рад - не придётся встраивать в будущие версии ))
А проблемка возникла при попытке предверять вывод времени показом нескольких символов, например строки из нескольких точек, что бы привлечь внимание, а то пока голову повернёшь - часы уже промотало.
итоговое здесь - https://community.alexgyver.ru/threads/wifi-lampa-budilnik.1406/post-14087
 

AndyIP

★★✩✩✩✩✩
3 Июл 2019
91
50
И на этом все, статичное свечение диодов и то не всегда, что может быть не так ?
У меня данная прошивка заработала "из коробки", поправил только часовой пояс. Работает стабильно, не виснет. Нужны подробности - какая именно у вас esp32 и что выбрано в Arduino IDE в менюшке Tools=>Board?
 

Николай1992

✩✩✩✩✩✩✩
7 Мар 2019
10
0
Почти невозможно ответить на такие вопросы, если нет никаких данных. Что в мониторе порта? Какой режим ESP_MODE? Развёрнута ли лампой точка доступа WiFi? Вводили ли вы имя сети и пароль? Перезагружается ли модуль всё время или нет (просто выдаёт статический сигнал на диоды)?
ESP_MODE 0U (Кстати зачем букву везде в прошивке прописывают?), Точку WiFi вижу, телефон постоянно переподключается, лампа во время этого дергается ( такое ощущение что начинается анимация и зависает), я так полагаю что если иногда лента беспорядочно дергается, как эффект конфетти то модуль не перезагружается, а просто выдают что-то не понятное и только на треть лампы.
 

Вложения

kang2k

✩✩✩✩✩✩✩
22 Сен 2019
4
3
ESP_MODE 0U (Кстати зачем букву везде в прошивке прописывают?), Точку WiFi вижу, телефон постоянно переподключается, лампа во время этого дергается ( такое ощущение что начинается анимация и зависает), я так полагаю что если иногда лента беспорядочно дергается, как эффект конфетти то модуль не перезагружается, а просто выдают что-то не понятное и только на треть лампы.
Кнопка подключена ? Если нет, то в прошивке надо закомментировать строку #define ESP_USE_BUTTON
Точное название Вашего модуля ? и к каким пинам подключили ленту/кнопку
 

Николай1992

✩✩✩✩✩✩✩
7 Мар 2019
10
0
Кнопка подключена ? Если нет, то в прошивке надо закомментировать строку #define ESP_USE_BUTTON
Точное название Вашего модуля ? и к каким пинам подключили ленту/кнопку
Кнопка подключена к выводу D4 на плате, в коде указанно #define BTN_PIN (4U). Следовательно строку не компилирую, пробовал компилировать, ничего не изменилось.
 

lucikan

✩✩✩✩✩✩✩
1 Окт 2019
2
0
Хотя не уверен, что удастся победить watchdog.
неплохая статься про watchdog
https://www.sigmdel.ca/michel/program/esp8266/arduino/watchdogs_en.html

как я понял, простыми средствами победить его не получается, но можно его сбрасывать .

и у вас с @AlexGyver это код есть, но только в loop. В теории в setup перед и после долгих операций можно делать сброс, тогда общее время можно растянуть. Останется только одно ограничение в ~8 сек на операцию.
 

kang2k

✩✩✩✩✩✩✩
22 Сен 2019
4
3
неплохая статься про watchdog
https://www.sigmdel.ca/michel/program/esp8266/arduino/watchdogs_en.html

как я понял, простыми средствами победить его не получается, но можно его сбрасывать .

и у вас с @AlexGyver это код есть, но только в loop. В теории в setup перед и после долгих операций можно делать сброс, тогда общее время можно растянуть. Останется только одно ограничение в ~8 сек на операцию.
По хорошему, надо сделать прерывание таймера, для обработки сброса wdt. Тогда не будет зависимости от длительности операции
 

lucikan

✩✩✩✩✩✩✩
1 Окт 2019
2
0
По хорошему, надо сделать прерывание таймера, для обработки сброса wdt. Тогда не будет зависимости от длительности операции
это не совсем то, esp может где-то подвиснуть, а прерывания обрабатывать нормально.
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
это не совсем то, esp может где-то подвиснуть, а прерывания обрабатывать нормально.
Спасибо, читаю...
Да в том и дело, что сбрасывать таймер вроде как можно было многими способами - yield(), delay() с любым аргументом, даже нулём, ESP.wdtFeed() и дополнительно он сам сбрасывается после каждой итерации цикла loop. Т.е., длительность выполнения функций setup() и loop() не должна превышать максимально допустимые 8 секунд. Видел эту инфу на многих форумах, её неоднократно подтверждал некий Иван Грохотков из espressif. Но на практике у них до сих пор меняется платформа и фреймворк esp8266 под Arduino, yield() и delay() таймер не сбрасывают почему-то. Но ESP.wdtFeed() таки сбрасывает, и таким способом вопрос вроде как решён.
 
Изменено:
  • Лойс +1
Реакции: Юрий П.

pochetny

✩✩✩✩✩✩✩
26 Июн 2019
1
0
Также после прошивки в приложении перестал открываться будильник (сервер времени пингуется нормально, к wi-fi подключение есть)