2.6 KiB
Provisioning state feedback
A physical device should give useful feedback without relying on a captive-browser redirect. Existing consuming firmware uses WiFiManager state to make setup, recovery, and connected states visible through an LED, display, or local log.
State model
| Product state | WiFiManager signal | Typical feedback |
|---|---|---|
| Normal connected operation | Station/profile controller connected, no configuration portal | Normal indicator and application services. |
| Trying known networks | Profile status is attempting or switching | Short recovery indication; no claim that setup is active yet. |
| Setup portal active | getConfigPortalActive() is true or WM_EVENT_PORTAL_STARTED | Installer-oriented setup indication and instructions. |
| Portal submitted credentials | isConfigPortalConnectPending() is true | Progress indication. |
| Portal connection succeeded | didConfigPortalConnectSucceed() or WM_EVENT_PORTAL_CONNECT_SUCCESS | Connected confirmation; application decides when services start. |
| Portal connection failed | didConfigPortalConnectFail() or WM_EVENT_PORTAL_CONNECT_FAILED | Failure indication with retry/recovery policy. |
| Candidate connected but not stored | Station event plus storageSaveFailed | Warning: active connection may not survive restart. |
Polling pattern
void updateIndicator() {
if (wifi.getConfigPortalActive()) {
setIndicator(IndicatorState::Setup);
} else if (wifi.isConfigPortalConnectPending()) {
setIndicator(IndicatorState::Connecting);
} else if (wifi.didConfigPortalConnectFail()) {
setIndicator(IndicatorState::Offline);
} else {
setIndicator(IndicatorState::Normal);
}
}
Call this from the application loop after wifi.process(). For profile mode, add getStationStatus() so the product can distinguish an active station recovery attempt from a portal session.
Event pattern
Events reduce polling for transitions, but getters remain the authoritative state. Use setEventCallback() to record a transition or wake a product state machine, then read the relevant portal/profile status. Avoid performing long work in the callback; keep it suitable for the normal firmware loop.
Operator-facing messages
Use getConfigPortalConnectMessage() and getWLStatusString() for concise local diagnostics. Never place Wi-Fi passwords, portal parameter values, or secrets in an operator display or remotely collected logs.
See Observability for the complete event list and Field installer provisioning for timeout policy.