Как программно отключить WiFi в ESP8266?
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
Всем мое почтение! Никак не могу добиться отключения WiFi в ESP8266 на время. Версия 4.2.2 portable. Делаю через "Запись системного параметра - WiFi клиент-Состояние", пишу туда false или 0, без разницы, ничего не происходит. Проверяю одновременно чтением этот системный параметр, данные меняются в нем. А WiFi как работал, так и работает. Может, что-то делаю не так? Задача чтобы ESP работала постоянно, без deep sleep, лишь иногда включая wifi и синхронизировалась с mqtt, и снова в спячку.
Как программно отключить WiFi в ESP8266?
[ref]dimonsustr[/ref], ну и конечно Ваш проект тайна тайн.
Так помощи не дождетесь.
Или хотите что бы Вам проект нарисовали?
Так помощи не дождетесь.
Или хотите что бы Вам проект нарисовали?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
☆Альберт Эйнштейн
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
[ref]AVGN[/ref], проект мне рисовать не надо. У меня частный вопрос, только начал с ESP работать. MQTT настроен, работает, статус соединения WiFi меняется. Также проверял статус соединения клиента WiFi в web-странице, там тоже все меняется. Получается, значение параметра "WiFi клиент - Состояние" не влияет на включение-отключение wifi?


-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Как программно отключить WiFi в ESP8266?
Может заблуждаюсь, но это параметр только для индикации состояния.dimonsustr писал(а): 08 янв 2019, 18:13Делаю через "Запись системного параметра - WiFi клиент-Состояние", пишу туда false или 0, без разницы, ничего не происходит.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
[ref]Ingwar[/ref], спасибо. Но, похоже, вы ошибаетесь: "Для клиента и точки доступа реализована возможность задания начального состояния(включено/выключено) и изменение этого состояния как через Web интерфейс настройки, так и программно (опять-таки с помощью тех же волшебных блоков чтения и записи системных параметров)". Это комментарии автора.
https://flprog.ru/news/obnovlenie-programmy/#more-3851
https://flprog.ru/news/obnovlenie-programmy/#more-3851
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Как программно отключить WiFi в ESP8266?
Отключение WiFi и подключения к точке доступа, клиенту разные вещи, или я тоже ошибаюсь?
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
[ref]aidar_i[/ref], да, по идее, не одно и тоже, отключение wifi это отключение приемопередатчика, который, в свою очередь, может работать в 3-х режимах: AP, client, AP+client, которые можно тоже отключать. Меня интересует отключение аппаратной части, но и просто отключить соединение в режиме client не удалось.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как программно отключить WiFi в ESP8266?
Пример, компилируется,[spoiler=из нета]
Две функции ниже все, что вам нужно, чтобы переключить чип WiFi. Огромное преимущество использования заключается в том, что они работают без того, чтобы вызвать ESP.deepsleep() звонок.
Имейте в виду, если вы уже проделали ESP.deepsleep(time, WAKE_RF_DISABLED) это значит, что ваш чип WiFi был отключен вовсе, и вызов WiFiOn() не сможет переключить его обратно. В этом случае вы должны сделать ESP.deepsleep(time, WAKE_RF_DEFAULT). Но после того, как ваш чип WiFi был включен, вы можете вызвать WiFiOn() и WiFiOff() столько раз, сколько вам будет угодно, они будут работать нормально.[/spoiler]
Вариант next:
Выкл-
WiFi.mode(WIFI_OFF);
Вкл-
WiFi.mode(WIFI_STA);
Две функции ниже все, что вам нужно, чтобы переключить чип 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);
}
Вариант next:
Выкл-
WiFi.mode(WIFI_OFF);
Вкл-
WiFi.mode(WIFI_STA);
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
[ref=#ff8000]Sancho[/ref], спасибо, буду пробовать!
Отправлено спустя 1 час 8 минут 34 секунды:
[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?
Создаёшь блок, при выборе - CODE.
Обзываешь как нибудь.
Создаёшь вход boolean, например Off_WiFi.
Далее в loop
if(Off_WiFi)WiFi.mode(WIFI_OFF);
Сохраняешь.
Всё.
Обзываешь как нибудь.
Создаёшь вход boolean, например Off_WiFi.
Далее в loop
if(Off_WiFi)WiFi.mode(WIFI_OFF);
Сохраняешь.
Всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
[ref=#ff8000]Sancho[/ref], попробовал, действительно такой способ отключает wifi, спасибо. Одно непонятно, почему потребляемый ток не уменьшается совсем? Это не аппаратное отключение?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как программно отключить WiFi в ESP8266?
[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 секунд:
Дерзай, отпишись.
Наверно, стоит попробовать способ 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?
[ref=#ff8000]Sancho[/ref], результат по способу 1 аналогичен способу 2, ток потребления не уменьшается 
судя по документации, в режиме modem_sleep потребление должно быть ~16mA против ~75mA в обычном режиме.
Режим light_sleep мне не подходит, будить нечем.

судя по документации, в режиме modem_sleep потребление должно быть ~16mA против ~75mA в обычном режиме.
Режим light_sleep мне не подходит, будить нечем.
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
В общем, путем экспериментов, созданы 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 при частом переключении туда-сюда пока не понял, изучаю.
Блок отключения:
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?
А зачем delay?
Отправлено спустя 1 минуту 27 секунд:
Часто переключать это с какой периодичностью?
Отправлено спустя 1 минуту 27 секунд:
Часто переключать это с какой периодичностью?
- dimonsustr
- Рядовой
- Сообщения: 39
- Зарегистрирован: 15 мар 2018, 14:39
- Имя: Dima
Как программно отключить WiFi в ESP8266?
без delay не работало. и в даташитах, и в примерах везде он есть.
периодичность где-то раз в минуту просыпаться, отсылать-собирать данные.
периодичность где-то раз в минуту просыпаться, отсылать-собирать данные.
-
- Рядовой
- Сообщения: 1
- Зарегистрирован: 06 апр 2017, 10:29
- Откуда: Нижний Новгород
- Имя: Дмитрий
- Контактная информация:
Как программно отключить WiFi в ESP8266?
Привет всем а можите скинуть готовые блоки по 3м примерам кода.
Дмитрий Гордеев
Как программно отключить WiFi в ESP8266?
тоже интересно получились ли блоки
а то в програме стоит в настройках точка доступа и клиент отключено но вай фай работает походу ибо простой скеч помигать светодиодом встроеным потребляет 70-80ма !!!
а сам чип заметно тёплый
а то в програме стоит в настройках точка доступа и клиент отключено но вай фай работает походу ибо простой скеч помигать светодиодом встроеным потребляет 70-80ма !!!
а сам чип заметно тёплый
-
- Сержант
- Сообщения: 152
- Зарегистрирован: 07 янв 2019, 16:02
- Имя: Сергей
- Благодарил (а): 5 раз
Как программно отключить WiFi в ESP8266?
выключается а вот включить не получилось.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 гость