Blynk, но продолжайте программу, если соединение Blynk не удается
У меня проблема с Blynk.begin(auth, ssid, pass); Проблема в том, что, когда он не подключается к Wi-Fi, остальная часть программы не продолжается.
Я использую Wemos D1, и он также управляет некоторыми реле на основе датчика температуры. Но когда произошло отключение питания и питание снова включается, программы должны продолжаться независимо от того, работает Wi-Fi или нет, чтобы реле все еще можно было контролировать по показаниям датчика температуры.
Что происходит сейчас, так это то, что если есть проблема с Wi-Fi, когда Wemos D1 запускается снова, программа просто останавливается в void setup() в Blynk.begin(auth, ssid, pass); и остальная часть программы не может быть выполнена.
Кто-нибудь знает, как этого избежать?
@Petrus, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы можете попробовать мой Blynk_WM или Библиотека Blynk_Async_WM с их функциями Blynk.begin() не блокируется.
Проверка Зачем использовать этот Blynk_WiFiManager с функциями MultiWiFi-MultiBlink
Зачем использовать это Blynk_WiFiManager с функциями MultiWiFi-MultiBlink
Вы можете видеть, что система автоматически обнаруживает и подключается к лучшим или доступным Wi-Fi APS и/или серверам Blynk, когда происходит прерывание. Эта функция очень полезна для систем, требующих высокой степени надежности.
Кроме того, этот <код>Blynk.begin() не является блокирующим вызовом , поэтому вы можете использовать его для критических функций, требующих in loop ().
В любом случае, это лучше для проектов, использующих Blynk только для GUI (графический интерфейс пользователя).
В процессе работы, если соединение Wi-Fi или Blynk потеряно, Blynk.run()
попытается автоматически восстановить соединение. Поэтому Blynk.run()
должен быть вызван в функции loop()
. Не используйте:
void loop()
{
if (Blynk.connected())
Blynk.run();
...
}
просто
void loop()
{
Blynk.run();
...
}
Также полезно искать в Форум Blynk для получения дополнительной информации и примеров
Хой, политика обмена стеками требует раскрыть, что это ваши библиотеки, @Juraj
Спасибо, Юрай, уже обновил., @khoih-prog
Да, Blynk_WiFiManager-это здорово. Я изменил DHT11ESP8266.ino в соответствии со своими потребностями и задачами., @Petrus
- Как попытаться подключиться к Wi-Fi только один раз?
- Добавление WiFi к моему замку клавиатуры Arduino
- Ошибка при компиляции для NodeMCU
- Как подключиться к Arduino с помощью WiFi?
- ESP8266 не подключается к Wi-Fi
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
Это было слабостью Блинка с самого начала. Блок функций подключения и ничто другое не могут выполняться до тех пор, пока они не вернутся. Кроме того, некоторые функции передачи данных блокируются, если ваше интернет-соединение отключается или пропускает слишком много трафика, чтобы трафик Blynk мог завершиться своевременно (как долго "своевременно"?). Я не знаю другого способа обойти это, кроме как, возможно, создать свой собственный сторожевой таймер (который может иметь гораздо более длительный тайм-аут, чем 8 секунд), и запрограммировать вашу систему на запуск без Blynk, если она была перезапущена из-за Blynk., @JRobert
@JRobert, спасибо за ваш комментарий! Сначала я подумал, что, возможно, просто полностью переместил код Blynk из void setup() в основной цикл в самом конце, но даже тогда я застряну, если Wi-Fi по какой-то причине выйдет из строя. Я уверен, что мне чего - то не хватает-я не очень хорошо разбираюсь ни в чем, кроме базового Блинка. Трудно представить, что это не является серьезной проблемой, когда речь заходит о программах, которым необходимо выполнять важные задачи независимо от того, работает Wi-Fi или нет..., @Petrus
это может помочь https://gist.github.com/mercdev/f0fea967a82fb87e92a425c5f12580af#file-blynk_wemos_d1_r2-ino-L276, @jsotola
https://docs.blynk.cc/#blynk-firmware-configuration-blynkconfig и пример ESP8266_Standalone_Manual_IP для библиотеки Blynk, @Juraj