Bonjour à tous,
J'utilise un ESP32 comme serveur web qui gère la fonction chauffage de ma maison. Il héberge un site de 8 pages html auquel j'accède soit en local, soit depuis l'extérieur en passant par un ddns.
Tout cela fonctionne parfaitement. Seul un souci me hérisse après coupure secteur.
En cas de perte de wifi (effectuée en débranchant le répéteur enregistré dans le programme), l'ESP procède a des tentatives répétées de (re)connexion et finit par remplir sa tâche une fois le répéteur rebranché et connecté au routeur.
En cas de panne secteur, l'ESP32 reste bloqué à la reprise.
Première question : quelles techniques pourrais - je utiliser qui me permettraient de déterminer la ou les causes de blocage (endroit(s) du code) ?
Je pressens qu'à la reprise secteur la connexion Wifi s'effectue avant que le routeur ait terminé son redémarrage.
Second besoin : la bibliothèque webServer permet-elle de vérifier l'accès web ?
Merci d'avance.
Bonsoir,
Pour votre première question, je vous suggère de procéder "à la papa", c-à-d en mettant des writeln avec des messages simples mais explicites dans toute votre séquence de démarrage dans le setup.
Vous verrez ainsi ce qu'il se passe (ou ne se passe pas) au démarrage dans les différentes situations, avec ou sans box etc...
Pour webServer, son .h vous donnera toutes les fonctions accessibles.
Bonne soirée et bonne bidouille,
MicroQuettas
Merci pour le tuyau. Pour conduire la recherche, j'ai commencé à trouver le moyen de reproduire une coupure internet dans couper ma box.
J'ai donc utilisé une seconde Livebox, non connectée à la fibre mais fonctionnelle en Wifi.
Cela m'a permis de trouver la cause du blocage du Setup.
Deux instructions sont concernées : server.begin et ntp.begin
Par contre si je commente ces deux lignes, le Setup se termine mais le Loop crashe logiquement puisque la mise à l'heure ne peut pas se lancer, de même que serveur Web.
L'ESP retourne
Blockquote Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
et redémarre en boucle.
J'ai parcouru les exemples de la bibliothèque webserver, mais rien trouvé comme méthode pour vérifier l'accès internet.
L'idée serait de passer en mode webclient, et de tenter une requête vers un site quelconque. Mais passer de client à serveur me paraît bien compliqué, sauf si une simple réponse du site est retournée sans obligation de charger toute une page...
La littérature est très volubile concernant la connexion Wifi, mais rien à propos de la connexion internet...
C'était en fait tout bête...
inclure la bibliothèque WiFiClient et il suffit de tester une requête quelconque, du genre
if (client.connect(server, 80)) {
Si vérifié, internet est disponible.
Je mets en résolu.
Hmmmm j'avais classé en Résolu un peu vite...
Mon code de test fonctionne, par contre une fois inclus dans le code définitif je rencontre un souci de double déclaration de "server".
En effet, mon application fait tourner un site web avec la librairie webServer.h et pour tester la connexion internet je dois utiliser en parallèle la librairie webClient.h
Les 2 utilisent une variable "server" donc je me retrouve coincé....
Une idée ?
Bonjour,
C'est difficile sans voir le code, mais a priori vous avez donné le même nom "server" à deux instances d'objets différents... Donnez un autre nom à votre 2ième "server" et tout rentrera dans l'ordre (?)
Bonne bidouille
MicroQuettas