From 7ce79028578f543a7523847fb6317270de60bc74 Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Sat, 24 Apr 2021 21:57:29 -0400 Subject: [PATCH] v1.5.0 to enable scan of WiFi networks ### Major Release v1.5.0 1. Enable scan of WiFi networks for selection in Configuration Portal. Check [PR for v1.3.0 - Enable scan of WiFi networks #10](https://github.com/khoih-prog/WiFiManager_NINA_Lite/pull/10). Now you can select optional **SCAN_WIFI_NETWORKS**, **MANUAL_SSID_INPUT_ALLOWED** to be able to manually input SSID, not only from a scanned SSID lists and **MAX_SSID_IN_LIST** (from 2-6 for ESP8266-AT or 2-15 for other) 2. Minor enhancement to not display garbage when data is invalid --- README.md | 210 ++++++++++++++- examples/ESP_WiFi/ESP_WiFi.ino | 3 +- examples/ESP_WiFi/defines.h | 10 + examples/ESP_WiFi_MQTT/ESP_WiFi_MQTT.ino | 3 +- examples/ESP_WiFi_MQTT/defines.h | 10 + library.json | 2 +- pics/Input.png | Bin 28146 -> 35476 bytes pics/Input_With_Scan.png | Bin 0 -> 34847 bytes pics/Main.png | Bin 36716 -> 29118 bytes src/ESP_WiFiManager_Lite.h | 326 ++++++++++++++++++++++- src/ESP_WiFiManager_Lite_Debug.h | 3 +- 11 files changed, 536 insertions(+), 31 deletions(-) create mode 100644 pics/Input_With_Scan.png diff --git a/README.md b/README.md index 812bc3a..64425e8 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ * [Features](#features) * [Currently supported Boards](#currently-supported-boards) * [Changelog](#changelog) + * [Major Release v1.5.0](#major-release-v150) * [Release v1.4.0](#release-v140) * [Release v1.3.0](#release-v130) * [Release v1.2.0](#release-v120) @@ -59,6 +60,12 @@ * [9. To use custom Head Elements](#9-to-use-custom-head-elements) * [10. To use CORS Header](#10-to-use-cors-header) * [11. To use and input only one set of WiFi SSID and PWD](#11-to-use-and-input-only-one-set-of-wifi-ssid-and-pwd) + * [11.1 If you need to use and input only one set of WiFi SSID/PWD](#111-if-you-need-to-use-and-input-only-one-set-of-wifi-ssidpwd) + * [11.2 If you need to use both sets of WiFi SSID/PWD](#112-if-you-need-to-use-both-sets-of-wifi-ssidpwd) + * [12. To enable auto-scan of WiFi networks for selection in Configuration Portal](#12-to-enable-auto-scan-of-wifi-networks-for-selection-in-configuration-portal) + * [12.1 Enable auto-scan of WiFi networks for selection in Configuration Portal](#121-enable-auto-scan-of-wifi-networks-for-selection-in-configuration-portal) + * [12.2 Disable manually input SSIDs](#122-disable-manually-input-ssids) + * [12.3 Select maximum number of SSIDs in the list](#123-select-maximum-number-of-ssids-in-the-list) * [Examples](#examples) * [ 1. ESP_WiFi](examples/ESP_WiFi) * [ 2. ESP_WiFi_MQTT](examples/ESP_WiFi_MQTT) @@ -90,7 +97,10 @@ * [3.3 Lost a WiFi and autoconnect to another WiFi AP](#33-lost-a-wifi-and-autoconnect-to-another-wifi-ap) * [4. ESP_WiFi_MQTT on ESP32S2_DEV to demo MultiResetDetector](#4-esp_wifi_mqtt-on-esp32s2_dev-to-demo-multiresetdetector) * [4.1 MultiResetDetected => Open Config Portal](#41-multiresetdetected--open-config-portal) - * [4.2 Got valid Credentials from Config Portal then connected to WiFi](#42-got-valid-credentials-from-config-portal-then-connected-to-wifi) + * [4.2 Got valid Credentials from Config Portal then connected to WiFi](#42-got-valid-credentials-from-config-portal-then-connected-to-wifi) + * [5. ESP_WiFi_MQTT on ESP32_DEV to demo WiFi Scan](#5-esp_wifi_mqtt-on-esp32_dev-to-demo-wifi-scan) + * [5.1 MRD/DRD => Open Config Portal](#51-mrddrd--open-config-portal) + * [5.2 Config Data Saved => Connection to Adafruit MQTT](#52-config-data-saved--connection-to-adafruit-mqtt) * [Debug](#debug) * [Troubleshooting](#troubleshooting) * [Releases](#releases) @@ -135,20 +145,28 @@ New recent features: - Control Config Portal from software or Virtual Switches - To permit autoreset after configurable timeout if DRD/MRD or non-persistent forced-CP - Use new ESP32 LittleFS features +- **Scan WiFi networks** for selection in Configuration Portal #### Currently supported Boards This [**ESP_WiFiManager_Lite** library](https://github.com/khoih-prog/ESP_WiFiManager_Lite) currently supports these following boards: - 1. **ESP32 including ESP32-S2 (ESP32-S2 Saola, AI-Thinker ESP-12K, etc.)** - 2. **ESP8266** + 1. **ESP8266 and ESP32-based boards using EEPROM, SPIFFS or LittleFS**. + 2. **ESP32-S2 (ESP32-S2 Saola, AI-Thinker ESP-12K, etc.) using EEPROM, SPIFFS or LittleFS**. + 3. **ESP32-C3 (ARDUINO_ESP32C3_DEV) using EEPROM or SPIFFS**. --- --- ## Changelog +### Major Release v1.5.0 + +1. Enable scan of WiFi networks for selection in Configuration Portal. Check [PR for v1.3.0 - Enable scan of WiFi networks #10](https://github.com/khoih-prog/WiFiManager_NINA_Lite/pull/10). Now you can select optional **SCAN_WIFI_NETWORKS**, **MANUAL_SSID_INPUT_ALLOWED** to be able to manually input SSID, not only from a scanned SSID lists and **MAX_SSID_IN_LIST** (from 2-6 for ESP8266-AT or 2-15 for other) +2. Minor enhancement to not display garbage when data is invalid + + ### Release v1.4.0 1. Add **LittleFS and SPIFFS** support to new **ESP32-S2** boards (**Arduino ESP32C3_DEV**). Check [HOWTO Install esp32 core for ESP32-S2 (Saola, AI-Thinker ESP-12K) and ESP32-C3 boards into Arduino IDE](#howto-install-esp32-core-for-esp32-s2-saola-ai-thinker-esp-12k-and-esp32-c3-boards-into-arduino-ide). @@ -628,7 +646,7 @@ Once Credentials / WiFi network information is saved in the host non-volatile me #### 11. To use and input only one set of WiFi SSID and PWD -#### If you need to use and input only one set of WiFi SSID/PWD. +#### 11.1 If you need to use and input only one set of WiFi SSID/PWD ``` // Permit input only one set of WiFi SSID/PWD. The other can be "NULL or "blank" @@ -637,7 +655,7 @@ Once Credentials / WiFi network information is saved in the host non-volatile me ``` But it's always advisable to use and input both sets for reliability. -#### If you need to use both sets of WiFi SSID/PWD +#### 11.2 If you need to use both sets of WiFi SSID/PWD ``` // Permit input only one set of WiFi SSID/PWD. The other can be "NULL or "blank" @@ -645,6 +663,37 @@ But it's always advisable to use and input both sets for reliability. #define REQUIRE_ONE_SET_SSID_PW false ``` +#### 12. To enable auto-scan of WiFi networks for selection in Configuration Portal + +#### 12.1 Enable auto-scan of WiFi networks for selection in Configuration Portal + + +``` +#define SCAN_WIFI_NETWORKS true +``` + +The manual input of SSIDs is default enabled, so that users can input arbitrary SSID, not only from the scanned list. This is for the sample use-cases in which users can input the known SSIDs of another place, then send the boards to that place. The boards can connect to WiFi without users entering Config Portal to re-configure. + +#### 12.2 Disable manually input SSIDs + +``` +// To disable manually input SSID, only from a scanned SSID lists +#define MANUAL_SSID_INPUT_ALLOWED false +``` + +This is for normal use-cases in which users can only select an SSID from a scanned list of SSIDs to avoid typo mistakes and/or security. + +#### 12.3 Select maximum number of SSIDs in the list + +The maximum number of SSIDs in the list is seletable from 2 to 15. If invalid number of SSIDs is selected, the default number of 10 will be used. + + +``` +// From 2-15 +#define MAX_SSID_IN_LIST 8 +``` + + --- --- @@ -668,10 +717,28 @@ After you connected, please, go to http://192.168.4.1 or newly configured AP IP, Enter your credentials, +### 1. Without SCAN_WIFI_NETWORKS + +Enter your credentials, + +

+ +

+ +or +

+### 2. With SCAN_WIFI_NETWORKS + + +

+ +

+ + then click `Save`.

@@ -1125,6 +1192,16 @@ void loop() ///////////////////////////////////////////// +#define SCAN_WIFI_NETWORKS true + +// To be able to manually input SSID, not from a scanned SSID lists +#define MANUAL_SSID_INPUT_ALLOWED true + +// From 2-15 + #define MAX_SSID_IN_LIST 8 + +///////////////////////////////////////////// + #include #if ESP8266 @@ -1317,7 +1394,7 @@ This is the terminal output when running [**ESP_WiFi**](examples/ESP_WiFi) examp ``` Starting ESP_WiFi using LittleFS on ESP32_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFC0003 multiResetDetectorFlag = 0xFFFC0003 @@ -1388,7 +1465,7 @@ FFFFFFFFF ``` Starting ESP_WiFi using LittleFS on ESP32_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1460,7 +1537,7 @@ This is the terminal output when running [**ESP_WiFi_MQTT**](examples/ESP_WiFi_M ``` Starting ESP_WiFi_MQTT using LittleFS on ESP8266_NODEMCU -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1535,7 +1612,7 @@ NNN Starting ESP_WiFi_MQTT using LittleFS on ESP8266_NODEMCU -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1627,7 +1704,7 @@ This is the terminal output when running [**ESP_WiFi_MQTT**](examples/ESP_WiFi_M ``` Starting ESP_WiFi_MQTT using LittleFS on ESP32S2_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1740,7 +1817,7 @@ entry 0x4004c190 Starting ESP_WiFi_MQTT using LittleFS on ESP32S2_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1842,7 +1919,7 @@ This is the terminal output when running [**ESP_WiFi_MQTT**](examples/ESP_WiFi_M ``` Starting ESP_WiFi_MQTT using LittleFS on ESP32S2_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFC0003 multiResetDetectorFlag = 0xFFFC0003 @@ -1870,7 +1947,7 @@ NNNN NNNNN NNNNN NNNNN NN[WML] h:UpdLittleFS ``` Starting ESP_WiFi_MQTT using LittleFS on ESP32S2_DEV -ESP_WiFiManager_Lite v1.4.0 +ESP_WiFiManager_Lite v1.5.0 ESP_MultiResetDetector v1.1.1 LittleFS Flag read = 0xFFFE0001 multiResetDetectorFlag = 0xFFFE0001 @@ -1916,6 +1993,98 @@ AIO_SUB_TOPIC = /feeds/LED_Control TWTWTWTW TWTWTWTWTW TWTW ``` +--- + +### 5. [ESP_WiFi_MQTT](examples/ESP_WiFi_MQTT) on ESP32_DEV to demo WiFi Scan + +This is the terminal output when running [**ESP_WiFi**](examples/ESP_WiFi) example on **ESP32_DEV** with WiFi Scan for selection in Configuration Portal + +#### 5.1. MRD/DRD => Open Config Portal + +``` +Starting ESP_WiFi_MQTT using LittleFS on ESP32_DEV +ESP_WiFiManager_Lite v1.5.0 +ESP_MultiResetDetector v1.1.1 +LittleFS Flag read = 0xFFFC0003 +multiResetDetectorFlag = 0xFFFC0003 +lowerBytes = 0x0003, upperBytes = 0x0003 +multiResetDetected, number of times = 3 +Saving config file... +Saving config file OK +[WML] Hdr=ESP_WM_LITE,SSID=HueNet1,PW=12345678 +[WML] SSID1=HueNet2,PW1=12345678 +[WML] BName=ESP32_DEV +[WML] Hdr=ESP_WM_LITE,SSID=HueNet1,PW=12345678 +[WML] SSID1=HueNet2,PW1=12345678 +[WML] BName=ESP32_DEV +[WML] WiFi networks found: +[WML] 1: HueNet, -24dB +[WML] 2: HueNet1, -31dB +[WML] 3: HueNetTek, -33dB +[WML] 4: dragino-1ed63c, -33dB +[WML] 5: HueNet2, -57dB +[WML] 6: bacau, -72dB +[WML] 7: guest_24, -72dB +[WML] 8: Waterhome, -91dB +[WML] 9: BAHFAMILY, -93dB +[WML] 10: TP-LINK_2.4GHz_9A67ED, -94dB +[WML] 11: Access 2.0, -96dB +[WML] +stConf:SSID=ESP_9ABF498,PW=MyESP_9ABF498 +[WML] IP=192.168.4.1,ch=11 +N +Your stored Credentials : +AIO_SERVER = io.adafruit.com +AIO_SERVERPORT = 1883 +AIO_USERNAME = private +AIO_KEY = private +AIO_PUB_TOPIC = /feeds/Temperature +AIO_SUB_TOPIC = /feeds/LED_Control +N +``` + +### 2. Config Data Saved => Connection to Adafruit MQTT + +``` +Starting ESP_WiFi_MQTT using LittleFS on ESP32_DEV +ESP_WiFiManager_Lite v1.5.0 +ESP_MultiResetDetector v1.1.1 +LittleFS Flag read = 0xFFFE0001 +multiResetDetectorFlag = 0xFFFE0001 +lowerBytes = 0x0001, upperBytes = 0x0001 +No multiResetDetected, number of times = 1 +LittleFS Flag read = 0xFFFE0001 +Saving config file... +Saving config file OK +[WML] Hdr=ESP_WM_LITE,SSID=HueNet1,PW=12345678 +[WML] SSID1=HueNet2,PW1=12345678 +[WML] BName=ESP32_DEV +[WML] Hdr=ESP_WM_LITE,SSID=HueNet1,PW=12345678 +[WML] SSID1=HueNet2,PW1=12345678 +[WML] BName=ESP32_DEV +[WML] WiFi connected after time: 1 +[WML] SSID=HueNet1,RSSI=-30 +[WML] Channel=2,IP=192.168.2.45 +Stop multiResetDetecting +Saving config file... +Saving config file OK + +Creating new WiFi client object OK +Creating new MQTT object OK +AIO_SERVER = io.adafruit.com, AIO_SERVERPORT = 1883 +AIO_USERNAME = user_name, AIO_KEY = aio_key +Creating new MQTT_Pub_Topic, Temperature = user_name/feeds/Temperature +Creating new Temperature object OK +Temperature MQTT_Pub_Topic = user_name/feeds/Temperature +Creating new AIO_SUB_TOPIC, LED_Control = user_name/feeds/LED_Control +Creating new LED_Control object OK +LED_Control AIO_SUB_TOPIC = user_name/feeds/LED_Control + +Connecting to WiFi MQTT (3 attempts)... +WiFi MQTT connection successful! +TWTWTWTW TWTW +``` + --- --- @@ -1949,6 +2118,11 @@ If you get compilation errors, more often than not, you may need to install a ne ## Releases +### Major Release v1.5.0 + +1. Enable scan of WiFi networks for selection in Configuration Portal. Check [PR for v1.3.0 - Enable scan of WiFi networks #10](https://github.com/khoih-prog/WiFiManager_NINA_Lite/pull/10). Now you can select optional **SCAN_WIFI_NETWORKS**, **MANUAL_SSID_INPUT_ALLOWED** to be able to manually input SSID, not only from a scanned SSID lists and **MAX_SSID_IN_LIST** (from 2-6 for ESP8266-AT or 2-15 for other) +2. Minor enhancement to not display garbage when data is invalid + ### Release v1.4.0 1. Add **LittleFS and SPIFFS** support to new **ESP32-S2** boards (**Arduino ESP32C3_DEV**). Check [HOWTO Install esp32 core for ESP32-S2 (Saola, AI-Thinker ESP-12K) and ESP32-C3 boards into Arduino IDE](#howto-install-esp32-core-for-esp32-s2-saola-ai-thinker-esp-12k-and-esp32-c3-boards-into-arduino-ide). @@ -2018,6 +2192,7 @@ Submit issues to: [ESP_WiFiManager_Lite issues](https://github.com/khoih-prog/ES 21. Add support to **ESP32-S2 (ESP32-S2 Saola, AI-Thinker ESP-12K, etc.) using EEPROM, LittleFS and SPIFFS** 22. Configurable **Customs HTML Headers**, including Customs Style, Customs Head Elements, CORS Header 23. Add support to **ESP32-C3 using EEPROM and SPIFFS** +24. Enable **scan of WiFi networks** for selection in Configuration Portal --- --- @@ -2026,6 +2201,15 @@ Submit issues to: [ESP_WiFiManager_Lite issues](https://github.com/khoih-prog/ES Please help contribute to this project and add your name here. +1. Thanks to [Michael H. "bizprof"](https://github.com/bizprof). With the impressive new feature : + - `Enable scan of WiFi networks for selection in Configuration Portal`. Check [PR for v1.3.0 - Enable scan of WiFi networks #10](https://github.com/khoih-prog/WiFiManager_NINA_Lite/pull/10) leading to v1.5.0 + + + + + +
bizprof
⭐️⭐️ Michael H. "bizprof"

+ --- diff --git a/examples/ESP_WiFi/ESP_WiFi.ino b/examples/ESP_WiFi/ESP_WiFi.ino index 0b3786d..3943ee5 100644 --- a/examples/ESP_WiFi/ESP_WiFi.ino +++ b/examples/ESP_WiFi/ESP_WiFi.ino @@ -8,7 +8,7 @@ Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite Licensed under MIT license - Version: 1.4.0 + Version: 1.5.0 Version Modified By Date Comments ------- ----------- ---------- ----------- @@ -17,6 +17,7 @@ 1.2.0 K Hoang 22/02/2021 Add customs HTML header feature. Fix bug. 1.3.0 K Hoang 12/04/2021 Fix invalid "blank" Config Data treated as Valid. Fix EEPROM_SIZE bug 1.4.0 K Hoang 21/04/2021 Add support to new ESP32-C3 using SPIFFS or EEPROM + 1.5.0 Michael H 24/04/2021 Enable scan of WiFi networks for selection in Configuration Portal *****************************************************************************************************************************/ #include "defines.h" diff --git a/examples/ESP_WiFi/defines.h b/examples/ESP_WiFi/defines.h index cbdde3c..db1e6e2 100644 --- a/examples/ESP_WiFi/defines.h +++ b/examples/ESP_WiFi/defines.h @@ -89,6 +89,16 @@ ///////////////////////////////////////////// +#define SCAN_WIFI_NETWORKS true + +// To be able to manually input SSID, not from a scanned SSID lists +#define MANUAL_SSID_INPUT_ALLOWED true + +// From 2-15 + #define MAX_SSID_IN_LIST 8 + +///////////////////////////////////////////// + #include #if ESP8266 diff --git a/examples/ESP_WiFi_MQTT/ESP_WiFi_MQTT.ino b/examples/ESP_WiFi_MQTT/ESP_WiFi_MQTT.ino index 084de67..abaae5c 100644 --- a/examples/ESP_WiFi_MQTT/ESP_WiFi_MQTT.ino +++ b/examples/ESP_WiFi_MQTT/ESP_WiFi_MQTT.ino @@ -8,7 +8,7 @@ Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite Licensed under MIT license - Version: 1.4.0 + Version: 1.5.0 Version Modified By Date Comments ------- ----------- ---------- ----------- @@ -17,6 +17,7 @@ 1.2.0 K Hoang 22/02/2021 Add customs HTML header feature. Fix bug. 1.3.0 K Hoang 12/04/2021 Fix invalid "blank" Config Data treated as Valid. Fix EEPROM_SIZE bug 1.4.0 K Hoang 21/04/2021 Add support to new ESP32-C3 using SPIFFS or EEPROM + 1.5.0 Michael H 24/04/2021 Enable scan of WiFi networks for selection in Configuration Portal *****************************************************************************************************************************/ /**************************************************************************************************************************** diff --git a/examples/ESP_WiFi_MQTT/defines.h b/examples/ESP_WiFi_MQTT/defines.h index e1b9182..e2c55a1 100644 --- a/examples/ESP_WiFi_MQTT/defines.h +++ b/examples/ESP_WiFi_MQTT/defines.h @@ -89,6 +89,16 @@ ///////////////////////////////////////////// +#define SCAN_WIFI_NETWORKS true + +// To be able to manually input SSID, not from a scanned SSID lists +#define MANUAL_SSID_INPUT_ALLOWED true + +// From 2-15 + #define MAX_SSID_IN_LIST 8 + +///////////////////////////////////////////// + #include #if ESP8266 diff --git a/library.json b/library.json index 6a279d5..8c52099 100644 --- a/library.json +++ b/library.json @@ -2,7 +2,7 @@ "name": "ESP_WiFiManager_Lite", "version": "1.4.0", "keywords": "wifi, wi-fi, MultiWiFi, multi-wifi, WiFiManager, esp8266, esp32, esp32-s2, esp32-c3, Communication, iot, credentials, persistent, config-portal, DoubleReset, MultiReset, DoubleResetDetector, littlefs, spiffs, eeprom, light-weight", - "description": "Library to configure MultiWiFi/Credentials at runtime for ESP32 (including ESP32-S2) and ESP8266 boards. You can also specify DHCP HostName, static AP and STA IP. Use much less memory compared to full-fledge WiFiManager. Config Portal will be auto-adjusted to match the number of dynamic custom parameters. Optional default Credentials to be autoloaded into Config Portal to use or change instead of manually input. Credentials are saved in LittleFS, SPIFFS or EEPROM. New powerful-yet-simple-to-use feature to enable adding dynamic custom parameters from sketch and input using the same Config Portal. Double or MultiDetectDetector as well as Virtual Switches feature permits entering Config Portal as requested. Configurable Customs HTML Headers, including Customs Style, Customs Head Elements, CORS Header.", + "description": "Library to configure MultiWiFi/Credentials at runtime for ESP32 (including ESP32-S2 and ESP32-C3) and ESP8266 boards. You can also specify DHCP HostName, static AP and STA IP. Use much less memory compared to full-fledge WiFiManager. Config Portal will be auto-adjusted to match the number of dynamic custom parameters. Optional default Credentials to be autoloaded into Config Portal to use or change instead of manually input. Credentials are saved in LittleFS, SPIFFS or EEPROM. New powerful-yet-simple-to-use feature to enable adding dynamic custom parameters from sketch and input using the same Config Portal. Double or MultiDetectDetector as well as Virtual Switches feature permits entering Config Portal as requested. Configurable Customs HTML Headers, including Customs Style, Customs Head Elements, CORS Header.", "authors": { "name": "Khoi Hoang", diff --git a/pics/Input.png b/pics/Input.png index 63b2d977a9421bd7d07d84da2b8625d1975f51e8..f28e5efeec1dabd6d3a806662833bfb623e65e6a 100644 GIT binary patch literal 35476 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 diff --git a/pics/Input_With_Scan.png b/pics/Input_With_Scan.png new file mode 100644 index 0000000000000000000000000000000000000000..80339cd6de4c8872d436662e8e7152366cb865e6 GIT binary patch literal 34847 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 T$445tfl=UOH&u2_>b>rtH7%)_ literal 36716 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 RBvSlm+T +////////////////////////////////////////////// + +// New from v1.3.0 +// KH, Some minor simplification +#if !defined(SCAN_WIFI_NETWORKS) + #define SCAN_WIFI_NETWORKS true //false +#endif + +#if SCAN_WIFI_NETWORKS + #if !defined(MANUAL_SSID_INPUT_ALLOWED) + #define MANUAL_SSID_INPUT_ALLOWED true + #endif + + #if !defined(MAX_SSID_IN_LIST) + #define MAX_SSID_IN_LIST 10 + #elif (MAX_SSID_IN_LIST < 2) + #warning Parameter MAX_SSID_IN_LIST defined must be >= 2 - Reset to 10 + #undef MAX_SSID_IN_LIST + #define MAX_SSID_IN_LIST 10 + #elif (MAX_SSID_IN_LIST > 15) + #warning Parameter MAX_SSID_IN_LIST defined must be <= 15 - Reset to 10 + #undef MAX_SSID_IN_LIST + #define MAX_SSID_IN_LIST 10 + #endif +#else + #warning SCAN_WIFI_NETWORKS disabled +#endif + +///////// NEW for DRD ///////////// + #if !defined(USING_MRD) #define USING_MRD false #endif @@ -305,12 +336,15 @@ const char ESP_WM_LITE_HTML_HEAD_START[] /*PROGMEM*/ = "div,input{padding:5px;font-size:1em;}input{width:95%;}body{text-align: center;}button{background-color:#16A1E7;color:#fff;line-height:2.4rem;font-size:1.2rem;width:100%;}fieldset{border-radius:0.3rem;margin:0px;}"; -const char ESP_WM_LITE_HTML_HEAD_END[] /*PROGMEM*/ = "

\ -
\ -
\ -
\ -
\ -
"; +const char ESP_WM_LITE_HTML_HEAD_END[] /*PROGMEM*/ = "
\ +
[[input_id]]
\ +
\ +
[[input_id1]]
\ +
\ +
"; // DO NOT CHANGE THIS STRING EVER!!!! + +const char ESP_WM_LITE_HTML_INPUT_ID[] /*PROGMEM*/ = ""; +const char ESP_WM_LITE__HTML_INPUT_ID1[] /*PROGMEM*/ = ""; const char ESP_WM_LITE_FLDSET_START[] /*PROGMEM*/ = "
"; const char ESP_WM_LITE_FLDSET_END[] /*PROGMEM*/ = "
"; @@ -327,6 +361,16 @@ const char ESP_WM_LITE_HTML_SCRIPT_ITEM[] /*PROGMEM*/ = "udVal('{d}',document.g const char ESP_WM_LITE_HTML_SCRIPT_END[] /*PROGMEM*/ = "alert('Updated');}"; const char ESP_WM_LITE_HTML_END[] /*PROGMEM*/ = ""; +#if SCAN_WIFI_NETWORKS +const char ESP_WM_LITE_SELECT_START[] /*PROGMEM*/ = "" + String(ESP_WM_LITE_DATALIST_START) + "'SSIDs'>" + ListOfSSIDs + ESP_WM_LITE_DATALIST_END); + ESP_WML_LOGDEBUG1(F("pitem:"), pitem); + pitem.replace("[[input_id1]]", "" + String(ESP_WM_LITE_DATALIST_START) + "'SSIDs'>" + ListOfSSIDs + ESP_WM_LITE_DATALIST_END); + + ESP_WML_LOGDEBUG1(F("pitem:"), pitem); + +#else + pitem.replace("[[input_id]]", "" + ListOfSSIDs + ESP_WM_LITE_SELECT_END); +#endif + + root_html_template += pitem + ESP_WM_LITE_FLDSET_START; + +#else + + pitem = String(ESP_WM_LITE_HTML_HEAD_END); + pitem.replace("[[input_id]]", ESP_WM_LITE_HTML_INPUT_ID); + pitem.replace("[[input_id1]]", ESP_WM_LITE_HTML_INPUT_ID1); + root_html_template += pitem + ESP_WM_LITE_FLDSET_START; + +#endif // SCAN_WIFI_NETWORKS #if USE_DYNAMIC_PARAMETERS for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++) @@ -2279,11 +2387,22 @@ class ESP_WiFiManager_Lite result.replace("ESP_WM_Lite", ESP_WM_LITE_config.board_name); } - result.replace("[[id]]", ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid); - result.replace("[[pw]]", ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw); - result.replace("[[id1]]", ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid); - result.replace("[[pw1]]", ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw); - result.replace("[[nm]]", ESP_WM_LITE_config.board_name); + if (hadConfigData) + { + result.replace("[[id]]", ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid); + result.replace("[[pw]]", ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw); + result.replace("[[id1]]", ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid); + result.replace("[[pw1]]", ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw); + result.replace("[[nm]]", ESP_WM_LITE_config.board_name); + } + else + { + result.replace("[[id]]", ""); + result.replace("[[pw]]", ""); + result.replace("[[id1]]", ""); + result.replace("[[pw1]]", ""); + result.replace("[[nm]]", ""); + } #if USE_DYNAMIC_PARAMETERS for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++) @@ -2469,6 +2588,12 @@ class ESP_WiFiManager_Lite void startConfigurationMode() { +#if SCAN_WIFI_NETWORKS + configTimeout = 0; // To allow user input in CP + + WiFiNetworksFound = scanWifiNetworks(&indices); +#endif + // turn the LED_BUILTIN ON to tell us we are in configuration mode. digitalWrite(LED_BUILTIN, LED_ON); @@ -2538,6 +2663,179 @@ class ESP_WiFiManager_Lite configuration_mode = true; } + +#if SCAN_WIFI_NETWORKS + + // Source code adapted from https://github.com/khoih-prog/ESP_WiFiManager/blob/master/src/ESP_WiFiManager-Impl.h + + int _paramsCount = 0; + int _minimumQuality = -1; + bool _removeDuplicateAPs = true; + + ////////////////////////////////////////// + + void swap(int *thisOne, int *thatOne) + { + int tempo; + + tempo = *thatOne; + *thatOne = *thisOne; + *thisOne = tempo; + } + + ////////////////////////////////////////// + + void setMinimumSignalQuality(int quality) + { + _minimumQuality = quality; + } + + ////////////////////////////////////////// + + //if this is true, remove duplicate Access Points - default true + void setRemoveDuplicateAPs(bool removeDuplicates) + { + _removeDuplicateAPs = removeDuplicates; + } + + ////////////////////////////////////////// + + //Scan for WiFiNetworks in range and sort by signal strength + //space for indices array allocated on the heap and should be freed when no longer required + int scanWifiNetworks(int **indicesptr) + { + ESP_WML_LOGDEBUG(F("Scanning Network")); + + int n = WiFi.scanNetworks(); + + ESP_WML_LOGDEBUG1(F("scanWifiNetworks: Done, Scanned Networks n = "), n); + + //KH, Terrible bug here. WiFi.scanNetworks() returns n < 0 => malloc( negative == very big ) => crash!!! + //In .../esp32/libraries/WiFi/src/WiFiType.h + //#define WIFI_SCAN_RUNNING (-1) + //#define WIFI_SCAN_FAILED (-2) + //if (n == 0) + if (n <= 0) + { + ESP_WML_LOGDEBUG(F("No network found")); + return (0); + } + else + { + // Allocate space off the heap for indices array. + // This space should be freed when no longer required. + int* indices = (int *)malloc(n * sizeof(int)); + + if (indices == NULL) + { + ESP_WML_LOGDEBUG(F("ERROR: Out of memory")); + *indicesptr = NULL; + return (0); + } + + *indicesptr = indices; + + //sort networks + for (int i = 0; i < n; i++) + { + indices[i] = i; + } + + ESP_WML_LOGDEBUG(F("Sorting")); + + // RSSI SORT + // old sort + for (int i = 0; i < n; i++) + { + for (int j = i + 1; j < n; j++) + { + if (WiFi.RSSI(indices[j]) > WiFi.RSSI(indices[i])) + { + //std::swap(indices[i], indices[j]); + // Using locally defined swap() + swap(&indices[i], &indices[j]); + } + } + } + + ESP_WML_LOGDEBUG(F("Removing Dup")); + + // remove duplicates ( must be RSSI sorted ) + if (_removeDuplicateAPs) + { + String cssid; + + for (int i = 0; i < n; i++) + { + if (indices[i] == -1) + continue; + + cssid = WiFi.SSID(indices[i]); + + for (int j = i + 1; j < n; j++) + { + if (cssid == WiFi.SSID(indices[j])) + { + ESP_WML_LOGDEBUG1("DUP AP:", WiFi.SSID(indices[j])); + indices[j] = -1; // set dup aps to index -1 + } + } + } + } + + for (int i = 0; i < n; i++) + { + if (indices[i] == -1) + continue; // skip dups + + int quality = getRSSIasQuality(WiFi.RSSI(indices[i])); + + if (!(_minimumQuality == -1 || _minimumQuality < quality)) + { + indices[i] = -1; + ESP_WML_LOGDEBUG(F("Skipping low quality")); + } + } + + ESP_WML_LOGWARN(F("WiFi networks found:")); + + for (int i = 0; i < n; i++) + { + if (indices[i] == -1) + continue; // skip dups + else + ESP_WML_LOGWARN5(i+1,": ",WiFi.SSID(indices[i]), ", ", WiFi.RSSI(i), "dB"); + } + + return (n); + } + } + + ////////////////////////////////////////// + + int getRSSIasQuality(int RSSI) + { + int quality = 0; + + if (RSSI <= -100) + { + quality = 0; + } + else if (RSSI >= -50) + { + quality = 100; + } + else + { + quality = 2 * (RSSI + 100); + } + + return quality; + } + + ////////////////////////////////////////// + +#endif }; diff --git a/src/ESP_WiFiManager_Lite_Debug.h b/src/ESP_WiFiManager_Lite_Debug.h index cd57061..6346bc5 100644 --- a/src/ESP_WiFiManager_Lite_Debug.h +++ b/src/ESP_WiFiManager_Lite_Debug.h @@ -9,7 +9,7 @@ Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite Licensed under MIT license - Version: 1.4.0 + Version: 1.5.0 Version Modified By Date Comments ------- ----------- ---------- ----------- @@ -18,6 +18,7 @@ 1.2.0 K Hoang 22/02/2021 Add customs HTML header feature. Fix bug. 1.3.0 K Hoang 12/04/2021 Fix invalid "blank" Config Data treated as Valid. Fix EEPROM_SIZE bug 1.4.0 K Hoang 21/04/2021 Add support to new ESP32-C3 using SPIFFS or EEPROM + 1.5.0 Michael H 24/04/2021 Enable scan of WiFi networks for selection in Configuration Portal *****************************************************************************************************************************/ #ifndef ESP_WiFiManager_Lite_Debug_h