• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Последнее редактирование:
Сверху Снизу