From 2fec33b9523287e07bbbb998a3757f90c4723980 Mon Sep 17 00:00:00 2001 From: Alex Hope-O'Connor Date: Thu, 3 Sep 2026 18:54:41 +1000 Subject: [PATCH] feat: refine portal flow and examples --- .github/workflows/ci.yml | 1 + .github/workflows/release.yml | 2 + CHANGELOG.md | 8 + README.md | 66 +-- docs/GETTING_STARTED.md | 10 +- docs/PORTAL_API.md | 10 +- docs/PORTAL_UI.md | 11 +- docs/README.md | 10 +- docs/STATION_PROFILES.md | 4 +- docs/TESTING.md | 2 +- docs/assets/portal-esp32-branded-overview.png | Bin 0 -> 110155 bytes docs/assets/portal-esp8266-custom-wifi.png | Bin 0 -> 111551 bytes examples/BasicPortal/BasicPortal.ino | 15 + examples/BasicPortal/README.md | 12 + examples/BasicPortal/platformio.ini | 26 + examples/BrandedPortal/BrandedPortal.ino | 10 +- examples/BrandedPortal/README.md | 9 + examples/BrandedPortal/platformio.ini | 26 + .../CustomPortalContent.ino | 29 ++ examples/CustomPortalContent/README.md | 13 + examples/CustomPortalContent/platformio.ini | 26 + examples/README.md | 22 + examples/StationProfiles/README.md | 9 + examples/StationProfiles/StationProfiles.ino | 63 +++ examples/StationProfiles/platformio.ini | 26 + lib/WiFiManager/include/WiFiManager.h | 6 +- lib/WiFiManager/include/WiFiManagerHandlers.h | 2 + lib/WiFiManager/include/WiFiManagerPortalUI.h | 2 +- lib/WiFiManager/include/WiFiManagerServer.h | 4 + lib/WiFiManager/include/templates/CSS.h | 43 +- .../include/templates/PortalAppJS.h | 469 +++++++++++++----- lib/WiFiManager/src/WiFiManager.cpp | 33 +- lib/WiFiManager/src/WiFiManagerHandlers.cpp | 33 +- lib/WiFiManager/src/WiFiManagerServer.cpp | 6 + library.json | 2 +- scripts/check-docs.sh | 13 + scripts/test.sh | 17 +- test/compile-project/src/main.cpp | 4 +- test/test_wifimanager/test_main.cpp | 3 +- test/test_wifimanager/test_main.h | 3 +- .../tests/test_api_json_and_captive.cpp | 18 + .../tests/test_root_render_lifecycle.cpp | 14 +- 42 files changed, 870 insertions(+), 212 deletions(-) create mode 100644 docs/assets/portal-esp32-branded-overview.png create mode 100644 docs/assets/portal-esp8266-custom-wifi.png create mode 100644 examples/BasicPortal/BasicPortal.ino create mode 100644 examples/BasicPortal/README.md create mode 100644 examples/BasicPortal/platformio.ini create mode 100644 examples/BrandedPortal/README.md create mode 100644 examples/BrandedPortal/platformio.ini create mode 100644 examples/CustomPortalContent/CustomPortalContent.ino create mode 100644 examples/CustomPortalContent/README.md create mode 100644 examples/CustomPortalContent/platformio.ini create mode 100644 examples/README.md create mode 100644 examples/StationProfiles/README.md create mode 100644 examples/StationProfiles/StationProfiles.ino create mode 100644 examples/StationProfiles/platformio.ini diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fcd7f0..d40519d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,3 +36,4 @@ jobs: python-version: '3.11' - run: python -m pip install --upgrade platformio==6.1.19 - run: ./scripts/test.sh compile --platform ${{ matrix.environment }} + - run: ./scripts/test.sh examples --platform ${{ matrix.environment }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e4d75b..3b3186f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,9 @@ jobs: python-version: '3.11' - run: python -m pip install --upgrade platformio==6.1.19 - run: ./scripts/test.sh compile --platform esp8266 + - run: ./scripts/test.sh examples --platform esp8266 - run: ./scripts/test.sh compile --platform esp32 + - run: ./scripts/test.sh examples --platform esp32 - run: ./scripts/check-docs.sh - run: ./scripts/prepare-release.sh "$GITHUB_REF_NAME" - run: ./scripts/release-notes.sh "$GITHUB_REF_NAME" > "$RUNNER_TEMP/release-notes.md" diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cdb395..d9ec41c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.2.0 + +- Refine the device-hosted portal with a startup Wi-Fi scan, stable loading overlays, clearer connection progress, and a resettable configuration timeout. +- Keep a successful portal-to-station hand-off reachable until the browser acknowledges its redirect, with a bounded fallback for captive or headless clients. +- Rename the presentation field `homeIntro` to `tagline` so portal identity and wording are clearer; update portal bootstrap contract to v3. +- Add focused Basic Portal, Branded Portal, Custom Portal Content, and Station Profiles examples for ESP8266 and ESP32, with real-hardware README captures. +- Strengthen release CI with documentation and clean-consumer/example compilation checks for both supported targets. + ## 3.1.0 - Add an opt-in primary/fallback station-profile controller with bounded failover, reconnection, a durable consumer-supplied store, and profile-aware portal APIs. DeviceFramework uses this to persist verified WiFi profiles transactionally. diff --git a/README.md b/README.md index 2f9fc2c..3b52fbf 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ # WiFiManager -WiFiManager is the maintained ESP8266/ESP32 configuration-portal fork used by DeviceFramework. It is a deliberate breaking fork of upstream [`tzapu/WiFiManager`](https://github.com/tzapu/WiFiManager), with a streamed single-page portal and typed JSON APIs rather than upstream’s legacy page/template model. +WiFiManager gives ESP8266 and ESP32 firmware a polished, self-hosted Wi-Fi setup experience. It reconnects to saved networks and opens a temporary captive portal when it cannot, so users can configure the device from any phone or browser without a cloud service or companion app. -## Why use it +## See it on real hardware -- **Single-shell portal:** one responsive SPA for WiFi, parameters, information, actions, and firmware update flow. -- **Data-first APIs:** portal state and actions are exposed under `/api/...`, not scraped from HTML. -- **Controlled portal UI:** semantic identity/theme values and structured portal APIs without exposing portal internals. -- **ESP8266 and ESP32:** clean PlatformIO consumers resolve the right asynchronous TCP transport automatically. +| Branded ESP32 portal | ESP8266 portal with an application field | +| --- | --- | +| ![Branded WiFiManager portal overview on an ESP32.](docs/assets/portal-esp32-branded-overview.png) | ![WiFiManager network picker and custom MQTT broker field on an ESP8266.](docs/assets/portal-esp8266-custom-wifi.png) | -## Try it +These are unmodified browser captures of [Branded Portal](examples/BrandedPortal/) and [Custom Portal Content](examples/CustomPortalContent/) running on the supported boards. The portal is served by the device itself; no cloud UI or companion app is involved. + +## Start with a working portal ```cpp #include @@ -20,17 +21,17 @@ WiFiManager wifi; void setup() { Serial.begin(115200); wifi.setConfigPortalTimeout(180); - if (!wifi.autoConnect("Device Setup", "change-me")) { - ESP.restart(); - } + wifi.autoConnect("Device Setup", "change-me"); } -void loop() {} +void loop() { + wifi.process(); +} ``` -For a DeviceFramework device, configure the framework’s shared device password instead. DeviceFramework applies it consistently to the provisioning AP, OTA, HTTP Basic authentication, and WebSerial. +When saved Wi-Fi is unavailable, `autoConnect()` starts the portal asynchronously. Call `process()` from every `loop()` iteration while it may be open. Flash [Basic Portal](examples/BasicPortal/) to try this exact flow; its README gives the network name, password, portal address, and expected result after saving Wi-Fi. -### Brand it +## Make it yours ```cpp const char kTitle[] PROGMEM = "Set up Temperature Monitor"; @@ -53,40 +54,41 @@ void setup() { wifi.setPortalConfig(kPortalUI); // before the portal starts wifi.autoConnect("Device Setup"); } + +void loop() { + wifi.process(); +} ``` -The full standalone example, including a static SVG, is [BrandedPortal](examples/BrandedPortal/BrandedPortal.ino). +The [Branded Portal](examples/BrandedPortal/) example includes a static SVG, accessible identity text, and a small semantic theme. [Custom Portal Content](examples/CustomPortalContent/) shows the supported parameters, information sections, and home cards without replacing the portal shell. -## Explore the portal +## What it provides + +- **Captive Wi-Fi setup:** starts an access point only when saved network credentials cannot connect. +- **Responsive portal:** one small portal for Wi-Fi, application fields, information, actions, and firmware update flow. +- **Structured APIs:** JSON endpoints under `/api/...` for applications that need portal state or connection results. +- **Product presentation:** title, logo, tagline, and semantic colour tokens without copying the portal HTML. +- **Primary and fallback networks:** an opt-in two-network controller backed by an application-provided store. +- **ESP8266 and ESP32 support:** the package resolves its asynchronous web dependencies for the selected target. + +## Choose a guide | Goal | Guide | | --- | --- | | Brand the portal or add structured built-in content | [Portal UI](docs/PORTAL_UI.md) | | Configure primary/fallback station profiles | [Station profiles](docs/STATION_PROFILES.md) | | Understand the JSON APIs and station-connect handoff | [Portal API](docs/PORTAL_API.md) | -| Build a clean consumer or work on this fork | [Testing](docs/TESTING.md) · [Development](docs/DEVELOPMENT.md) | +| Build or flash a complete example | [Examples](examples/README.md) | +| Contribute to this fork or prepare a release | [Development](docs/DEVELOPMENT.md) | ## Install ```ini [common] lib_deps = - WiFiManager=https://github.com/alexhopeoconnor/WiFiManager.git#v3.1.0 + WiFiManager=https://github.com/alexhopeoconnor/WiFiManager.git#v3.2.0 ``` -The suffix after `#` is a Git ref. PlatformIO clones the repository and checks out that release tag; GitHub Release assets are unrelated. This repository is supported through PlatformIO. Use a local `symlink://` or `file://` dependency only while actively changing this fork. +The suffix after `#` is a Git ref. PlatformIO clones the repository and checks out that release tag; GitHub Release assets are unrelated. Arduino IDE users can install this repository as a library checkout. -## Development and releases - -```bash -./scripts/bump-version.sh vMAJOR.MINOR.PATCH -# Replace the generated CHANGELOG TODO with the release summary. -./scripts/test.sh compile --platform esp8266 -./scripts/test.sh compile --platform esp32 -./scripts/check-docs.sh -./scripts/prepare-release.sh vMAJOR.MINOR.PATCH --tag -``` - -Tagging repeats the board-free compile checks, validates the package, and creates a GitHub Release from the corresponding changelog section. It does not publish to the PlatformIO Registry or deploy firmware. - -See the [documentation index](docs/README.md), [release history](CHANGELOG.md), and [licence](LICENSE). +See the [documentation index](docs/README.md), [examples](examples/README.md), [release history](CHANGELOG.md), and [licence](LICENSE). diff --git a/docs/GETTING_STARTED.md b/docs/GETTING_STARTED.md index 6b92ec1..3631095 100644 --- a/docs/GETTING_STARTED.md +++ b/docs/GETTING_STARTED.md @@ -27,15 +27,11 @@ void loop() { ```ini lib_deps = - WiFiManager=https://github.com/alexhopeoconnor/WiFiManager.git#v3.1.0 + WiFiManager=https://github.com/alexhopeoconnor/WiFiManager.git#v3.2.0 ``` -The package manifest resolves DFTE, ESPAsyncWebServer, and the correct TCP transport for ESP8266 or ESP32. A consuming project should not duplicate those dependencies unless it is deliberately testing an unreleased stack change. +The package includes the asynchronous web and TCP dependencies required by the selected ESP8266 or ESP32 target. Add WiFiManager as the application’s direct dependency; do not copy its internal dependency list into your project. -## DeviceFramework applications - -DeviceFramework creates and configures WiFiManager for its normal lifecycle. Use DeviceFramework’s persistent shared device-password API instead of separately configuring an AP, OTA, HTTP, and WebSerial password. - -Next: [portal UI](PORTAL_UI.md) or [portal API](PORTAL_API.md). +Next: build [Basic Portal](../examples/BasicPortal/), then explore [portal UI](PORTAL_UI.md) or [portal API](PORTAL_API.md). Back to [documentation](README.md) · [project overview](../README.md). diff --git a/docs/PORTAL_API.md b/docs/PORTAL_API.md index 1827eef..a2d992b 100644 --- a/docs/PORTAL_API.md +++ b/docs/PORTAL_API.md @@ -2,6 +2,8 @@ The portal uses JSON endpoints under `/api/...` for WiFi scans and saves, parameters, information, status, restart/erase/exit actions, captive-portal closure, and station-connect status. Consumers should treat the documented response shapes as the contract; portal HTML is not an API. +The current bootstrap contract is version 3. It includes `brand.tagline`, the short product tagline rendered in the portal header. + ## Profile-mode WiFi metadata When an application supplies a `WiFiManagerStationProfileStore`, `GET /api/wifi/meta` reports a primary profile and optional fallback without returning passwords. `POST /api/wifi/save` verifies a submitted candidate before committing it; see [station profiles](STATION_PROFILES.md) for fields and lifecycle. @@ -20,9 +22,13 @@ When `portalSetBehaviorConnectOnSave(true)` is enabled, saving credentials queue } ``` -`stationIp` and `redirectUrl` are present only after a successful join. If the portal server is not on port 80, `redirectUrl` includes that port. +`stationIp` and `redirectUrl` are present only after a successful join. If the portal server is not on port 80, `redirectUrl` includes that port. When connect-on-save is disabled, a saved configuration has no station address and the built-in portal remains open. -On success, WiFiManager keeps the portal alive briefly so the client can read the final status and navigate before the AP is shut down. Captive-portal helpers, DHCP timing, browser behaviour, and network isolation can still prevent an automatic redirect, so clients must handle a visible address as well. +On success, the SPA first reads the station address, then POSTs `/api/wifi/connect-complete`. WiFiManager keeps the portal available for a fallback period while it waits for that acknowledgement, then closes it after a short grace delay so the normal device web server can start. This removes the old client-side race where the portal could disappear before the final status arrived. Captive-portal helpers, DHCP timing, browser behaviour, and network isolation can still prevent an automatic redirect, so clients must retain the visible address as a fallback. + +## Portal timeout + +When a configuration-portal timeout is enabled, `POST /api/portal/timeout-reset` restarts the countdown and returns `{ "ok": true, "timeoutSecondsRemaining": N }`. The built-in overview exposes this as an explicit reset control; custom clients may use the documented endpoint too. ## API design rules diff --git a/docs/PORTAL_UI.md b/docs/PORTAL_UI.md index 0993d7d..e5d8c38 100644 --- a/docs/PORTAL_UI.md +++ b/docs/PORTAL_UI.md @@ -15,7 +15,7 @@ WiFiManager wifi; namespace { const char kTitle[] PROGMEM = "Set up Temperature Monitor"; const char kIdentity[] PROGMEM = "Example Devices"; -const char kIntro[] PROGMEM = "Connect this device to Wi-Fi."; +const char kTagline[] PROGMEM = "Reliable setup for connected devices."; const char kLogoAlt[] PROGMEM = "Example Devices"; const char kLogo[] PROGMEM = R"svg()svg"; const char kPage[] PROGMEM = "#f4f7f3"; @@ -26,7 +26,7 @@ const char kAccentText[] PROGMEM = "#ffffff"; const WiFiManagerPortalConfig kPortalUI = { WiFiManagerPortalText::progmem(kTitle), WiFiManagerPortalText::progmem(kIdentity), - WiFiManagerPortalText::progmem(kIntro), + WiFiManagerPortalText::progmem(kTagline), WiFiManagerPortalAsset::svgFromProgmem(kLogo), WiFiManagerPortalText::progmem(kLogoAlt), { @@ -58,9 +58,9 @@ Leave a text or colour value empty, or a radius at `0`, to retain the built-in s | Field | Used by | | --- | --- | -| `title` | Document title and portal heading | -| `identityText` | Product/device line below the heading | -| `homeIntro` | Introductory text on the home view | +| `title` | Document title and concise setup-page heading | +| `identityText` | Company or product name in the header above navigation | +| `tagline` | Short tagline in the header above navigation | | `logo.svg`, `logoAltText` | Optional trusted inline SVG and its accessible label | | `pageBackground`, `surface`, `text`, `mutedText`, `border` | Portal surfaces and text | | `accent`, `accentHover`, `accentText` | Primary links and actions | @@ -75,6 +75,5 @@ Presentation uses one configuration route: `setPortalConfig()`. Existing structu There is no arbitrary HTML shell, route replacement, navigation injection, raw stylesheet, or script hook. If a product needs a new portal capability, add a narrow WiFiManager contract and test it on both supported targets. -For a DeviceFramework device, use `DeviceFrameworkUIConfig`; DeviceFramework maps its product-level configuration into this portal API. See [DeviceFramework web UI](https://github.com/alexhopeoconnor/DeviceFramework/blob/main/docs/WEB_UI.md). Back to the [documentation index](README.md) or [project overview](../README.md). diff --git a/docs/README.md b/docs/README.md index 2646221..7aca98c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,20 +1,12 @@ # WiFiManager documentation -This maintained fork intentionally has a narrower, explicit customisation boundary than upstream WiFiManager. - | I want to… | Read | | --- | --- | | Start a basic portal or install a released dependency | [Getting started](GETTING_STARTED.md) | | Brand the portal or add structured built-in content | [Portal UI](PORTAL_UI.md) | | Configure primary/fallback station profiles or their portal workflow | [Station profiles](STATION_PROFILES.md) | | Consume JSON endpoints or station-connect status | [Portal API](PORTAL_API.md) | -| Build a clean consumer | [Testing](TESTING.md) | +| Build or flash a complete example | [Examples](../examples/README.md) | | Work on this fork or make a release | [Development and releases](DEVELOPMENT.md) | -## Documentation rules - -- Portal UI owns branding, semantic theming, and the supported `portal*` surface. -- Portal API owns HTTP response contracts. -- The root README is a short onboarding page, not an API reference. - Back to the [project overview](../README.md). diff --git a/docs/STATION_PROFILES.md b/docs/STATION_PROFILES.md index 3cb4ea6..ce1201c 100644 --- a/docs/STATION_PROFILES.md +++ b/docs/STATION_PROFILES.md @@ -2,7 +2,7 @@ WiFiManager 3.1.0 adds an opt-in station-profile controller for applications that need a primary Wi-Fi network and one fallback. It is independent of the legacy `autoConnect()` flow: existing WiFiManager consumers do not need to change. -DeviceFramework enables this controller and supplies its CRC-protected storage. A direct WiFiManager consumer supplies its own durable store, or can use the controller only for the current process. +A WiFiManager application supplies its own durable store. The controller can also be used with an in-memory store for a temporary session, but credentials will not survive a restart. ## Lifecycle @@ -57,6 +57,6 @@ In profile mode, the existing Wi-Fi page becomes a two-profile form. It remains The portal requires a non-empty primary SSID. Its API never returns a password; it only reports whether one is set. -See [Portal API](PORTAL_API.md) for the shared connection-status response and [DeviceFramework configuration](https://github.com/alexhopeoconnor/DeviceFramework/blob/main/docs/CONFIGURATION.md) for the local-profile JSON that supplies these slots. +See [Portal API](PORTAL_API.md) for the shared connection-status response. The buildable [Station Profiles](../examples/StationProfiles/) example contains a compact EEPROM-backed store for both supported ESP targets. Back to [documentation](README.md) · [project overview](../README.md). diff --git a/docs/TESTING.md b/docs/TESTING.md index de56b48..8026e10 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -9,6 +9,6 @@ check, so dependency resolution uses the current manifest rather than a stale ./scripts/test.sh compile --platform esp32 ``` -CI runs both checks for pushes to the maintained branch and pull requests. They compile only; hardware portals remain a local integration concern for an application or DeviceFramework’s connected-device suite. +CI runs both checks for pushes to the maintained branch and pull requests. They compile only; hardware portals remain a local integration concern for the consuming application. Back to [documentation](README.md) · [project overview](../README.md). diff --git a/docs/assets/portal-esp32-branded-overview.png b/docs/assets/portal-esp32-branded-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad99714302664550aeb12108525a267ac91e5bc GIT binary patch literal 110155 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

>d^w)T@P{XQ}KkfPW(+EdQ+ee&UgO!N8;D5no>? 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

  • xw1! zp$n&vjSNLc6K=${1pF`H6h;s=nif0MI!h*--Tx~-^VwLRK6K*@dF#CJM`;xqrY4rz zJM$Q#%g*^(#WA+?Z?B?N^TrYu{)e77V#9Mn7jmBi^@pA|#>I(Z;kiDit(n*I**Rfe zp(Uy1sPS;Ki4Z2coVzD#O4(g4hG@aqd+xjR-R%5yG*9#S2_;jwru5gZg>uGG7qfh; ztpG;=vv^GqH?1w9md%BH|M4^y{|h~XdhW{-XBiTSGD~zPCFbw-hXQf)h)N7VPkkPO)%U(%MYDBD{s&KI3S-0jfUM&p zd@h~8JjcN;l#=TFGfdh;`k9Uis^rc0gzgCe{=d~H0jqEGZ}q=oeZn0GN$y8Y|0YWW zz3vscOyoK5RTRg?oAK5-*65l083bs z2M$Mk;{bEN-V>XcLfM>CAqYfijUVrepY`KM`Y2{#;^+Ze^ghedyE&Q= zX<;+@|F!VC;z+yJIb?G5lP|G~G;0HEu{TQz5~APzoh1fVC+Lcq`A0umq3mvRegx`0~a7REG8r-Xs-EL@o!ize^KIc*v=+h`5J2B3}i_dyOUVwos~?zmxb4t;}IjP;Sg}aNOeK$0f%1Y^WcAO^XuKNlPoo3;&e_ zCv66<%ngp~SwVjVK%5J7##LYe;JzjmenXb$}EF6x)AxVNsQsndUU&- zb*vw8Tf4dOSKsCtfmU#~9B85Ed!`4rpMHXlJ@ne!$3pqA*C5{K(mIt^>^>Jq+2!7a z(IYuJ`aA4u8X;5&W$#}X={-n8-!t=z0x=3|nb=q~-?716&mC;_7+gx_X?CW!Wi z0^lI7@1;I!H0xp>W_HIeFTg{8y>Q#8?o`b;e=L-u4)I}R{Cp>N%3+QP1i;Z%t345~ z?5@W)Ho#@GovD%wC)c^NGo?;d2Uj;8ZF{}*EVfmo?(tc&g^pXzA2uY3Jbw64KE-lO z${V@p63_2m|FWj(b6KndH4xwVG9Uz^y7#X9ojeq(47LY^lN%W&TC`J0_B1d=Tu-dH z%y#NPI&fT-*2i}ZAG{JrPDdD#

    Z5ni^CZV;=z+ZPj^${t%sFuQ$QX&OUtN1Avn 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
    x?@Z@8=+%rnP@)KU+*_5n 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 literal 0 HcmV?d00001 diff --git a/docs/assets/portal-esp8266-custom-wifi.png b/docs/assets/portal-esp8266-custom-wifi.png new file mode 100644 index 0000000000000000000000000000000000000000..60e4be2f7845a02a10ff3f0909ba3ddf8921e7e1 GIT binary patch literal 111551 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 VwzHN~5rBX9Zj0VZy{YE@zW~Mp +#include + +WiFiManager portal; + +void setup() { + Serial.begin(115200); + portal.setConfigPortalTimeout(180); + + portal.autoConnect("WiFiManager Basic", "example-pass"); + + Serial.println("Connected. Run your normal application here."); +} + +void loop() { portal.process(); } diff --git a/examples/BasicPortal/README.md b/examples/BasicPortal/README.md new file mode 100644 index 0000000..2beb52c --- /dev/null +++ b/examples/BasicPortal/README.md @@ -0,0 +1,12 @@ +# Basic Portal + +This is the smallest useful WiFiManager application. It first tries the credentials the ESP platform already knows. If it cannot connect, it opens an access point named **WiFiManager Basic** with password **example-pass**. + +1. Build and flash the selected `esp8266` or `esp32` environment. +2. Connect a phone or computer to **WiFiManager Basic**. +3. Open `http://192.168.4.1/` if your captive-portal helper does not open it automatically. +4. Select a network and save it. The board joins that network and the next reboot reconnects without opening the portal. + +The access-point password is only an example. Choose a unique, Wi-Fi-valid password for a real product. + +See the shared [example guide](../README.md) and [getting started](../../docs/GETTING_STARTED.md). diff --git a/examples/BasicPortal/platformio.ini b/examples/BasicPortal/platformio.ini new file mode 100644 index 0000000..7e1654e --- /dev/null +++ b/examples/BasicPortal/platformio.ini @@ -0,0 +1,26 @@ +[platformio] +default_envs = esp8266 +src_dir = . + +[common] +framework = arduino +lib_ldf_mode = deep+ +lib_deps = + WiFiManager=symlink://../.. + +[env:esp8266] +extends = common +platform = espressif8266 +board = d1_mini +platform_packages = + platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3 + +[env:esp32] +extends = common +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip +board = esp32dev +build_unflags = -std=gnu++11 +build_flags = + -std=gnu++14 + -DSOC_WIFI_SUPPORTED=1 + -I${platformio.packages_dir}/framework-arduinoespressif32/libraries/Network/src diff --git a/examples/BrandedPortal/BrandedPortal.ino b/examples/BrandedPortal/BrandedPortal.ino index 98ff1fb..b9f2df3 100644 --- a/examples/BrandedPortal/BrandedPortal.ino +++ b/examples/BrandedPortal/BrandedPortal.ino @@ -6,7 +6,7 @@ WiFiManager wifi; namespace { const char kPortalTitle[] PROGMEM = "Set up Temperature Monitor"; const char kPortalIdentity[] PROGMEM = "Example Devices"; -const char kPortalIntro[] PROGMEM = "Connect this device to Wi-Fi."; +const char kPortalTagline[] PROGMEM = "Reliable setup for connected devices."; const char kPortalLogoAlt[] PROGMEM = "Example Devices"; const char kExampleLogo[] PROGMEM = ""; const char kPage[] PROGMEM = "#f4f7f3"; @@ -18,7 +18,7 @@ const char kAccentText[] PROGMEM = "#ffffff"; const WiFiManagerPortalConfig kPortalUI = { WiFiManagerPortalText::progmem(kPortalTitle), WiFiManagerPortalText::progmem(kPortalIdentity), - WiFiManagerPortalText::progmem(kPortalIntro), + WiFiManagerPortalText::progmem(kPortalTagline), WiFiManagerPortalAsset::svgFromProgmem(kExampleLogo), WiFiManagerPortalText::progmem(kPortalLogoAlt), { @@ -42,9 +42,7 @@ void setup() { Serial.println("Portal UI configuration was rejected"); } wifi.setConfigPortalTimeout(180); - if (!wifi.autoConnect("Temperature Monitor")) { - ESP.restart(); - } + wifi.autoConnect("Temperature Monitor"); } -void loop() {} +void loop() { wifi.process(); } diff --git a/examples/BrandedPortal/README.md b/examples/BrandedPortal/README.md new file mode 100644 index 0000000..b1947c0 --- /dev/null +++ b/examples/BrandedPortal/README.md @@ -0,0 +1,9 @@ +# Branded Portal + +This example uses the supported `WiFiManagerPortalConfig` presentation API to give the built-in portal a product name, company identity, tagline, inline SVG mark, and semantic colour tokens. + +Flash the `esp8266` or `esp32` environment, join **Temperature Monitor**, and open `http://192.168.4.1/`. The visual changes come from static firmware data; WiFiManager still owns the portal routes, forms, validation, and captive-network behaviour. + +Use only trusted compiled SVG data. Keep the backing strings static for the lifetime of the firmware, then call `setPortalConfig()` before opening a portal. + +See [Portal UI](../../docs/PORTAL_UI.md) and the shared [example guide](../README.md). diff --git a/examples/BrandedPortal/platformio.ini b/examples/BrandedPortal/platformio.ini new file mode 100644 index 0000000..7e1654e --- /dev/null +++ b/examples/BrandedPortal/platformio.ini @@ -0,0 +1,26 @@ +[platformio] +default_envs = esp8266 +src_dir = . + +[common] +framework = arduino +lib_ldf_mode = deep+ +lib_deps = + WiFiManager=symlink://../.. + +[env:esp8266] +extends = common +platform = espressif8266 +board = d1_mini +platform_packages = + platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3 + +[env:esp32] +extends = common +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip +board = esp32dev +build_unflags = -std=gnu++11 +build_flags = + -std=gnu++14 + -DSOC_WIFI_SUPPORTED=1 + -I${platformio.packages_dir}/framework-arduinoespressif32/libraries/Network/src diff --git a/examples/CustomPortalContent/CustomPortalContent.ino b/examples/CustomPortalContent/CustomPortalContent.ino new file mode 100644 index 0000000..30676eb --- /dev/null +++ b/examples/CustomPortalContent/CustomPortalContent.ino @@ -0,0 +1,29 @@ +#include +#include + +WiFiManager portal; +WiFiManagerParameter brokerHost("broker_host", "MQTT broker", "mqtt.local", 40); + +void setup() { + Serial.begin(115200); + + portal.portalAddParameter(&brokerHost); + portal.portalAddInfoSection({ + "device", "Example device", + {{"firmware", "Firmware", "1.0.0"}, {"sensor", "Sensor", "Ready"}}, + }); + portal.portalAddHomeCard({ + "hint", "What this example adds", PortalHomeCardKind::Callout, + "A normal text setting, a status section, and a home-page callout.", {}, + }); + + portal.setSaveParamsCallback([](WiFiManager::WiFiManagerRequestArgs) { + Serial.print("MQTT broker selected: "); + Serial.println(brokerHost.getValue()); + }); + portal.setConfigPortalTimeout(180); + + portal.autoConnect("WiFiManager Content", "example-pass"); +} + +void loop() { portal.process(); } diff --git a/examples/CustomPortalContent/README.md b/examples/CustomPortalContent/README.md new file mode 100644 index 0000000..5874078 --- /dev/null +++ b/examples/CustomPortalContent/README.md @@ -0,0 +1,13 @@ +# Custom Portal Content + +This example keeps WiFiManager’s portal navigation, validation, and captive behaviour, while adding three application-owned pieces of content: + +- an editable MQTT broker host field; +- a compact device-information section; +- a callout on the portal overview. + +It opens **WiFiManager Content** with password **example-pass** until it has working station credentials. Save the form, then inspect serial output to see the selected broker value. + +The parameter object is global because WiFiManager reads it for the lifetime of the portal. In a real application, copy the value into that application’s own validated persistent configuration inside the save callback. + +See [Portal UI](../../docs/PORTAL_UI.md) and the shared [example guide](../README.md). diff --git a/examples/CustomPortalContent/platformio.ini b/examples/CustomPortalContent/platformio.ini new file mode 100644 index 0000000..7e1654e --- /dev/null +++ b/examples/CustomPortalContent/platformio.ini @@ -0,0 +1,26 @@ +[platformio] +default_envs = esp8266 +src_dir = . + +[common] +framework = arduino +lib_ldf_mode = deep+ +lib_deps = + WiFiManager=symlink://../.. + +[env:esp8266] +extends = common +platform = espressif8266 +board = d1_mini +platform_packages = + platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3 + +[env:esp32] +extends = common +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip +board = esp32dev +build_unflags = -std=gnu++11 +build_flags = + -std=gnu++14 + -DSOC_WIFI_SUPPORTED=1 + -I${platformio.packages_dir}/framework-arduinoespressif32/libraries/Network/src diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..f9c9888 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,22 @@ +# WiFiManager examples + +Every directory below is a standalone PlatformIO project. Build it from the repository root or the example directory: + +```bash +pio run -d examples/BasicPortal -e esp8266 +pio run -d examples/BasicPortal -e esp8266 -t upload +pio device monitor -d examples/BasicPortal -e esp8266 +``` + +Choose `esp32` for an ESP32 development board. The examples use the checked-out WiFiManager source, so they are also useful while developing this fork. + +| Example | Start here when you want to… | +| --- | --- | +| [Basic Portal](BasicPortal/) | provision one board through the normal saved-network-or-portal flow | +| [Custom Portal Content](CustomPortalContent/) | add application settings and useful status cards to the built-in portal | +| [Branded Portal](BrandedPortal/) | change the portal’s identity, logo, and semantic visual theme | +| [Station Profiles](StationProfiles/) | remember a primary Wi-Fi network and one fallback in application-owned EEPROM storage | + +The portal examples intentionally begin with no station credentials. On first boot, connect to the access point printed on serial and open `http://192.168.4.1/`. + +Back to the [project overview](../README.md). diff --git a/examples/StationProfiles/README.md b/examples/StationProfiles/README.md new file mode 100644 index 0000000..8048364 --- /dev/null +++ b/examples/StationProfiles/README.md @@ -0,0 +1,9 @@ +# Station Profiles + +This example gives WiFiManager a small application-owned EEPROM store. The portal accepts a required primary Wi-Fi network and an optional fallback, verifies a submitted network before saving it, then remembers the last successful choice across restarts. + +On a blank board, connect to **WiFiManager Profiles** with password **example-pass** and open `http://192.168.4.1/`. Enter a primary network and, if useful, one fallback. After a successful connection, restart the board to confirm that it tries the saved profiles before reopening the portal. + +`StoredProfiles` is intentionally simple so the ownership boundary is visible. A production application should add its own record versioning and integrity protection around the application’s complete configuration; WiFiManager only owns network-selection policy. + +See [Station profiles](../../docs/STATION_PROFILES.md) and the shared [example guide](../README.md). diff --git a/examples/StationProfiles/StationProfiles.ino b/examples/StationProfiles/StationProfiles.ino new file mode 100644 index 0000000..00b7d2f --- /dev/null +++ b/examples/StationProfiles/StationProfiles.ino @@ -0,0 +1,63 @@ +#include +#include +#include + +namespace { +constexpr uint32_t kStoreMagic = 0x574D5031; // "WMP1" + +struct StoredProfiles { + uint32_t magic; + WiFiManagerStationProfiles profiles; +}; + +class EepromProfileStore final : public WiFiManagerStationProfileStore { +public: + bool begin() { +#if defined(ESP32) + return EEPROM.begin(sizeof(StoredProfiles)); +#else + EEPROM.begin(sizeof(StoredProfiles)); + return true; +#endif + } + + bool load(WiFiManagerStationProfiles& profiles) override { + StoredProfiles stored{}; + EEPROM.get(0, stored); + if (stored.magic != kStoreMagic) { + return false; + } + profiles = stored.profiles; + return true; + } + + bool save(const WiFiManagerStationProfiles& profiles) override { + EEPROM.put(0, StoredProfiles{kStoreMagic, profiles}); + return EEPROM.commit(); + } + + bool clear() override { + EEPROM.put(0, StoredProfiles{}); + return EEPROM.commit(); + } +}; + +EepromProfileStore profileStore; +WiFiManager portal; +} // namespace + +void setup() { + Serial.begin(115200); + if (!profileStore.begin()) { + Serial.println("Could not initialise EEPROM profile storage"); + return; + } + + portal.setStationProfileStore(&profileStore); + portal.setStationRecoveryInterval(30000); + portal.startStationConnection("WiFiManager Profiles", "example-pass"); +} + +void loop() { + portal.process(); +} diff --git a/examples/StationProfiles/platformio.ini b/examples/StationProfiles/platformio.ini new file mode 100644 index 0000000..7e1654e --- /dev/null +++ b/examples/StationProfiles/platformio.ini @@ -0,0 +1,26 @@ +[platformio] +default_envs = esp8266 +src_dir = . + +[common] +framework = arduino +lib_ldf_mode = deep+ +lib_deps = + WiFiManager=symlink://../.. + +[env:esp8266] +extends = common +platform = espressif8266 +board = d1_mini +platform_packages = + platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3 + +[env:esp32] +extends = common +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip +board = esp32dev +build_unflags = -std=gnu++11 +build_flags = + -std=gnu++14 + -DSOC_WIFI_SUPPORTED=1 + -I${platformio.packages_dir}/framework-arduinoespressif32/libraries/Network/src diff --git a/lib/WiFiManager/include/WiFiManager.h b/lib/WiFiManager/include/WiFiManager.h index 576c2c1..2c00050 100644 --- a/lib/WiFiManager/include/WiFiManager.h +++ b/lib/WiFiManager/include/WiFiManager.h @@ -268,7 +268,7 @@ struct PortalHomeCard { struct PortalBrandState { WiFiManagerPortalText title; WiFiManagerPortalText identityTextOverride; - WiFiManagerPortalText homeIntro; + WiFiManagerPortalText tagline; WiFiManagerPortalAsset logo; WiFiManagerPortalText logoAltText; }; @@ -915,7 +915,7 @@ class WiFiManager // preload scanning causes AP to delay showing for users, but also caches and lets the cp load faster once its open // my scan takes 7-10 seconds public: - boolean _preloadwifiscan = false; // preload wifiscan if true + boolean _preloadwifiscan = true; // begin one asynchronous scan as the portal starts unsigned int _scancachetime = 30000; // ms cache time for preload scans protected: @@ -963,6 +963,7 @@ protected: void handleStationAttemptFailure(uint8_t status, const String& message); void handleStationConnectionSuccess(); void completePortalStationAttempt(bool success, uint8_t status, const String& message); + void acknowledgePortalConnectHandoff(); void enterStationPortal(); bool hasUsableStationConnection() const; bool isStationProfileEnabled(const WiFiManagerStationProfiles& profiles, uint8_t slot) const; @@ -1083,6 +1084,7 @@ protected: _cpConnectStationIp = stationIp; _cpConnectStatus = status; } + void wmTestCompleteProfilePortalConnectionSuccess(); void wmTestSetPortalConnectFailure(const String& message, uint8_t status = WL_CONNECT_FAILED) { _cpConnectState = wm_cp_connect_state_t::failed; _cpConnectMessage = message; diff --git a/lib/WiFiManager/include/WiFiManagerHandlers.h b/lib/WiFiManager/include/WiFiManagerHandlers.h index 594385e..5ef4c22 100644 --- a/lib/WiFiManager/include/WiFiManagerHandlers.h +++ b/lib/WiFiManager/include/WiFiManagerHandlers.h @@ -55,6 +55,8 @@ class WiFiManagerHandlers { void handleApiWifiMeta(AsyncWebServerRequest *request); void handleApiWifiSave(AsyncWebServerRequest *request); void handleApiWifiConnectStatus(AsyncWebServerRequest *request); + void handleApiWifiConnectComplete(AsyncWebServerRequest *request); + void handleApiPortalTimeoutReset(AsyncWebServerRequest *request); void handleApiParamsGet(AsyncWebServerRequest *request); void handleApiParamsSave(AsyncWebServerRequest *request); void handleApiInfo(AsyncWebServerRequest *request); diff --git a/lib/WiFiManager/include/WiFiManagerPortalUI.h b/lib/WiFiManager/include/WiFiManagerPortalUI.h index 5b6e187..a1a3bee 100644 --- a/lib/WiFiManager/include/WiFiManagerPortalUI.h +++ b/lib/WiFiManager/include/WiFiManagerPortalUI.h @@ -84,7 +84,7 @@ struct WiFiManagerPortalTheme { struct WiFiManagerPortalConfig { WiFiManagerPortalText title; WiFiManagerPortalText identityText; - WiFiManagerPortalText homeIntro; + WiFiManagerPortalText tagline; WiFiManagerPortalAsset logo; WiFiManagerPortalText logoAltText; WiFiManagerPortalTheme theme; diff --git a/lib/WiFiManager/include/WiFiManagerServer.h b/lib/WiFiManager/include/WiFiManagerServer.h index 79def1f..927cedf 100644 --- a/lib/WiFiManager/include/WiFiManagerServer.h +++ b/lib/WiFiManager/include/WiFiManagerServer.h @@ -15,6 +15,8 @@ * GET /api/wifi/meta * POST /api/wifi/save * GET /api/wifi/connect-status + * POST /api/wifi/connect-complete + * POST /api/portal/timeout-reset * GET /api/params * POST /api/params/save * GET /api/info @@ -55,6 +57,8 @@ const char R_api_wifi_scan[] PROGMEM = "/api/wifi/scan"; const char R_api_wifi_meta[] PROGMEM = "/api/wifi/meta"; const char R_api_wifi_save[] PROGMEM = "/api/wifi/save"; const char R_api_wifi_connect_status[] PROGMEM = "/api/wifi/connect-status"; +const char R_api_wifi_connect_complete[] PROGMEM = "/api/wifi/connect-complete"; +const char R_api_portal_timeout_reset[] PROGMEM = "/api/portal/timeout-reset"; const char R_api_params[] PROGMEM = "/api/params"; const char R_api_params_save[] PROGMEM = "/api/params/save"; const char R_api_info[] PROGMEM = "/api/info"; diff --git a/lib/WiFiManager/include/templates/CSS.h b/lib/WiFiManager/include/templates/CSS.h index 9b0676f..c2e8f40 100644 --- a/lib/WiFiManager/include/templates/CSS.h +++ b/lib/WiFiManager/include/templates/CSS.h @@ -74,19 +74,21 @@ const char CSS_STYLE[] PROGMEM = "