I would like to know what are the available ways one can send wifi creds to esp32 other than using wifimanager.
You have the bootstrap problem. The firmware can't know the WiFi credentials until it has been given them.
There are many ways to solve this. WiFi Protected Setup using the pushbutton method is one way. I haven't checked if this is available for the ESP32. I know from making printer firmware that a few years ago customers demanded WPS. Now, I no longer hear about it as a feature. Most access points support WPS, so it might be an option.
Another way that seems to have won in the market is to have the device present as an access point and web server. A web browser (or special app) connects to the AP and interacts with the web browser to supply WiFi credentials. Several IOT devices in my house work this was.
I have been using IotWebConf for this function. It is an extension of wifimanager, with a few more quirks. Like most Arduino libraries, I have patched it. In this case, to set up SSDP so that my phone can find it.
Of course, you can invent your own way:
- Compile in the credentials
- Send the credentials through a serial port
- Put the credentials on an SD card
- Implement a display and UI so the user can enter the credentials
- Other ways -- be creative.
Esp32 API has WPS support. Develop your firmware to use it. WPS is a simple, and very insecure protocol for "pairing" Wifi clients to the APs. Essentially, you need to push a button on the AP, and then initiate the WPS pairing. Then the AP will send the password to you as cleartext.
It uses the builtin nvs (non-volatile storage) API to register your WiFi passwords.