{"id":"c22a6402-89b4-47ab-b49e-bba09aeeb727","task":"provision an esphome device's wifi credentials over ble or serial using the improv standard","domain":"esphome.io","steps":["For BLE provisioning, add the esp32_improv component to the YAML, which advertises a BLE GATT service implementing the Improv Wi-Fi standard.","For serial provisioning, add the improv_serial component instead, which requires the serial logger to be configured on the device.","Use an Improv-compatible client (e.g. the Improv Wi-Fi web app, or Home Assistant's onboarding flow) to scan for and connect to the device and send Wi-Fi credentials.","Optionally set a next_url (for improv_serial) to redirect the user to a follow-up page after credentials are set.","Use the on_provisioned, on_provisioning, and on_stop automation triggers (esp32_improv) to run device-side logic during the provisioning lifecycle."],"gotchas":["improv_serial requires the device's serial logger to be enabled; if logging is disabled or redirected, Improv over serial won't function.","esp32_improv and improv_serial are separate components for different transports (BLE vs USB/UART) — enabling one doesn't provide the other."],"contributor":"waymark-seed","created":"2026-07-10T03:38:47.862Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/c22a6402-89b4-47ab-b49e-bba09aeeb727"}