mirror of
https://github.com/tzapu/WiFiManager.git
synced 2026-04-28 01:25:49 +03:00
[GH-ISSUE #379] Non blocking AP mode #319
Labels
No labels
📶 WiFi
🕸️ HTTP
Branch
DEV Help Wanted
Discussion
Documentation
ESP32
Example
Good First Issue
Hotfix
In Progress
Incomplete
Needs Feeback
Priority
QA
Question
Task
Upstream/Dependancy
bug
duplicate
enhancement
invalid
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/WiFiManager#319
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @git-tiger on GitHub (Jun 28, 2017).
Original GitHub issue: https://github.com/tzapu/WiFiManager/issues/379
I have a project that requires the ESP8266 to startup in access point mode, but the remaining code is blocked till the access point is configured.
Is there any way to continue with the code, and still have access point available in the background?
@synfinatic commented on GitHub (Jun 30, 2017):
I've got the same requirement and from what I can tell, there isn't a way to do this in the current code today.
@ANASOMARY commented on GitHub (Mar 27, 2018):
Hi Guys,
Is this feature added? am really in bad need for this.
@tablatronix commented on GitHub (Mar 27, 2018):
development branch
example
https://github.com/tzapu/WiFiManager/issues/379#issuecomment-405046137
#500
@ANASOMARY commented on GitHub (Mar 27, 2018):
Hi,
Really appreciate your reply.
I did not get the process() part , but if I wanted the code to continue to the loop even after going into AP mode, then should I set setConfigPortalBlocking(false); ?? and in this case I will still get the portal but at the same time the code will continue to the loop function. right?
wifiManager.setAPStaticIPConfig(ip, gateway, subnet);
wifiManager.setAPCallback(configModeCallback);
setConfigPortalBlocking(false);
wifiManager.setSTAStaticIPConfig(lip, lgateway, lsubnet);
if (mdns.begin("STR_Master8004", WiFi.softAPIP()));
if (!wifiManager.autoConnect(const_cast<char*>(mySsid.c_str()), const_cast<char*>(myPassword.c_str()))) {
Serial.println("failed to connect and hit timeout");
connectionFailed = 1;
ESP.reset();
delay(1000);
}
@tablatronix commented on GitHub (Mar 27, 2018):
yes and
process()in your loop@ANASOMARY commented on GitHub (Mar 27, 2018):
void loop()
{
process();
HandleSwitch();
server.handleClient();
delay(10);
}
Thats it??? Oh god thanks Shawn, you really saved my @
. 💯@tablatronix commented on GitHub (Mar 27, 2018):
Yeah I mean its development, and hardly tested...
@ANASOMARY commented on GitHub (Mar 27, 2018):
Oh snap

@tablatronix commented on GitHub (Mar 27, 2018):
https://github.com/tzapu/WiFiManager/issues/500
@ANASOMARY commented on GitHub (Mar 27, 2018):
Thanks Shawn,
does it support generic esp8266? am using a sonoff, and am getting the following when I compile:

@tablatronix commented on GitHub (Mar 27, 2018):
It should, what board?
@ANASOMARY commented on GitHub (Mar 27, 2018):
Sonoff Basic
@tablatronix commented on GitHub (Mar 27, 2018):
I mean what esp board?
@ANASOMARY commented on GitHub (Mar 27, 2018):
esp8266
@tablatronix commented on GitHub (Mar 27, 2018):
esp8266 which one?
esp01?
esp12e?
@ANASOMARY commented on GitHub (Mar 27, 2018):
ESP8266 V4.1
@ANASOMARY commented on GitHub (Mar 27, 2018):
Hi Shawn,
my mistake, instead of Process() I should have put wifiManager.process(); same for setConfigPortalBlocking
It is compiling with no errors now.
Thanks again.
@ANASOMARY commented on GitHub (Mar 27, 2018):
Am Sorry Shawn, But I was using the wrong library, am still getting the same compilation error for generic esp8266

@ANASOMARY commented on GitHub (Mar 27, 2018):
This is strange... I tried compiling for a different board, and am getting the same error!

Update: it is not compiling for any board now. Please help!
@tablatronix commented on GitHub (Mar 27, 2018):
You are gonna have to turn on verbose compilation warnings or whatever adruino has to show some actual info
@tablatronix commented on GitHub (Mar 27, 2018):
https://github.com/tzapu/WiFiManager/issues/524
@hassasian commented on GitHub (Apr 19, 2018):
@ANASOMARY you should update your board software from board manager. You should use 2.4.1 or newer one.
@hassasian commented on GitHub (Apr 19, 2018):
@tablatronix thx for ur help. But I have one more question. Our esp connected to an router. After that I close the router. Then as suppose our esp come back to AP mode. When I connected ap of esp, it cannot handle http requests. Sorry for bad eng.
@tablatronix commented on GitHub (Apr 19, 2018):
not sure i understand
@hassasian commented on GitHub (Apr 19, 2018):
Give me one more shot to explain it :) I have a esp8266 module. I'm using wifimanager development branch for nonblocking ap mode. its working great. Congrats. My problem is that ; when esp cannot access the router which esp connected before it come back to access mode as expected. And I connect the AutoConnectAP with my computer to configure my esp for another router. But esp cannot answer my http request.
@hassasian commented on GitHub (Apr 19, 2018):
in addition if you reset your router which esp connected. Esp disconnected from router and enabling its ap. After your router started. Esp connect the router succesfully but esp dont close its ap. Briefly if you restart your router, your esp will enable its ap mode. After your router come back esp will connect it but dont close its ap.
@tablatronix commented on GitHub (Apr 19, 2018):
Yeah the ap stays running, the portal only runs if you reboot.
The ap is not supposed to stay running, thats probably a bug
@hassasian commented on GitHub (Apr 19, 2018):
Hmm so that means if our router stop working we need to restart our esp physically? Or can we understand that esp disconnected from router. For restarting programmatically.
@tablatronix commented on GitHub (Apr 19, 2018):
The esp should reconnect by itself , that is part of esp library, not wm
@hassasian commented on GitHub (Apr 19, 2018):
I got it I mean do we have a callback function for understanding when it connects a router?
@tablatronix commented on GitHub (Apr 19, 2018):
No, but you can use the esp events
@imsyf commented on GitHub (May 12, 2018):
@tablatronix
How do we break from
WiFiManager::startConfigPortalloop when the board successfully reconnected to Wi-Fi by itself due to ESP8266 library's funtionality as you implied?Because in my experience, I'm able to identify when it actually happens thanks to WiFiEvent callback, but the process wouldn't immediately escape to
loopfuntion, not until WiFiManager timeout@tablatronix commented on GitHub (May 12, 2018):
I do not think this is handled automatically, since when in configportal usually STA mode is disabled so AP mode works properly.
It is not wise, to do so ( leave sta mode on ) , and has been updated in hotfixes branch and development as such. If STA is failing it makes AP mode very unstable.
But if you wanted to, in development branch , (if you hardcode channel for stability and leave sta on), you can call
stopConfigPortalat any time.@Kirk-1 commented on GitHub (Jun 15, 2018):
Hi @tablatronix, Thanks for all your work on this.
I had AutoConnect working in non-blocking mode beautifully for a while. Now I am having an issue with:
W (84) wifi: wifi nvs_open fail ret=4353
E (84) wifi: wifi_init 1410 ret=4353
So now it seems it wont save the ssid and password once entered in the portal. I am wondering if you could shed any light on this. Perhaps nvs_init() needs to be called somewhere..?
Any help greatly appreciated!
Cheers,
Kirkland
@tablatronix commented on GitHub (Jun 15, 2018):
Is this an esp32 or eps8266?
@Kirk-1 commented on GitHub (Jun 15, 2018):
ESP32 Wrover
@tablatronix commented on GitHub (Jun 15, 2018):
Try erasing nvs, there was a bug in esp32 lib a while ago.
You can find instructions in esp32 issues.
@Kirk-1 commented on GitHub (Jun 15, 2018):
Tried using pytool to erase. Tried using nvs_erase in sketch. Tried nvs_init at start of setup. Tried updating esp libraries. Tried the specific Webserver library recommended.
I use wifimanager.process() until I have a connection, then I swap over to serving a web page from within the sketch. So I have an instance of WiFi client, mdns and webserver in the sketch also. Perhaps this is the source of the problem. It was working fine but now this nvs issue. I will keep hunting... Thankyou. Cheers, Kirk
@tablatronix commented on GitHub (Jun 16, 2018):
You can try enabling debug compile flags.
@tablatronix commented on GitHub (Jun 16, 2018):
You might be calling something before wifi_init gets called.
Are you doing a printdiag() or anything ?
@Kirk-1 commented on GitHub (Jun 18, 2018):
Thanks again. It seems the problem occurs when I declare an instance of WiFiManager globally. I need to use wifiManager.process() in my loop and so it wont compile unless I declare wifiManager in the loop. But declaring and redeclaring wifiManager continuously in the loop isn't going to work either. I noticed that the same error occurs in the "OnDemandConfigPortal" example because, it would seem, the WiFiManager is declared globally. I am using the development version of WIFiManager.
@Kirk-1 commented on GitHub (Jun 18, 2018):
Can I enable debug compile flags easily using Arduino?
@tablatronix commented on GitHub (Jun 18, 2018):
I think there is a menu in board settings debug level
@tablatronix commented on GitHub (Jun 18, 2018):
ok I think I know what the problem might be.
I assume you are using the latest esp32 also ?
@tablatronix commented on GitHub (Jun 18, 2018):
esp32 introduced some new bugs, I just fixed them ( or rather worked around them )
Give it a try now.
The wifimanager constructor calls
getmode (causing the nvs_open failure error )
and persistent(false) which when called before esp32 calls wifiLowLevelInit(_persistent) now turns off flash storage of persistent, even if you change it later.
@Kirk-1 commented on GitHub (Jun 19, 2018):
That did it! Thank you very much!
@xserg commented on GitHub (Jun 28, 2018):
@tablatronix Hi! Can you pls add some example for non- blocking case?
@tablatronix commented on GitHub (Jun 28, 2018):
You can check the ondemandwebportal example
@xserg commented on GitHub (Jun 28, 2018):
Have an issue with wifisave - it crashes esp on develop branch, on master it ok. tested on Nodemcu esp12 and D1 R1 mini
wifisave page time outed, credentials not saved
@tablatronix commented on GitHub (Jun 28, 2018):
what esp version?
Which example?
@xserg commented on GitHub (Jun 28, 2018):
esp 2.4.1,
esp 12f nodemcu
autoconnect example and my scetch works the same, cant save setting and cant open wifisave from info page
Thanks
@tablatronix commented on GitHub (Jun 28, 2018):
do you get a exception or dump?
@xserg commented on GitHub (Jun 29, 2018):
WM: <- HTTP WiFi save
WM: Parameters
WM: --------------------
WM: server: mqtt.****
*WM: port: 1883
*WM: username: **********
*WM: password: ***********
*WM: --------------------
Exception (3):
epc1=0x40217eb8 epc2=0x00000000 epc3=0x00000000 excvaddr=0x402521a2 depc=0x00000000
ctx: cont
sp: 3fff0860 end: 3fff0e10 offset: 01a0
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
@vaz83 commented on GitHub (Jul 13, 2018):
Hi, i have a nodeMCU board, parameters work fine without setting the wifiManager no nonblocking. Once i set it to true, it gives exception (3) as resets. Seems that when adding custom parameters is not compatible with nonblocking option. Are you guys fixing this? thanks
@tablatronix commented on GitHub (Jul 14, 2018):
Cant fix if I cant reproduce.
Make a new issue with small example.
@tablatronix commented on GitHub (Jul 14, 2018):
I will test some more
@tablatronix commented on GitHub (Jul 14, 2018):
I added some overflow fixes try now
@vaz83 commented on GitHub (Jul 14, 2018):
Will try now and let you know.
@vaz83 commented on GitHub (Jul 14, 2018):
Hi tablatronix, i've just tested, not working, now, even the parameters are not showing up, this is my code:
Now, even if you take the setConfigPortalBlocking, the parameters are no longer showing up.
In the serial I got this:
*WM: <- Request redirected to captive portal
*WM: <- HTTP Root
*WM: Scan is cached
*WM: <- HTTP Wifi
*WM: Scan is cached
*WM: 1 networks found
*WM: AP: -35 V@Z Wifi
*WM: [ERROR] WiFiManagerParameter is out of scope
*WM: <- Request redirected to captive portal
*WM: <- HTTP Root
*WM: Scan is cached
@tablatronix commented on GitHub (Jul 14, 2018):
*WM: [ERROR] WiFiManagerParameter is out of scopeThere you go
Your wifiparameter objects need to be global or in scope, once setup exits, the references are broken.
If anyone has better ideas how to do this, I am open to it.
You can make your parameters static, or define them outside of
setup@vaz83 commented on GitHub (Jul 14, 2018):
Hi Tablatronix,
I have done what you said (put the variabes global at the beggining), the error still persists. Like I said, even if I comment the setConfigPortalBlocking(false), no parameters are shown and error *WM: [ERROR] WiFiManagerParameter is out of scope is shown. with the version of WM i had from yesterday it was working fine.
@tablatronix commented on GitHub (Jul 14, 2018):
works for me
@vaz83 commented on GitHub (Jul 14, 2018):
this is giving *WM: [ERROR] WiFiManagerParameter is out of scope .. Am I doing something wrong?
@tablatronix commented on GitHub (Jul 14, 2018):
testing
@tablatronix commented on GitHub (Jul 14, 2018):
I dont see it
@tablatronix commented on GitHub (Jul 14, 2018):
I am on esp32, should I test on 8266 also ?
@vaz83 commented on GitHub (Jul 14, 2018):
Can you please try on the 8266? Is the one I am using
@tablatronix commented on GitHub (Jul 15, 2018):
Will do
@vaz83 commented on GitHub (Jul 15, 2018):
Hi tablatronix, were you able to test it on the esp8266 ? Parameters are not showing up :(
@tablatronix commented on GitHub (Jul 15, 2018):
Yeah works fine there as well.
@vaz83 commented on GitHub (Jul 16, 2018):
It's working only with the version I had from last Friday, when I download the newer version it doesn't work
@tablatronix commented on GitHub (Jul 16, 2018):
This was just patched this morning, there was a bug if you were not setting a default value, maybe that was causing an issue.
@xserg commented on GitHub (Aug 19, 2018):
Hi!
Thank you much for patching, it works fine now. Can you pls check setConfigPortalTimeout with setConfigPortalBlocking(false);
The issue when config portal never disconnected.
In case the router switched off, and esp rebooted in this time, config portal will start and never disconnected after time out and router up. (esp8266 12)
Thanks
@tablatronix commented on GitHub (Aug 19, 2018):
setConfigPortalTimeout is not implemented when configPortal is non blocking, because you are in control of it, and can stop it when you want
@xserg commented on GitHub (Sep 24, 2018):
Thank you much for work, It seems in the example, onDemandNonBlocking, setConfigPortalBlocking(false); missing...
@xserg commented on GitHub (Oct 3, 2018):
Hi @tablatronix, how to setup ap name in noblocking without autoconnect? tnx
@tablatronix commented on GitHub (Oct 3, 2018):
You mean on demand?
Same arguments to startconfogportal as autoconnect
@tablatronix commented on GitHub (Jan 20, 2019):
can this be closed?
@vaz83 commented on GitHub (Jan 20, 2019):
Yes
@faizakbar18 commented on GitHub (May 20, 2019):
I try using this code,
#500
and get error like this:
how to fix it?
NodeMCU v3