I've been studying the ESP-IDF and been reading about "esp_wifi_esp_set_autoconnect". If I understood this concept from the ESP8266, we could set our boot mode and access point details once and have the ESP8266 save them in flash memory. Then, if we chose, the next (and subsequent) times that the ESP8266 booted, it would use those saved parameters to connect to an access point when in STA or STA+AP modes. Looking at the ESP-IDF, I see functions to enable or disable the ability to autoconnect at what I am assuming to be ESP32 boot time but I'm not seeing any corresponding functions to save/set what the properties it should use to connect. Does anyone have any knowledge or references in this area?
Later ... I may have found the answer. Looking further, I see the method called esp_wifi_set_storage() which can take as a parameter either WIFI_STORAGE_FLASH or WIFI_STORAGE_RAM. If we set this to be WIFI_STORAGE_FLASH then the settings that we may set using esp_wifi_set_config() will be stored in BOTH flash and RAM while if we set this value to be WIFI_STORAGE_RAM, we will ONLY set the current configuration in RAM. My guess is that the values that we set in storage flash are the values used during an autoconnect. This is a guess ... but it would seem to work about right in theory.
[Answered] How to use esp_wifi_set_auto_connect()?
[Answered] How to use esp_wifi_set_auto_connect()?
Free book on ESP32 available here: https://leanpub.com/kolban-ESP32
Re: [Answered] How to use esp_wifi_set_auto_connect()?
That seems to make sense. Has anyone got this to work?
-
- Posts: 8
- Joined: Sun Apr 02, 2017 4:50 am
Re: [Answered] How to use esp_wifi_set_auto_connect()?
Yes - we use this in the esp32 port of espruino.
From memory, there is also a menuconfig option to store in nvs, so you don't need a phy partition to store the data, nvs is used instead.
From memory, there is also a menuconfig option to store in nvs, so you don't need a phy partition to store the data, nvs is used instead.
-
- Posts: 60
- Joined: Mon Jun 26, 2017 5:36 am
Re: [Answered] How to use esp_wifi_set_auto_connect()?
can you please provide more details on how its done? I want to do this. store the wifi details and retrive it every time I restart.
Thanks.
Re: [Answered] How to use esp_wifi_set_auto_connect()?
Me too. I would like to see an example where autoconnect works and I do not need to manually set a/p credentials and static IP.
My experience is that I must issue a esp_wifi_connect() or a connection does not happen. The only callback I see is SYSTEM_EVENT_STA_START. I must be doing something wrong. My test logic looks like this (some detail omitted):
I hoped that I do not need to do any of this on a warm start (wakeup), not even start the adapter and wifi. If I do not set IP info then I see dhcp requests.
My experience is that I must issue a esp_wifi_connect() or a connection does not happen. The only callback I see is SYSTEM_EVENT_STA_START. I must be doing something wrong. My test logic looks like this (some detail omitted):
Code: Select all
nvs_flash_init();
tcpip_adapter_init();
esp_event_loop_init(event_handler, NULL);
esp_wifi_init(&cfg);
if this is a cold start
esp_wifi_set_storage(WIFI_STORAGE_FLASH);
tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA);
// set up ssid/pwd/ip/mask/gw/autoconnect:
tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &ip_info_new);
esp_wifi_set_mode(WIFI_MODE_STA);
esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config);
esp_wifi_set_auto_connect(true);
esp_wifi_start();
esp_wifi_connect(); // needed?
else
esp_wifi_start();
Re: [Answered] How to use esp_wifi_set_auto_connect()?
I fiddled around with the esp_wifi_set_auto_connect() function,
it is true per default, but I don't see any distinction between true or false.
to start the wifi it needs always:
esp_wifi_init
esp_wifi_set_mode (only if not stored in NVS)
esp_wifi_set_config (only if not stored in NVS)
esp_wifi_start
esp_wifi_connect
when the ssid/pw is stored in NVS via esp_wifi_set_storage(WIFI_STORAGE_FLASH) you can skip
,esp_wifi_set_mode and esp_wifi_set_config
not sure to me what that function does,
I thought I could save a little bit time, coming from deep sleep, bring up the wifi again,
but doesn't seems to be, takes always about 1 sec, too long for battery powered applications
Regards,
grooves
it is true per default, but I don't see any distinction between true or false.
to start the wifi it needs always:
esp_wifi_init
esp_wifi_set_mode (only if not stored in NVS)
esp_wifi_set_config (only if not stored in NVS)
esp_wifi_start
esp_wifi_connect
when the ssid/pw is stored in NVS via esp_wifi_set_storage(WIFI_STORAGE_FLASH) you can skip
,esp_wifi_set_mode and esp_wifi_set_config
not sure to me what that function does,
I thought I could save a little bit time, coming from deep sleep, bring up the wifi again,
but doesn't seems to be, takes always about 1 sec, too long for battery powered applications
Regards,
grooves
Who is online
Users browsing this forum: No registered users and 109 guests