WiFi SSID and PW set via BLE

I'm hoping to use a BLE peripheral to accept ( write) values for SSID and PW, store them in external EEPROM, then (on Boot up) use those characters to replace the SECRET SSID & SECRET PASSWORD. BLE is currently almost a blur. I'd be surprised if this hasn't been done before on a 33 IOT.

Interesting idea. Are you asking for code that does this? Another idea is to try to connect to the current ssid and password with timeout. If timeout is hit, then go into AP mode and let the user connect over TCP / HTTP to enter in the credentials.

I’m not asking for code, but if anyone has already done this ( or something similar ) knowing it’s possible is half the battle. At present I’ve started to investigate constructing a BLE Peripheral. Eventually I’ll add the code to my existing project. I think that there are some other uses too, i.e. using a BLECharCharacteristic to alter aspects of the device configuration too.

Slow progress so far but the mist is clearing a little.

I didn't do it with Bluetooth, but for a bunch of ESP32, I have one of them acting as the "leader" that acquires the SSID and password, and then switches to ESP-Now, to then broadcast it to everyone else. Those without those credentials do WiFi channel switching, looking for those anonymous broadcasts. The message has light encryption, to identify and validate the payload; and to make it gibberish for anyone else.

The credentials are saved in "EEPROM", and they're good to go from then on. With a hard-reset (hold the button down for a long time), they wipe the slate and start over. A site can have bunch of units and the SSID there is set just once.

So no help on the BLE side, but doable in general.

I have a prototype device which was originally designed around a nano EVERY, but in order to (eventually) take advantage of Over the Air Updates I redesigned it to use a nano33 IoT. The Plan is that on start up ( boot ) it will enter a state where Bluetooth is initialised and waits for a BLE connection. This state can be exited by a button push into one of the devices normal operational states.

Back to the post booth (BLE) state: Here I use my iPhone to connect [that bit works] and I will then pass a CharCharacteristic representing the WiFi SSID [here I'm stuck - can only seem to pass a single Char]. Once I get that sorted, I'll then pass the relevant WiFi password. I will store the SSID and PW in an EEPROM on the device's PCB. In a [yet to be created] "update" state the device can connect to the local WiFi in readiness to perform a check - Is a new sketch available ? - with an option to initiate [some how] an Over the Air Update.

More ( small steps ) forward:
Using the "LightBlue" Iphone App I can transfer strings of text ( i'll limit it to 29 characters ) which can populate my variables mySSID and myPASS. Similarly from the App I can request a text sting myREV etc...
Trouble is, LightBlue is a bit messy... it displays huge strings of HEX values which may well be intimidating for "my end user" .. so I'm having a look at using Xcode and Swift to create a much more clear , simple and focused App.

LightBlue has the option to receive peripheral data in Hex, Octal, UTF-8 character string, or binary.

If you tap on the word HEX, the other format options appear for you to select an alternative.

I’m aware of the switch between HEX, Binary etc and I do use it to enter the text strings for SSID while continuing to develop my arduino based prototype products.
https://youtube.com/shorts/cMOSfZuFZfY?si=ufFTaWPEd3md0X8R
But from a customer’s point of view, a simple uncluttered screen with clearly defined functions is a better solution.

I try Xcode and Swift.

Arduino Provisioning 2.0 ( for UNOR4 WiFi board at present ) looks promising, I’m hoping that the Nano33 IOT will also be able to benefit from it too in the future.