Blynk, но продолжайте программу, если соединение Blynk не удается

У меня проблема с Blynk.begin(auth, ssid, pass); Проблема в том, что, когда он не подключается к Wi-Fi, остальная часть программы не продолжается.

Я использую Wemos D1, и он также управляет некоторыми реле на основе датчика температуры. Но когда произошло отключение питания и питание снова включается, программы должны продолжаться независимо от того, работает Wi-Fi или нет, чтобы реле все еще можно было контролировать по показаниям датчика температуры.

Что происходит сейчас, так это то, что если есть проблема с Wi-Fi, когда Wemos D1 запускается снова, программа просто останавливается в void setup() в Blynk.begin(auth, ssid, pass); и остальная часть программы не может быть выполнена.

Кто-нибудь знает, как этого избежать?

, 👍0

Обсуждение

Это было слабостью Блинка с самого начала. Блок функций подключения и ничто другое не могут выполняться до тех пор, пока они не вернутся. Кроме того, некоторые функции передачи данных блокируются, если ваше интернет-соединение отключается или пропускает слишком много трафика, чтобы трафик 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


1 ответ


Лучший ответ:

0

Вы можете попробовать мой 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