Как программно отключить WiFi в ESP8266?

Ответить
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

Всем мое почтение! Никак не могу добиться отключения WiFi в ESP8266 на время. Версия 4.2.2 portable. Делаю через "Запись системного параметра - WiFi клиент-Состояние", пишу туда false или 0, без разницы, ничего не происходит. Проверяю одновременно чтением этот системный параметр, данные меняются в нем. А WiFi как работал, так и работает. Может, что-то делаю не так? Задача чтобы ESP работала постоянно, без deep sleep, лишь иногда включая wifi и синхронизировалась с mqtt, и снова в спячку.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

Как программно отключить WiFi в ESP8266?

Сообщение AVGN »

[ref]dimonsustr[/ref], ну и конечно Ваш проект тайна тайн.
Так помощи не дождетесь.
Или хотите что бы Вам проект нарисовали?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref]AVGN[/ref], проект мне рисовать не надо. У меня частный вопрос, только начал с ESP работать. MQTT настроен, работает, статус соединения WiFi меняется. Также проверял статус соединения клиента WiFi в web-странице, там тоже все меняется. Получается, значение параметра "WiFi клиент - Состояние" не влияет на включение-отключение wifi?
Изображение
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Как программно отключить WiFi в ESP8266?

Сообщение Ingwar »

dimonsustr писал(а): 08 янв 2019, 18:13Делаю через "Запись системного параметра - WiFi клиент-Состояние", пишу туда false или 0, без разницы, ничего не происходит.
Может заблуждаюсь, но это параметр только для индикации состояния.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref]Ingwar[/ref], спасибо. Но, похоже, вы ошибаетесь: "Для клиента и точки доступа реализована возможность задания начального состояния(включено/выключено) и изменение этого состояния как через Web интерфейс настройки, так и программно (опять-таки с помощью тех же волшебных блоков чтения и записи системных параметров)". Это комментарии автора.
https://flprog.ru/news/obnovlenie-programmy/#more-3851
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Как программно отключить WiFi в ESP8266?

Сообщение aidar_i »

Отключение WiFi и подключения к точке доступа, клиенту разные вещи, или я тоже ошибаюсь?
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref]aidar_i[/ref], да, по идее, не одно и тоже, отключение wifi это отключение приемопередатчика, который, в свою очередь, может работать в 3-х режимах: AP, client, AP+client, которые можно тоже отключать. Меня интересует отключение аппаратной части, но и просто отключить соединение в режиме client не удалось.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Как программно отключить WiFi в ESP8266?

Сообщение Sancho »

Пример, компилируется,[spoiler=из нета]
Две функции ниже все, что вам нужно, чтобы переключить чип WiFi. Огромное преимущество использования заключается в том, что они работают без того, чтобы вызвать ESP.deepsleep() звонок.

Имейте в виду, если вы уже проделали ESP.deepsleep(time, WAKE_RF_DISABLED) это значит, что ваш чип WiFi был отключен вовсе, и вызов WiFiOn() не сможет переключить его обратно. В этом случае вы должны сделать ESP.deepsleep(time, WAKE_RF_DEFAULT). Но после того, как ваш чип WiFi был включен, вы можете вызвать WiFiOn() и WiFiOff() столько раз, сколько вам будет угодно, они будут работать нормально.

Код: Выделить всё

extern "C" {
       #include "user_interface.h"  // Required for wifi_station_connect() to work
}

#include <Arduino.h>
#include <ESP8266WiFi.h>

#define FPM_SLEEP_MAX_TIME 0xFFFFFFF

void WiFiOn();
void WiFiOff();

//------------------------------------------------------------------------------

void setup() {

       WiFiOn();
       delay(5000);
       WiFiOff();
       delay(5000);
       ESP.deepSleep(1e6 * 10, WAKE_RF_DEFAULT); // sleep 10 seconds

}

void loop() {
       ;
}
//------------------------------------------------------------------------------

void WiFiOn() {

       wifi_fpm_do_wakeup();
       wifi_fpm_close();

       //Serial.println("Reconnecting");
       wifi_set_opmode(STATION_MODE);
       wifi_station_connect();
}


void WiFiOff() {

       //Serial.println("diconnecting client and wifi");
       //client.disconnect();
       wifi_station_disconnect();
       wifi_set_opmode(NULL_MODE);
       wifi_set_sleep_type(MODEM_SLEEP_T);
       wifi_fpm_open();
       wifi_fpm_do_sleep(FPM_SLEEP_MAX_TIME);

}
[/spoiler]
Вариант next:
Выкл-
WiFi.mode(WIFI_OFF);
Вкл-
WiFi.mode(WIFI_STA);
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref=#ff8000]Sancho[/ref], спасибо, буду пробовать!

Отправлено спустя 1 час 8 минут 34 секунды:
[ref=#ff8000]Sancho[/ref],
Sancho писал(а): 09 янв 2019, 14:57Вариант next:
Выкл-
WiFi.mode(WIFI_OFF);
Вкл-
WiFi.mode(WIFI_STA);
Как этим воспользоваться, подскажите?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Как программно отключить WiFi в ESP8266?

Сообщение Sancho »

Создаёшь блок, при выборе - CODE.
Обзываешь как нибудь.
Создаёшь вход boolean, например Off_WiFi.
Далее в loop
if(Off_WiFi)WiFi.mode(WIFI_OFF);
Сохраняешь.
Всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref=#ff8000]Sancho[/ref], попробовал, действительно такой способ отключает wifi, спасибо. Одно непонятно, почему потребляемый ток не уменьшается совсем? Это не аппаратное отключение?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Как программно отключить WiFi в ESP8266?

Сообщение Sancho »

[ref]dimonsustr[/ref], Честно не вдавался.
Наверно, стоит попробовать способ 1.

Отправлено спустя 1 минуту 24 секунды:
if(Off_WiFi){
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE);
wifi_set_sleep_type(MODEM_SLEEP_T);
wifi_fpm_open();
wifi_fpm_do_sleep(0xFFFFFFF);
}

Отправлено спустя 1 минуту 57 секунд:
Дерзай, отпишись.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

[ref=#ff8000]Sancho[/ref], результат по способу 1 аналогичен способу 2, ток потребления не уменьшается :buhnut:
судя по документации, в режиме modem_sleep потребление должно быть ~16mA против ~75mA в обычном режиме.
Режим light_sleep мне не подходит, будить нечем.
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

В общем, путем экспериментов, созданы 2 блока: отключения и включения WIFI. Ток потребления в режиме MODEM SLEEP ~20 мА и ESP при этом не соединен с роутером.

Блок отключения:
if(Off_WiFi){
WiFi.forceSleepBegin(); // Wifi off
delay(100);
}


Блок включения:
if(On_WiFi){
WiFi.forceSleepWake(); // Wifi on
delay(100);
}


Грозит ли сия конструкция износом флэш-памяти ESP при частом переключении туда-сюда пока не понял, изучаю.
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

Как программно отключить WiFi в ESP8266?

Сообщение Phazz »

А зачем delay?

Отправлено спустя 1 минуту 27 секунд:
Часто переключать это с какой периодичностью?
Аватара пользователя
dimonsustr
Рядовой
Сообщения: 39
Зарегистрирован: 15 мар 2018, 14:39
Имя: Dima

Как программно отключить WiFi в ESP8266?

Сообщение dimonsustr »

без delay не работало. и в даташитах, и в примерах везде он есть.
периодичность где-то раз в минуту просыпаться, отсылать-собирать данные.
Ardudue
Лейтенант
Сообщения: 418
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Поблагодарили: 3 раза

Как программно отключить WiFi в ESP8266?

Сообщение Ardudue »

[ref]dimonsustr[/ref], блок то удалось сделать?
demonys
Рядовой
Сообщения: 1
Зарегистрирован: 06 апр 2017, 10:29
Откуда: Нижний Новгород
Имя: Дмитрий
Контактная информация:

Как программно отключить WiFi в ESP8266?

Сообщение demonys »

Привет всем а можите скинуть готовые блоки по 3м примерам кода.
Дмитрий Гордеев
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Как программно отключить WiFi в ESP8266?

Сообщение Di123 »

тоже интересно получились ли блоки
а то в програме стоит в настройках точка доступа и клиент отключено но вай фай работает походу ибо простой скеч помигать светодиодом встроеным потребляет 70-80ма !!!
а сам чип заметно тёплый
sergii2012
Сержант
Сообщения: 152
Зарегистрирован: 07 янв 2019, 16:02
Имя: Сергей
Благодарил (а): 5 раз

Как программно отключить WiFi в ESP8266?

Сообщение sergii2012 »

dimonsustr писал(а): 07 фев 2019, 21:49 В общем, путем экспериментов, созданы 2 блока: отключения и включения WIFI. Ток потребления в режиме MODEM SLEEP ~20 мА и ESP при этом не соединен с роутером.

Блок отключения:
if(Off_WiFi){
WiFi.forceSleepBegin(); // Wifi off
delay(100);
}


Блок включения:
if(On_WiFi){
WiFi.forceSleepWake(); // Wifi on
delay(100);
}


Грозит ли сия конструкция износом флэш-памяти ESP при частом переключении туда-сюда пока не понял, изучаю.
выключается а вот включить не получилось.
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость