Hola amigos quería hacerles una consulta, e buscado harto como gestionar el ssid y psw de wifi en un esp32 y existen varias soluciones exceptuando o no e dado con ninguna que sea liviana, todas usan por lo menos el 50% del espacio, y mi consulta es, me pueden orientar que buscar o por dónde ir, solo quiero almacenar esas credenciales y que se puedan cambiar sin tener que cambiarlas desde código, de una forma lo mas liviana posible e usado (con éxito en resultado, pero no convencido por el gran espacio que usan) wifimanager, autoconnect, smartconfig, hasta ahora smartconfig es el más liviano pero aún así usa un 50%
Podrías usar algo como esto. Si un pin se mantiene BAJO al inicio (12 en el ejemplo), el programa solicitará el SSID y la contraseña del monitor serie. Esto se almacena en la EEPROM y se usa la próxima vez que se inicia el dispositivo.
Lo siento por el mal español. Yo usé el traductor de Google.
#include <EEPROM.h>
#include <WiFi.h>
#define PIN 12
char ssid[32];
char pass[32];
uint8_t idx = 0;
void setup()
{
Serial.begin(115200);
EEPROM.begin(64);
pinMode (PIN, INPUT_PULLUP);
if (digitalRead(PIN) == LOW)
{
Serial.println("Enter SSID:");
while (Serial.available() == 0);
while (Serial.available() > 0)
{
char c = Serial.read();
if (c != '\r' && c != '\n')
ssid[idx++] = c;
delay(50);
}
ssid[idx] = '\0';
idx = 0;
Serial.println("Enter Password:");
while (Serial.available() == 0);
while (Serial.available() > 0)
{
char c = Serial.read();
if (c != '\r' && c != '\n')
pass[idx++] = c;
delay(50);
}
pass[idx] = '\0';
EEPROM.put(0 , ssid);
EEPROM.put(32, pass);
EEPROM.commit();
}
EEPROM.get(0, ssid);
EEPROM.get(32, pass);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.print("WiFi connected, IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
}
Estimado @red_car muchas gracias por tomarte el tiempo de leer y responder, la solución planteada está bien en el ámbito de gestionar las credenciales, pero al momento de querer cambiarlas igual implicaría tener que llevar un PC o notebook para poder realizar el cambio y gestionar el monitor serial.
Creo que la solución va por usar una esp que solo administre las credenciales y se las envié a otra que ejecuta el programa (claro está para programas que usen mucho espacio)
No sé si alguien tiene soluciones a esto como lo encaran?
Cuando tienen una app que usa más del 60% de la memoria? La idea es poder desarrollar un producto y que el cliente final pueda gestionar la red wifi de forma sencilla, ya la conección al broker se podría gestionar fuera de la placa
La mejor es WifiManager búscala en el Administrador de Programas del IDE.
Hay otra mas que no recuerdo el nombre. Búscala como WifiManager alternatives en Google
Siempre busca usando idioma inglés. Mi consejo.
@Surbyte Gracias por tomarte el tiempo de leer y responder mi mensaje, buscaré lo que me dices y luego paso a postear cuando encuentre solución por si le sirve en el futuro a alguien, por lo menos con autoconnect el "peso del programa" sube mucho a más del 50% por eso la consulta era hacerlo de la forma mas liviana posible ya que el programa que quiero adaptar usa más del 60% de la memoria y aún me faltan seguir programando algunas cosas ya más minimas, la idea es poder gestionar esas credenciales de forma "liviana" y de fácil uso para el cliente final
Gracias @red_car y @Surbyte por orientarme, compartiré mi experiencia por si a alguien más le sirve
Con respecto a wifi manager, autoconnect, iotwebconf son alternativas bastante buenas y sencillas de usar, si tú proyecto no usa mucho espacio sin duda son excelentes, por otro lado tenemos smartconfig una app desarrollada por espressif en la cual más liviana pero poco personalizable solo puedes enviar ssid y psw no entrega mayor info sobre la placa como las otras librerías mencionadas anteriormente, también indague una opción un poco más larga que es inertar una página web dentro de la placa para capturar datos y guardarlos, lo cual también es bastante llamativo, en conclusión
Si buscas algo liviano y que gestiones ssid y psw y no te importa mucho usar las herramientas de espressif sin duda smartconfig es una buenísima alternativa
Si quieres algo más personalizado y sencillo de usar con las librerías de wifi manager, autoconnect y iotwebconf lo lograrás fácilmente
Si quieres poner tu marca personal y capturar datos exclusivos la inserción de una web dentro de la memoria es el camino
Agradezco a todos por la ayuda y espero que esto le sirva a alguien más que lo necesite
Disculpad por reabrir este tema pero solo por aportar otro punto de vista.
Activar bluetooth del esp32 y que sea un puerto serie. desde un movil mandar cierta cadena por ese puerto serie que interprete el esp32 y que sean el ssid y las credenciales de la wifi a conectarse.
Aunque no me gusta personalmente que esté bluetooth+wifi activo a la vez por posibles problemas pero ahí está.
Saludos.