Buonasera a tutti,
ho bisogno del vs. aiuto perchè dopo parecchio tempo ho ripreso il mio interruttore wifi,
composto da schedina wemos d1 mini + relè + webserver ....
il problema che non riesco a risolvere è che dopo un certo tempo la wemos perde la connessione
o meglio funziona solo se faccio un reset fisico direttamente sulla scheda( cosa non fattibile una volta chiusa la scheda nella sua scatola).
Ho fatto molte prove e un sacco di copia e incolla( forse troppi) ma nulla da fare!
l'unica cosa che vi posso dire è che avendo 3 schede uguali le ho provate tutte e tre e il problema persiste
per cui penso che il problema ( ed è per questo che ho scritto qui )sia del mio software.
vi allego lo sketch .. se qualcuno può darmi una mano ...come sempre ,,grazie in anticipo.
Tutta la sezione di verica connessione / reset etc etc è inutile e l'ESP8266 può gestire autonomamente la riconnessione in caso di caduta e ripristino del WiFi.
In passato questa funzionalità ogni tanto non funzionava a dovere, ma nelle ultime release l'hanno resa più stabile e va alla grande.
Visto che hai già impostato WiFi.setAutoConnect(true); deve funzionare anche nel tuo sketch.
Inoltre eliminerei l'istruzione WiFi.persistent(false); perché (credo) che in questo modo l'ESP non vada a salvare nella locazione di memoria prevista le credenziali WiFi e di conseguenza rende necessario il reset per instaurare una nuova connessione.
Anche il setup dei dns secondo me è di troppo... ci pensa il router a quello. A meno di particolari esigenze non è necessario impostarli manualmente.
Cosi come per l'indirizzo IP in realtà: visto che hai incluso la libreria ESP8266mDNS.h perché non la usi? In questo modo non devi ogni volta andare a preoccuparti di che indirizzo viene assegnato al wemos, ma puoi usare direttamente l'hostname: http://.local
const char* hostname = "esp8266Webserver";
void setup(){
.....
if(MDNS.begin(hostname){
Serial.println("MDNS responser started");
Serial.println("Open the browser at address http://esp8266Webserver or http://esp8266Webserver.local");
}
.....
}
void loop(){
....
MDNS.update();
....
}
P.S.
Se hai bisogno di eseguire qualcosa ogni volta che c'è connessione, puoi usare gli event handler ed associare una funzione di callback (dai un'occhiata all'esempio ESP8266WiFi -> WiFiEvents.ino per vedere come).
P.S.S.
La variabile globale response_message è inutile visto che poi usi quelle locali nelle funzioni.
Ti ringrazio per tutti gli accorgimenti da te sottolineati ,che adesso che li hai evidenziati è chiaro che sono frutto del copia incolla forsennato dovuto alla mia disperazione.. provvedo subito all'eliminazione ...
mi rimane però un dubbio potrebbe quindi essere il **WiFi.persistent(false); ** a causare la disconnessione del wemos ?
inoltre cosa intendi per "nelle ultime release l'hanno resa più stabile e va alla grande ", ?
Non proprio, secondo me causa la NON riconnessione.
Per il discorso delle release, mi riferisco alla versione del core ESP8266 per Arduino: la più recente è al momento la versione 2.7.4.
In passato anche io avevo riscontrato problemi con la riconnessione automatica... a volte andava a volte no.
Ma ormai è da un po' che uso questa opzione e funziona come ci si aspetta, quindi presumo che abbiano sistemato qualche bug.
Guarda, sto testando un mia libreria con un Wemos D1 mini proprio in questo momento... abilito e disabilito l'Access Point del telefono e lui si riconnette senza problemi ogni volta.
buongiorno,
ho lasciato acceso router e scheda wemos con relativo relè tutta la notte
poi questa mattina ho provato e funzionava.. ora purtroppo ho provato dal lavoro e mi dice
"impossibile raggiungere sito" -- ERR_ADDRESS_UNREACHABLE
non so se a questo punto c'è qualche problema hardware ... oggi provo a usare solo la wemos collegata diretta al pc e un semplice led .( senza relè e alimentatore esterno)..poi tidico!
grazie
Massibal
massibal:
... poi questa mattina ho provato e funzionava.. ora purtroppo ho provato dal lavoro e mi dice
"impossibile raggiungere sito" -- ERR_ADDRESS_UNREACHABLE
... stai provando dall'esterno della tua rete ... hai attivato NAT sul router (con tutti i rsichi di dare accesso dall'esterno ad un web server giocattolo come quello del ESP8266) ? ? ?
buongiorno Guglielmo,
veramente ho aperto una porta specifica ... ma il problema non penso che sia legato all'accesso da esterno rete perchè a casa facevo le prove anche dal cellulare con rete dati esterna e mi collego ad un IP statico con porta dedicata ...
purtroppo non capisco proprio a cosa sia dovuto questo disconnessione e soprattutto perchè per ricollegarsi ho bisogno di un reset!
massibal:
buongiorno Guglielmo,
veramente ho aperto una porta specifica ...
Ok, quindi, come ti chiedevo hai fatto NAT (Network address translation) sul router ... tu sai vero che sei esposto a qualsiasi attacco da parte della rete?
Non mi meraviglierebbe che quella porta è stata immediatamente individuata da uno delle diverse migliaia di BOT che girano per trovare certe cose e attaccata con diverse connessioni o cose simili ... :
massibal:
azz... no nessun NAT ...oltre ad implementare il NAT immediatamente ....
Se tu hai aperto la porta e l'hai riindirizzata sul ESP ... HAI fatto un NAT ... chiunque vada sul IP:port praticamente arriva sul tuo ESP ... :o :o :o
ESP8266 è un bel oggetto, ma il suo web-server e le sue capacità NON sono assolutamente adatte ad essere aperte su una rete pubblica dove, chiunque, lanciando 10 connessioni, te lo ammazza.
E' fatto per essere usato all'interno della tua rete, magari ricevendo comandi da un qualche cosa di interno che, in modo sicuro, riceve comandi dall'esterno. Hai presente tutti i Sonoff che sono in giro? Ne hai mai visto uno a cui accedi direttamente? NO, passi sempre per eWeLink in modo sicuro, lui poi, attraverso la tua rete e comanda gli ESP ...
oggi pomeriggio ,ho notato che la wemos si disconnette ma poi dopo un tempo che non so quantificare , potrebbe essere 30 minuti, dopo però
si riconnette da sola senza reset infatti riesco a comunicare senza dover rifare il RESET .... avete idee ?
grazie
oggi ho notato che se si impalla ma invio tre o 4 richieste al webserver , poi lui riparte ( senza dover fare il reset) ... qualcuno mi sa aiutare , se posso fare qualche accrocchio software ,?