• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Выполнение кода, если нет подключения к WiFi

PAV

Member
Друзья, подскажите, пожалуйста, возможно ли сделать так и если возможно, то как?
Есть стандартный код, пусть будет управление LED от датчика движения. Т.е. к ESP подключена светодиодная лента через мосфет и датчик движения.
Есть желание, чтобы инфа о состоянии датчика движения и ленты отправлялась на сервер умного дома.
Все это реализовано НО!!!!
Для меня важно, чтобы девайс выполнял основное предназначение, т.е. управлял светом, а вот отправит он данные на сервер или нет, не так важно.
Отсюда вопрос - можно ли сделать как-то так, чтобы если вдруг при запуске нет связи с роутером, то после 15 попыток девайс приступал к исполнению кода и периодически пытался подключиться к серверу?
В идеале, чтобы девайс начинал выполнение основного кода незамедлительно после включения, а уже потом, в процессе работы подключался к роутеру.
Чет мозг застопорился.
Заранее благодарю за помощь.
 

nikolz

Well-known member
Друзья, подскажите, пожалуйста, возможно ли сделать так и если возможно, то как?
Есть стандартный код, пусть будет управление LED от датчика движения. Т.е. к ESP подключена светодиодная лента через мосфет и датчик движения.
Есть желание, чтобы инфа о состоянии датчика движения и ленты отправлялась на сервер умного дома.
Все это реализовано НО!!!!
Для меня важно, чтобы девайс выполнял основное предназначение, т.е. управлял светом, а вот отправит он данные на сервер или нет, не так важно.
Отсюда вопрос - можно ли сделать как-то так, чтобы если вдруг при запуске нет связи с роутером, то после 15 попыток девайс приступал к исполнению кода и периодически пытался подключиться к серверу?
В идеале, чтобы девайс начинал выполнение основного кода незамедлительно после включения, а уже потом, в процессе работы подключался к роутеру.
Чет мозг застопорился.
Заранее благодарю за помощь.
можно
ставите таймер
в колбеке его ставите попытку отправить
в колбеке wifi определяете почему нет подключения
-------------------
в колбеках( на выбор) запускаете свой код
=====================
либо делаете две задачи
в одной будете отправлять в другой исполнить свой код
------------------------
 
  • Like
Реакции: PAV

CodeNameHawk

Moderator
Команда форума
Отсюда вопрос - можно ли сделать как-то так, чтобы если вдруг при запуске нет связи с роутером, то после 15 попыток девайс приступал к исполнению кода и периодически пытался подключиться к серверу?
Просто перед отсылкой данных в сеть проверяйте наличие соединения
if (WiFi.status() == WL_CONNECTED) posylajem_v_set();

В setup сделайте ограниченное время ожидания подключения к сети. (я делаю 10 проверок с секундной задержкой).
Примерно так.
Код:
WiFi.begin("network-name", "pass-to-network");
uint8_t i=0;
do
{
  delay(1000);
  Serial.print(".");
 ++i;
}while ((WiFi.status() != WL_CONNECTED) | (i < 10));
Установите свойство автоподключения и автопереподключения в true.
Код:
WiFi.setAutoСonnect(true);
WiFi.setAutoReconnect(true);
и не надо будет заботиться о подключении к сети, когда она появится.

ESP8266WiFi library — ESP8266 Arduino Core 2.4.0 documentation
 
Последнее редактирование:
Сверху Снизу