mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-04 02:48:13 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63b0291961 | ||
|
|
3b07903bf4 | ||
|
|
1f196895ce | ||
|
|
35e02f54e5 |
@@ -20,4 +20,4 @@ jobs:
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- run: python -m pip install --upgrade platformio==6.1.19
|
||||
- run: pio test -e ${{ matrix.environment }} --without-uploading --without-testing
|
||||
- run: ./scripts/compile-check.sh --platform ${{ matrix.environment }}
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## 3.0.3
|
||||
|
||||
- Declare the ESP8266 and ESP32 async TCP libraries explicitly in the PlatformIO package manifest so clean consumers resolve the headers required by the asynchronous portal.
|
||||
|
||||
## 3.0.2
|
||||
|
||||
- Update the pinned DFTE dependency to the iterator-lifecycle and configuration-safe 1.0.2 release.
|
||||
|
||||
## 3.0.1
|
||||
|
||||
- Redact WiFi, AP, portal-form, and custom-parameter values from diagnostic logs.
|
||||
|
||||
## 3.0.0
|
||||
|
||||
- Establish `device-framework` as the independently maintained canonical branch.
|
||||
|
||||
@@ -8,6 +8,38 @@ If you are evaluating this fork, assume that core web-portal architecture has ch
|
||||
**This repository:** [alexhopeoconnor/WiFiManager](https://github.com/alexhopeoconnor/WiFiManager)
|
||||
**Upstream:** [tzapu/WiFiManager](https://github.com/tzapu/WiFiManager)
|
||||
|
||||
## Basic provisioning
|
||||
|
||||
For a standalone Arduino project, create one long-lived `WiFiManager` and call
|
||||
`autoConnect` during setup. It first tries saved station credentials; when that
|
||||
fails it starts the configuration portal with the supplied AP name and password.
|
||||
|
||||
```cpp
|
||||
#include <Arduino.h>
|
||||
#include <WiFiManager.h>
|
||||
|
||||
WiFiManager wifi;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
wifi.setConfigPortalTimeout(180); // seconds; 0 leaves it open
|
||||
|
||||
if (!wifi.autoConnect("Device Setup", "change-me")) {
|
||||
ESP.restart();
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Normal application work after WiFi is connected.
|
||||
}
|
||||
```
|
||||
|
||||
The AP password must meet the Wi-Fi password requirements. For applications
|
||||
built on DeviceFramework, configure `setConfigDevicePassword(...)` instead:
|
||||
DeviceFramework passes the same validated password to WiFiManager, Arduino OTA,
|
||||
HTTP Basic authentication, and WebSerial.
|
||||
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
This fork intentionally modernizes and restructures the configuration portal.
|
||||
@@ -168,32 +200,74 @@ Notes:
|
||||
|
||||
This fork depends on **DFTE** ([Device Framework Template Engine](https://github.com/alexhopeoconnor/DFTE)) and **ESP32Async/ESPAsyncWebServer**.
|
||||
|
||||
For this repo's `platformio.ini` test setup, DFTE is expected as a sibling checkout:
|
||||
The published `library.json` resolves DFTE from the maintained, pinned
|
||||
`v1.0.2` Git tag. No sibling checkout is required to consume WiFiManager.
|
||||
When developing both libraries together, use a local `symlink://` or
|
||||
`file://` dependency in your own ignored PlatformIO override.
|
||||
|
||||
```ini
|
||||
lib_deps =
|
||||
ESP32Async/ESPAsyncWebServer@3.9.1
|
||||
symlink://../DFTE
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
Use the release tag and list the asynchronous web/TCP packages at project level.
|
||||
PlatformIO installs the manifest dependencies automatically, but its dependency
|
||||
finder requires these headers to be direct project dependencies before it adds
|
||||
their include paths:
|
||||
|
||||
```ini
|
||||
[env:your_environment]
|
||||
platform = espressif8266 ; or espressif32
|
||||
board = d1_mini ; your board
|
||||
[common]
|
||||
lib_deps =
|
||||
WiFiManager=https://github.com/alexhopeoconnor/WiFiManager.git#v3.0.3
|
||||
ESP32Async/ESPAsyncWebServer@3.9.1
|
||||
|
||||
[env:esp8266]
|
||||
extends = common
|
||||
platform = espressif8266
|
||||
board = d1_mini
|
||||
framework = arduino
|
||||
lib_deps =
|
||||
https://github.com/alexhopeoconnor/WiFiManager.git
|
||||
${common.lib_deps}
|
||||
ESP32Async/ESPAsyncTCP@2.0.0
|
||||
|
||||
[env:esp32]
|
||||
extends = common
|
||||
lib_deps =
|
||||
platform = espressif32
|
||||
board = esp32dev
|
||||
framework = arduino
|
||||
${common.lib_deps}
|
||||
ESP32Async/AsyncTCP@3.4.9
|
||||
```
|
||||
|
||||
Or a local path:
|
||||
The text after `#` is a Git ref. PlatformIO clones the repository and checks
|
||||
out that tag; it does not download a GitHub Release asset. A tag gives a
|
||||
reproducible library input. Use a local checkout only while actively changing
|
||||
the library:
|
||||
|
||||
```ini
|
||||
lib_deps =
|
||||
file:///path/to/WiFiManager
|
||||
WiFiManager=file:///path/to/WiFiManager
|
||||
```
|
||||
|
||||
## Tests and releases
|
||||
|
||||
The CI workflow compiles a minimal clean consumer project for both supported
|
||||
targets. These commands need no connected board:
|
||||
|
||||
```bash
|
||||
./scripts/compile-check.sh --platform esp8266
|
||||
./scripts/compile-check.sh --platform esp32
|
||||
```
|
||||
|
||||
Before publishing a version, update `library.json`, `CHANGELOG.md`, and this
|
||||
README, run both checks, then create the annotated tag:
|
||||
|
||||
```bash
|
||||
./scripts/prepare-release.sh vMAJOR.MINOR.PATCH --tag
|
||||
```
|
||||
|
||||
Push the branch and tag. GitHub Actions validates the PlatformIO package again
|
||||
and creates the GitHub Release from that tag.
|
||||
|
||||
## AI Assistance Notice
|
||||
|
||||
Parts of this codebase have been developed and refactored with the aid of AI coding agents under human direction and review.
|
||||
|
||||
@@ -986,7 +986,7 @@ bool WiFiManager::wifiConnectNew(String ssid, String pass,bool connect){
|
||||
bool ret = false;
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("Connecting to NEW AP:"),ssid);
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("Using Password:"),pass);
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem, F("WiFi password supplied: [redacted]"));
|
||||
#endif
|
||||
WiFi_enableSTA(true,storeSTAmode); // storeSTAmode will also toggle STA on in default opmode (persistent) if true (default)
|
||||
WiFi.persistent(true);
|
||||
@@ -1007,7 +1007,7 @@ bool WiFiManager::wifiConnectDefault(){
|
||||
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("Connecting to SAVED AP:"),WiFi_SSID(true));
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("Using Password:"),WiFi_psk(true));
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem, F("Using saved WiFi credentials"));
|
||||
#endif
|
||||
|
||||
ret = WiFi_enableSTA(true,storeSTAmode);
|
||||
@@ -2443,7 +2443,7 @@ void WiFiManager::debugSoftAPConfig(){
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("SoftAP Configuration"));
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("--------------------"));
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("ssid: "),(char *) config.ssid);
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("password: "),(char *) config.password);
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("password: [redacted]"));
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("ssid_len: "),config.ssid_len);
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("channel: "),config.channel);
|
||||
log(WiFiManagerLogLevel::Info, kWiFiMgrLogSubsystem, F("authmode: "),config.authmode);
|
||||
@@ -2518,7 +2518,7 @@ boolean WiFiManager::validApPassword(){
|
||||
}
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Debug, kWiFiMgrLogSubsystem,F("AccessPoint set password is VALID"));
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,"ap pass",_apPassword);
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem, F("Access point password: [redacted]"));
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -739,7 +739,7 @@ void WiFiManagerHandlers::applyWifiAndParamsFromRequest(AsyncWebServerRequest *r
|
||||
requestinfo += "\n";
|
||||
for (size_t i = 0; i < request->params(); i++) {
|
||||
const AsyncWebParameter* p = request->getParam(i);
|
||||
requestinfo += " " + p->name() + ": " + p->value() + "\n";
|
||||
requestinfo += " " + p->name() + ": [redacted, " + String(p->value().length()) + " chars]\n";
|
||||
}
|
||||
|
||||
_wm->log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem, requestinfo);
|
||||
@@ -823,7 +823,8 @@ void WiFiManagerHandlers::doParamSave(WiFiManager::WiFiManagerRequestArgs reques
|
||||
|
||||
_wm->_params[i]->setValue(value.c_str(), value.length());
|
||||
#ifndef WM_NO_LOG
|
||||
_wm->log(WiFiManagerLogLevel::Debug, kWiFiMgrLogSubsystem,(String)_wm->_params[i]->getID() + ":",value);
|
||||
_wm->log(WiFiManagerLogLevel::Debug, kWiFiMgrLogSubsystem,
|
||||
(String)_wm->_params[i]->getID() + F(": [redacted, ") + String(value.length()) + F(" chars]"));
|
||||
#endif
|
||||
}
|
||||
#ifndef WM_NO_LOG
|
||||
|
||||
+24
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "WiFiManager",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.3",
|
||||
"keywords": [
|
||||
"wifi",
|
||||
"wi-fi",
|
||||
@@ -38,10 +38,29 @@
|
||||
"espressif8266",
|
||||
"espressif32"
|
||||
],
|
||||
"dependencies": {
|
||||
"ESP32Async/ESPAsyncWebServer": "3.9.1",
|
||||
"DeviceFrameworkTemplateEngine": "https://github.com/alexhopeoconnor/DFTE.git#v1.0.1"
|
||||
},
|
||||
"dependencies": [
|
||||
{
|
||||
"owner": "ESP32Async",
|
||||
"name": "ESPAsyncWebServer",
|
||||
"version": "3.9.1"
|
||||
},
|
||||
{
|
||||
"owner": "ESP32Async",
|
||||
"name": "ESPAsyncTCP",
|
||||
"version": "2.0.0",
|
||||
"platforms": "espressif8266"
|
||||
},
|
||||
{
|
||||
"owner": "ESP32Async",
|
||||
"name": "AsyncTCP",
|
||||
"version": "3.4.9",
|
||||
"platforms": "espressif32"
|
||||
},
|
||||
{
|
||||
"name": "DeviceFrameworkTemplateEngine",
|
||||
"version": "https://github.com/alexhopeoconnor/DFTE.git#v1.0.2"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"includeDir": "lib/WiFiManager/include",
|
||||
"srcDir": "lib/WiFiManager/src"
|
||||
|
||||
+4
-2
@@ -16,7 +16,8 @@ build_flags =
|
||||
-DUNIT_TEST
|
||||
lib_deps =
|
||||
ESP32Async/ESPAsyncWebServer@3.9.1
|
||||
DeviceFrameworkTemplateEngine=https://github.com/alexhopeoconnor/DFTE.git#v1.0.1
|
||||
DeviceFrameworkTemplateEngine=https://github.com/alexhopeoconnor/DFTE.git#v1.0.2
|
||||
ESP32Async/ESPAsyncTCP@2.0.0
|
||||
|
||||
[env:esp32]
|
||||
platform = espressif32@6.13.0
|
||||
@@ -33,7 +34,8 @@ build_flags =
|
||||
-DUNIT_TEST
|
||||
lib_deps =
|
||||
ESP32Async/ESPAsyncWebServer@3.9.1
|
||||
DeviceFrameworkTemplateEngine=https://github.com/alexhopeoconnor/DFTE.git#v1.0.1
|
||||
DeviceFrameworkTemplateEngine=https://github.com/alexhopeoconnor/DFTE.git#v1.0.2
|
||||
ESP32Async/AsyncTCP@3.4.9
|
||||
|
||||
; Optional: compile tests with DFTE logs bridged into WiFiManager::log (see README)
|
||||
[env:esp8266_dfte_log]
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 --platform esp8266|esp32" >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
[[ "${1:-}" == "--platform" ]] || usage
|
||||
platform="${2:-}"
|
||||
[[ "$platform" == "esp8266" || "$platform" == "esp32" ]] || usage
|
||||
[[ $# -eq 2 ]] || usage
|
||||
|
||||
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
pio run -d "$root/test/compile-project" -e "$platform"
|
||||
|
||||
echo "WiFiManager consumer compile check passed for $platform"
|
||||
@@ -0,0 +1,33 @@
|
||||
[platformio]
|
||||
default_envs = esp8266
|
||||
|
||||
[common]
|
||||
framework = arduino
|
||||
lib_ldf_mode = chain
|
||||
lib_deps =
|
||||
WiFiManager=symlink://../..
|
||||
ESP32Async/ESPAsyncWebServer@3.9.1
|
||||
|
||||
[env:esp8266]
|
||||
extends = common
|
||||
platform = espressif8266
|
||||
board = d1_mini
|
||||
platform_packages =
|
||||
platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3
|
||||
build_flags =
|
||||
-DWM_LOG_LEVEL=3
|
||||
lib_deps =
|
||||
${common.lib_deps}
|
||||
ESP32Async/ESPAsyncTCP@2.0.0
|
||||
|
||||
[env:esp32]
|
||||
extends = common
|
||||
platform = espressif32@6.13.0
|
||||
board = esp32dev
|
||||
build_unflags = -std=gnu++11
|
||||
build_flags =
|
||||
-std=gnu++14
|
||||
-DWM_LOG_LEVEL=3
|
||||
lib_deps =
|
||||
${common.lib_deps}
|
||||
ESP32Async/AsyncTCP@3.4.9
|
||||
@@ -0,0 +1,10 @@
|
||||
#include <Arduino.h>
|
||||
#include <WiFiManager.h>
|
||||
|
||||
WiFiManager wifiManager;
|
||||
|
||||
void setup() {
|
||||
wifiManager.setConfigPortalTimeout(1);
|
||||
}
|
||||
|
||||
void loop() {}
|
||||
Reference in New Issue
Block a user