ESP отваливается от WiFi
- Войдите на сайт для отправки комментариев
Всем добрый день! Делаю для себя небольшой проект: устройство для нажатия кнопки через Telegram. Использую плату Wemos D1 mini и мосфет транзистор для замыкания контактов. Проблема в том, что после продолжительного простоя плата отключается от роутера и приходится его перезагружать. Перезагрузка платы почему-то не помогает. Иногда бывает, что ответ по команде приходит спустя 5-10 минут без перезагрузки. Дома есть еще несколько устройств на esp8266: это светодиодная лента на WLED плата NodeMCU и несколько выключателей Tuya. С ними все нормально, они не отключаются. Как можно решить проблему? Питается плата от usb компьютера. Схему условно нарисовал: лампочка и аккумулятор - как раз то, что нужно замыкать.
Код написал элементарный, использовал delay. Знаю, что лучше использовать таймер, но для такого кода, мне кажется, и так сойдет. библиотека для телеги от Алекса Гайвера.
#include <ESP8266WiFi.h> #include <FastBot.h> #define WIFI_SSID "*********" #define WIFI_PASS "*********" #define BOT_TOKEN "******************" FastBot bot(BOT_TOKEN); void setup() { pinMode(4, OUTPUT); digitalWrite(4, 0); delay(500); Serial.begin(115200); while (!Serial) { ; // * Ждём завершения инициализации шины UART. } WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected"); Serial.println(WiFi.localIP()); bot.attach(newMsg); } void loop() { bot.tick(); } void newMsg(FB_msg& msg) { Serial.println(msg.toString()); if (msg.text == "/on") { digitalWrite(4, 1); delay(200); digitalWrite(4, 0); bot.sendMessage("Включен", msg.chatID); } if (msg.text == "/off") { digitalWrite(4, 1); delay(15000); digitalWrite(4, 0); bot.sendMessage("Отключен", msg.chatID); } }
Полагаю, дело в библиотеке/частоте опросов телеграма. Сделайте опрос сами, и ставьте задержку между опросами в 1 секунду, а то сейчас выглядит так, как будто tick() постоянно опрашивает сервера телеграмма в цикле, и его запросто могут прибанивать/tarpit-ить, вот _http->get() и ждёт подолгу. А потом ещё сообщения начинаются с нуля, если их много, может буфер у есп-шки переполняются.