![]() |
RMS_Router_V15_09 - Version imprimable +- F1ATB forum (https://f1atb.fr/forum_f1atb) +-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html) +--- Forum : Routeur Photovoltaïque (https://f1atb.fr/forum_f1atb/forum-4.html) +--- Sujet : RMS_Router_V15_09 (/thread-1861.html) |
RMS_Router_V15_09 - Alain H - 30-09-2025 Bonjour André et Serge19 Bon j'ai regarde mon code avec enregistrement en EEPROM du WPS. Je suis pas du tout un expert en programmation C. Donc j'ai bien compris la remarque de Serge qui était très pertinente, et oui c'était pas propre du tout. Alors je me suis penché dessus et voila m'a solution. Je précise que cela marche avec un ESP32 vierge comme avec un ESSP32 déjà programmer. Résultat après compilation: [*]Original : 1761343 octets (flash), 91988 octets (RAM) [*]Modifié : 1761423 octets (flash), 91988 octets (RAM) [*]Différence en flash : +80 octets. [*]Différence en RAM : 0 octet. [*]Voici ce que j'ai modifier en bleu : case ARDUINO_EVENT_WIFI_STA_CONNECTED: //SR19 TelnetPrintln("WiFi Reconnecté en Mode Station"); //SR19 ssid = WiFi.SSID(); // met à jour le SSID global password = WiFi.psk(); // met à jour le mot de passe global password.trim(); // supprime espaces et caractères indésirables (dont \n, \r, \t) EcritureEnROM(); // sauvegarde dans l’EEPROM break; //SR19 default: //SR19 break; //SR19 [*]Je pense que c'est propre, la procédure pour avoir une récupération du SSID et PASS est la même qu'André préconise: [*]1) Déconnecter le routeur. [*]2) Activer le wps de la box. [*]3) Reconnecter le Routeur. [*]Merci vraiment beaucoup à vous deux. [*]Alain H [*] RE: RMS_Router_V15_09 - F1ATB - 30-09-2025 Merci Je mets vos lignes ajoutées dans la version 15.10 André RE: RMS_Router_V15_09 - Serge19 - 01-10-2025 Bonsoir André et Alain_H, Juste un détail concernant la sauvegarde en EEPROM après l’utilisation du WPS : j'ai testé et j'obtiens le même résultat en déplaçant la fonction EcritureEnROM() comme ci-dessous. Un autre point de détail : l’emplacement proposé par Alain_H pour la sauvegarde en EEPROM entraîne deux écritures successives. Or, le nombre de cycles d’écriture en EEPROM est forcément limité — même si je n’ai pas vérifié la limite dans le datasheet de l’ESP32. case ARDUINO_EVENT_WIFI_STA_GOT_IP: //SR19 TelnetPrintln("WiFi : " + String(WiFi.SSID()) + " connecté via WPS!"); //SR19 ssid = (WiFi.SSID()); //Récup ssid //SR19 TelnetPrintln("Récupération IP de " + hostname + " -> " + (WiFi.localIP().toString())); //SR19 TelnetPrintln("Récupération password -> " + String(WiFi.psk())); //SR19 password = (WiFi.psk()); //Récup password //SR19 isGOT_IP = true; /*IP reçue*/ //SR19 EcritureEnROM(); // sauvegarde dans l’EEPROM break; RE: RMS_Router_V15_09 - Alain H - 01-10-2025 (01-10-2025, 12:22 AM)Serge19 a écrit : Bonsoir André et Alain_H,Bonjour Serge19, J'ai regardé la durée de vie d'une EEPROM entre 10000 et 100000 cycles si on fait un changement de SSID et PASSWORD de sa box tous les jours cela correspondrais à: Endurance typique de la flash (l’“EEPROM” de l’ESP32 est en fait de la flash)
Merci et très bonne remarque je m'en suis vraiment soucié. Si cela cause vraiment un gros problème alors peut être regardé sur EEPROM la concordance entre le mot de passe en EEPROM et le SSID et PASS reçu, le seul défaut dans cette approche c'est que le password reçu est en PSK et donc une suite Hexadécimale et que si le passe est écris en dur (le vrai mot de passe de la box) automatiquement il en conclura que l'on peut l'écrire en EEPROM. Après il est vrai que en déplaçant l'écriture en case GOT_IP on as récupéré l'adresse IP, c'est surement mieux j'avais password.trim(); pour nettoyer le mot de passe de caractères parasite car j'ai eu le soucis et pas tout le temps. Dans ta mdification cela n'écris qu'une ligne de code et c'est super, mais j'ajouterai password.trim() pour la sécurité. Tu peut voir avec André pour ta modification, car il m'a dis qu'il mettrais ça en version 15.10. Merci à toi. RE: RMS_Router_V15_09 - Serge19 - 01-10-2025 (01-10-2025, 02:17 PM)Alain H a écrit :(01-10-2025, 12:22 AM)Serge19 a écrit : Bonsoir André et Alain_H,Bonjour Serge19, Bonsoir Alain_H, Il est important de souligner la prudence nécessaire dans la gestion des écritures en EEPROM. Imaginez qu’une instruction d’écriture soit mal positionnée dans le code, et qu’en raison d’un bug non anticipé, elle se mette à s’exécuter en boucle, jusqu’à une centaine de fois par seconde (ce qui est théoriquement possible avec un intervalle minimal de 10 ms entre deux écritures). Sans surveillance, si une telle situation dure seulement une heure, on pourrait rapidement atteindre : 60 minutes × 60 secondes × 100 écritures = 360 000 écritures! Concernant password.trim(), si vous avez rencontré des pb, c'est vrai que c'est une sécurité qui peut être rajoutée sans surcharger le code. RE: RMS_Router_V15_09 - F1ATB - 02-10-2025 Cette dernière version avec le password.trim(); est en V15.10 non distribué pour l'instant. André |