Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "ESP8266 Arduino IDE", создана пользователем PAV, 19 дек 2018.

  1. PAV

    PAV Новичок

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

    nikolz Гуру

    Сообщения:
    4.509
    Симпатии:
    444
    можно
    ставите таймер
    в колбеке его ставите попытку отправить
    в колбеке wifi определяете почему нет подключения
    -------------------
    в колбеках( на выбор) запускаете свой код
    =====================
    либо делаете две задачи
    в одной будете отправлять в другой исполнить свой код
    ------------------------
     
    PAV нравится это.
  3. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.564
    Симпатии:
    178
    Просто перед отсылкой данных в сеть проверяйте наличие соединения
    if (WiFi.status() == WL_CONNECTED) posylajem_v_set();

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

    ESP8266WiFi library — ESP8266 Arduino Core 2.4.0 documentation
     
    Последнее редактирование: 20 дек 2018
    zorgg и PAV нравится это.

Поделиться этой страницей