Improv - BLE Wi-Fi provisioning for Elixir/Nerves devices

Most of the things I’ve seen in the Nerves ecosystem seem to assume that one is building devices for themselves, or their own fleet of things that have their own ways of provisioning them. In my case, I needed a way to easily let an end-user flash firmware to an SD card, power on a wifi-only device, and then somehow get wifi credentials to it.

One common way to do this is for the device to start up on its own wifi network, you join it via a device, then configure it. Since I’m building devices for Home Assistant though, I wanted to use the standard way ESPHome and Home Assistant devices typically provision… via Improv.

Improv uses BLE, so this library is built on top of bluez to handle the BLE bits, it can then configure VintageNet upon setup or something else, the scan/configure bits are configurable.

6 Likes