- Mensajes: 16
- Gracias recibidas: 0
Aviso
El foro está en modo de sólo lectura.
ESP8266-01s para portalwifi
- RedPitiusa
- Autor del tema
- Fuera de línea
- Navegador Iniciado
Menos
Más
6 años 3 meses antes #1513
por RedPitiusa
Respuesta de RedPitiusa sobre el tema ESP8266-01s para portalwifi
Saludos a todos !!
llevo ya un tiempo trasteando un este tema del portal wifi y la verdad que va muy bien pero ahora se me ha ocurrido una mejora y no se muy bien como lograrlo ..
bien, imagina que llega un amigo o alguien y quiere un cacharro de estos porque le va muy bien .. ok , tu le programas uno y se lo instalas y va de lujo.. el tema es que como eres tu quien lo programa , tu sabes la clave del punto de acceso y el usuario no sabrá como cambiarlo ( suponiendo que el usuario final no tenga los conocimientos para ello ) si no eres tu quien se lo cambie cosa que seguirías conociendo tu la clave cada vez que lo cambies y eso a veces resulta un poco raro, el echo de no tener la total privacidad de tu acceso.. si es para tu casa no pasa nada , pero si es para otro ... la cosa cambia ..
mi pregunta es , como generar una web que permita al usuario cambiar el nombre del AP , la clave del AP y lo guarde??
creo que es posible ... he visto un código que hace algo similar .. este código permite al usuario cambiar los datos de conexión ( ssid y pass ) de la esp8266 sin tener que re escribir el código.. lo hace desde una web de configuración que genera la propia esp ..
les dejare el código de ejemplo que vi , por si alguien sabe como adaptarlo para este caso ...
este ejemplo lo que hace es que al entrar en modo AP , genera una web de configuración donde no permite cambiar los datos y grabarlos en la EEPROM para luego tomar de allí mismo los datos de conexión ..
yo llevo unos dias probando he intentado adaptar esta funcionalidad al proyecto de portal wifi pero de momento no lo consigo ..
espero a ver si alguien me echa una mano en esto..!!!
gracias !!
llevo ya un tiempo trasteando un este tema del portal wifi y la verdad que va muy bien pero ahora se me ha ocurrido una mejora y no se muy bien como lograrlo ..
bien, imagina que llega un amigo o alguien y quiere un cacharro de estos porque le va muy bien .. ok , tu le programas uno y se lo instalas y va de lujo.. el tema es que como eres tu quien lo programa , tu sabes la clave del punto de acceso y el usuario no sabrá como cambiarlo ( suponiendo que el usuario final no tenga los conocimientos para ello ) si no eres tu quien se lo cambie cosa que seguirías conociendo tu la clave cada vez que lo cambies y eso a veces resulta un poco raro, el echo de no tener la total privacidad de tu acceso.. si es para tu casa no pasa nada , pero si es para otro ... la cosa cambia ..
mi pregunta es , como generar una web que permita al usuario cambiar el nombre del AP , la clave del AP y lo guarde??
creo que es posible ... he visto un código que hace algo similar .. este código permite al usuario cambiar los datos de conexión ( ssid y pass ) de la esp8266 sin tener que re escribir el código.. lo hace desde una web de configuración que genera la propia esp ..
les dejare el código de ejemplo que vi , por si alguien sabe como adaptarlo para este caso ...
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
//-------------------VARIABLES GLOBALES--------------------------
int contconexion = 0;
unsigned long previousMillis = 0;
char ssid[50];
char pass[50];
const char *ssidConf = "tutorial";
const char *passConf = "12345678";
String mensaje = "";
//-----------CODIGO HTML PAGINA DE CONFIGURACION---------------
String pagina = "<!DOCTYPE html>"
"<html>"
"<head>"
"<title>Tutorial Eeprom</title>"
"<meta charset='UTF-8'>"
"</head>"
"<body>"
"</form>"
"<form action='guardar_conf' method='get'>"
"SSID:<br><br>"
"<input class='input1' name='ssid' type='text'><br>"
"PASSWORD:<br><br>"
"<input class='input1' name='pass' type='password'><br><br>"
"<input class='boton' type='submit' value='GUARDAR'/><br><br>"
"</form>"
"<a href='escanear'><button class='boton'>ESCANEAR</button></a><br><br>";
String paginafin = "</body>"
"</html>";
//------------------------SETUP WIFI-----------------------------
void setup_wifi() {
// Conexión WIFI
WiFi.mode(WIFI_STA); //para que no inicie el SoftAP en el modo normal
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED and contconexion <50) { //Cuenta hasta 50 si no se puede conectar lo cancela
++contconexion;
delay(250);
Serial.print(".");
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
}
if (contconexion <50) {
Serial.println("");
Serial.println("WiFi conectado");
Serial.println(WiFi.localIP());
digitalWrite(13, HIGH);
}
else {
Serial.println("");
Serial.println("Error de conexion");
digitalWrite(13, LOW);
}
}
//--------------------------------------------------------------
WiFiClient espClient;
ESP8266WebServer server(80);
//--------------------------------------------------------------
//-------------------PAGINA DE CONFIGURACION--------------------
void paginaconf() {
server.send(200, "text/html", pagina + mensaje + paginafin);
}
//--------------------MODO_CONFIGURACION------------------------
void modoconf() {
delay(100);
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
delay(100);
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
WiFi.softAP(ssidConf, passConf);
IPAddress myIP = WiFi.softAPIP();
Serial.print("IP del acces point: ");
Serial.println(myIP);
Serial.println("WebServer iniciado...");
server.on("/", paginaconf); //esta es la pagina de configuracion
server.on("/guardar_conf", guardar_conf); //Graba en la eeprom la configuracion
server.on("/escanear", escanear); //Escanean las redes wifi disponibles
server.begin();
while (true) {
server.handleClient();
}
}
//---------------------GUARDAR CONFIGURACION-------------------------
void guardar_conf() {
Serial.println(server.arg("ssid"));//Recibimos los valores que envia por GET el formulario web
grabar(0,server.arg("ssid"));
Serial.println(server.arg("pass"));
grabar(50,server.arg("pass"));
mensaje = "Configuracion Guardada...";
paginaconf();
}
//----------------Función para grabar en la EEPROM-------------------
void grabar(int addr, String a) {
int tamano = a.length();
char inchar[50];
a.toCharArray(inchar, tamano+1);
for (int i = 0; i < tamano; i++) {
EEPROM.write(addr+i, inchar[i]);
}
for (int i = tamano; i < 50; i++) {
EEPROM.write(addr+i, 255);
}
EEPROM.commit();
}
//-----------------Función para leer la EEPROM------------------------
String leer(int addr) {
byte lectura;
String strlectura;
for (int i = addr; i < addr+50; i++) {
lectura = EEPROM.read(i);
if (lectura != 255) {
strlectura += (char)lectura;
}
}
return strlectura;
}
//---------------------------ESCANEAR----------------------------
void escanear() {
int n = WiFi.scanNetworks(); //devuelve el número de redes encontradas
Serial.println("escaneo terminado");
if (n == 0) { //si no encuentra ninguna red
Serial.println("no se encontraron redes");
mensaje = "no se encontraron redes";
}
else
{
Serial.print(n);
Serial.println(" redes encontradas");
mensaje = "";
for (int i = 0; i < n; ++i)
{
// agrega al STRING "mensaje" la información de las redes encontradas
mensaje = (mensaje) + "<p>" + String(i + 1) + ": " + WiFi.SSID(i) + " (" + WiFi.RSSI(i) + ") Ch: " + WiFi.channel(i) + " Enc: " + WiFi.encryptionType(i) + " </p>\r\n";
//WiFi.encryptionType 5:WEP 2:WPA/PSK 4:WPA2/PSK 7:open network 8:WPA/WPA2/PSK
delay(10);
}
Serial.println(mensaje);
paginaconf();
}
}
//------------------------SETUP-----------------------------
void setup() {
pinMode(13, OUTPUT); // D7
// Inicia Serial
Serial.begin(115200);
Serial.println("");
EEPROM.begin(512);
pinMode(14, INPUT); //D5
if (digitalRead(14) == 0) {
modoconf();
}
leer(0).toCharArray(ssid, 50);
leer(50).toCharArray(pass, 50);
setup_wifi();
}
//--------------------------LOOP--------------------------------
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 5000) { //envia la temperatura cada 5 segundos
previousMillis = currentMillis;
Serial.println("Funcionado...");
}
}
este ejemplo lo que hace es que al entrar en modo AP , genera una web de configuración donde no permite cambiar los datos y grabarlos en la EEPROM para luego tomar de allí mismo los datos de conexión ..
yo llevo unos dias probando he intentado adaptar esta funcionalidad al proyecto de portal wifi pero de momento no lo consigo ..
espero a ver si alguien me echa una mano en esto..!!!
gracias !!
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 3 meses antes #1514
por Jose Luis
Respuesta de Jose Luis sobre el tema ESP8266-01s para portalwifi
Entiendo lo que quieres hacer., pero como tengo hecho yo el proyecto no me convence. El portalwifi trabaja en modo Ap, con lo que no va a conectarse a otra web. Habria que cambiar a que funcione como ap mas cliente, nunca lo he probado.
Lo mas facil, creo yo, es que se instale con el nombre y la clave por omision, y una vez indentidicado, poder añadirle un pequeño formulario de cambiar clave.
No veo mucho problema en hacerlo, eso si, para poder hacer esto , has de guardar y recuperar la clave de la memoria eeprom, si no lo haces asi, cada vez que quites tension vovlera a los datos por omision.
Un saludo tio.
Lo mas facil, creo yo, es que se instale con el nombre y la clave por omision, y una vez indentidicado, poder añadirle un pequeño formulario de cambiar clave.
No veo mucho problema en hacerlo, eso si, para poder hacer esto , has de guardar y recuperar la clave de la memoria eeprom, si no lo haces asi, cada vez que quites tension vovlera a los datos por omision.
Un saludo tio.
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 3 meses antes - 6 años 3 meses antes #1515
por Jose Luis
Respuesta de Jose Luis sobre el tema ESP8266-01s para portalwifi
Por cierto, tengo un par de videos por ahi donde clono el mando de un huevo vbrador (en el canal de youtube). Pues bien, tambien he usado un wemos (tarjeta con esp8266) para simular el mando, usando un emisor rf y y activando y desactivando el mando desde internet (fuera de mi intranet). Es algo interesante para futuros proyectos, porque ademas el wemos mini pro, que es el que compre yo, aparte de una antena en placa decente, trae un conector para antena externa, con lo que se deberia ganar mucho en cobertura.
Última Edición: 6 años 3 meses antes por Jose Luis.
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 3 meses antes - 6 años 3 meses antes #1516
por Jose Luis
Respuesta de Jose Luis sobre el tema ESP8266-01s para portalwifi
No habia mirado el codigo, ya veo que haces lo que yo comentaba.
Me adelante sin mirar lo que querias hacer con el codigo. Como decias ir a una web, pense que te referias a otra, no incluir el codigo dentro del web server del wifi portal.
Me adelante sin mirar lo que querias hacer con el codigo. Como decias ir a una web, pense que te referias a otra, no incluir el codigo dentro del web server del wifi portal.
Última Edición: 6 años 3 meses antes por Jose Luis.
- RedPitiusa
- Autor del tema
- Fuera de línea
- Navegador Iniciado
Menos
Más
- Mensajes: 16
- Gracias recibidas: 0
6 años 3 meses antes #1517
por RedPitiusa
Respuesta de RedPitiusa sobre el tema ESP8266-01s para portalwifi
Ya.. si mas o menos la idea esta.. pero no logro encajar bien el código.. puedes echarme un cable con ello??
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 3 meses antes #1518
por Jose Luis
Respuesta de Jose Luis sobre el tema ESP8266-01s para portalwifi
Ahora mismo estoy de trabajao hasta la coronilla, hasta mediados de septiembre no me llega la tranquilidad de nuevo. Intentare probarlo, pero si te corre prisa no te puedo garantizar nada.
Que problemas te esta dando y que es lo que no te funciona?
Que problemas te esta dando y que es lo que no te funciona?
Tiempo de carga de la página: 0.108 segundos