![]() |
|
Connecter compteur eau impulsion - Version imprimable +- F1ATB forum (https://f1atb.fr/forum_f1atb) +-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html) +--- Forum : Domotique (https://f1atb.fr/forum_f1atb/forum-6.html) +--- Sujet : Connecter compteur eau impulsion (/thread-1984.html) |
RE: Connecter compteur eau impulsion - tupolev89 - 19-11-2025 voila le code les mails arrivent bien maintenant RE: Connecter compteur eau impulsion - Lolo69 - 19-11-2025 Non j ai encore demandé de l’aide à ChatGPT Je n ai pas vérifié mais voici le code optimisé suggéré. Teste le pour voir si c est plus stable , les explications données me paraissent crédibles Je laisse Mike faire la vérification et apporter sa patte d expert Code : #include <WiFi.h>RE: Connecter compteur eau impulsion - tupolev89 - 19-11-2025 #include <WiFi.h> #include <WebServer.h> #include <Arduino.h> #include <WiFiClientSecure.h> #include <ESP_Mail_Client.h> const char* ssid = ""; const char* password = ""; SMTPSession smtp; WebServer server(80); void handleRoot() { ESP_Mail_Session session; session.server.host_name = "smtp.orange.fr"; session.server.port = 465; session.login.email = ""; session.login.password = ""; session.login.user_domain = ""; SMTP_Message message; message.sender.name = "ESP32"; message.sender.email = ""; message.addRecipient("Destinataire", ""); message.subject = "Test ESP32"; message.text.content = "Bonjour ! Email envoyé depuis ESP32."; smtp.debug(1); String page = "<html><body>"; page += "<h2>Status d'envoi :</h2>"; if (!smtp.connect(&session)) { Serial.println("Erreur de connexion SMTP !"); page += "<p style='color:red'>Erreur de connexion SMTP !</p>"; page += "</body></html>"; server.send(200, "text/html", page); return; } if (!MailClient.sendMail(&smtp, &message)) { Serial.println("Erreur d'envoi !"); page += "<p style='color:red'>Erreur d'envoi !</p>"; } else { Serial.println("Email envoyé !"); page += "<p style='color:green'>Email envoyé !</p>"; } smtp.closeSession(); page += "</body></html>"; server.send(200, "text/html", page); } void setup() { Serial.begin(115200); delay(1000); Serial.println("\n"); WiFi.begin(ssid, password); Serial.print("Attente de connexion ..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println("\n"); Serial.println("Connexion etablie !"); Serial.print("Adresse IP: "); Serial.println(WiFi.localIP()); server.on("/", handleRoot); server.begin(); Serial.println("Serveur web actif"); Serial.print("Waiting for NTP server time reading"); configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "fr.pool.ntp.org", "time.nist.gov"); while (time(nullptr) < ESP_MAIL_CLIENT_VALID_TS) { delay(100); } } void loop() { server.handleClient(); } RE: Connecter compteur eau impulsion - Mike - 19-11-2025 Il faut se méfier des IA ![]() Ce code ne marchera pas dans notre cas car chatGPT utilise du javascript sur la page root afin de déclencher une requête sur /sendMail pour pouvoir envoyer le mail. Si la page est ouverte avec un navigateur alors le javascript sera executé et ça devrait marcher. En revanche si on fait un HTTP GET sur / comme le fait l'ecodevice, on va simplement récupérer le code html de la page mais le javascript ne sera pas évalué et donc le mail ne partira pas. RE: Connecter compteur eau impulsion - Lolo69 - 19-11-2025 C est pour ça que j ai précisé que je n avais pas vérifié la rep de ChatGPT ce soir je suis sur un téléphone donc dur dur Mais en tout cas les causes de blocage expliquées sont credibles. Sinon plus simple à tester ce serait de rajouter // --- Ajout pour désactiver la mise en veille du Wi-Fi --- esp_wifi_set_ps(WIFI_PS_NONE); Juste après WiFi.begin(ssid, password); Peut être que c est le wifi de l esp qui s endort s il n est pas sollicité… Peut été faudrait il rajouter dans la loop une reconnexion wifi qui pourrait être perdue pour x raisons… Pour l’instant c est moi qui m’endort lol En tout cas 14 pages mais c est quasi gagné et de bonnes pistes pour stabiliser le tout RE: Connecter compteur eau impulsion - Mike - 19-11-2025 Vu que le code fonctionne, tu peux aussi le laisser tel quel pour le moment mais utiliser une bonne alim et voir si tu continues de le perdre de temps en temps. Cela permettra de confirmer ou d’écarter la piste de l'alim. (19-11-2025, 12:21 AM)Lolo69 a écrit : C est pour ça que j ai précisé que je n avais pas vérifié la rep de ChatGPT ce soir je suis sur un téléphone donc dur dur Mis à part ce que j'ai expliqué plus haut et donc que ça ne marchera pas dans notre cas, son code est pas mal sinon, il permet de mieux gérer le cas où de multiples requêtes sont effectuées simultanément. Dans le cas de Tupolev, vu qu'il y aura peu de requêtes et probablement jamais en simultané, autant garder la simplicité du code initial au moins dans un premier temps. A l'usage Tupolev nous dira s'il ressent le besoin d'avoir une amélioration sur tel ou tel point et on essayera de le faire en moins de 14 pages
RE: Connecter compteur eau impulsion - Lolo69 - 19-11-2025 lol pas facile de collaborer par forum interposé. RE: Connecter compteur eau impulsion - tupolev89 - 19-11-2025 JE COMPILE LE NOUVEAU CODE j’injecte et je teste RE: Connecter compteur eau impulsion - Mike - 19-11-2025 (19-11-2025, 12:42 AM)tupolev89 a écrit : JE COMPILE LE NOUVEAU CODE j’injecte et je teste Quel nouveau code ? celui de chatGPT ? comme expliqué plus haut, il ne fonctionnera pas avec une requête en provenance de l'ecodevice. RE: Connecter compteur eau impulsion - tupolev89 - 19-11-2025 (19-11-2025, 12:46 AM)Mike a écrit :(19-11-2025, 12:42 AM)tupolev89 a écrit : JE COMPILE LE NOUVEAU CODE j’injecte et je teste alors le code du message 132 de lolo ne fonctionne pas jai de nouveau le time ino qui chagrine #include <WiFi.h> #include <WebServer.h> #include <Arduino.h> #include <WiFiClientSecure.h> #include <ESP_Mail_Client.h> const char* ssid = ""; const char* password = ""; SMTPSession smtp; WebServer server(80); void handleRoot() { ESP_Mail_Session session; session.server.host_name = "smtp.orange.fr"; session.server.port = 465; session.login.email = ""; session.login.password = ""; session.login.user_domain = ""; SMTP_Message message; message.sender.name = "ESP32"; message.sender.email = ""; message.addRecipient("Destinataire", ""); message.subject = "Test ESP32"; message.text.content = "Bonjour ! Email envoyé depuis ESP32."; smtp.debug(1); String page = "<html><body>"; page += "<h2>Status d'envoi :</h2>"; if (!smtp.connect(&session)) { Serial.println("Erreur de connexion SMTP !"); page += "<p style='color:red'>Erreur de connexion SMTP !</p>"; page += "</body></html>"; server.send(200, "text/html", page); return; } if (!MailClient.sendMail(&smtp, &message)) { Serial.println("Erreur d'envoi !"); page += "<p style='color:red'>Erreur d'envoi !</p>"; } else { Serial.println("Email envoyé !"); page += "<p style='color:green'>Email envoyé !</p>"; } smtp.closeSession(); page += "</body></html>"; server.send(200, "text/html", page); } void setup() { Serial.begin(115200); delay(1000); Serial.println("\n"); WiFi.begin(ssid, password); Serial.print("Attente de connexion ..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println("\n"); Serial.println("Connexion etablie !"); Serial.print("Adresse IP: "); Serial.println(WiFi.localIP()); server.on("/", handleRoot); server.begin(); Serial.println("Serveur web actif"); Serial.print("Waiting for NTP server time reading"); configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "fr.pool.ntp.org", "time.nist.gov"); while (time(nullptr) < ESP_MAIL_CLIENT_VALID_TS) { delay(100); } } void loop() { server.handleClient(); } ce code la fonctionne je viens de m’apercevoir que chez orange ils ont fait comme gmail, pour les applications moins sécurisées maintenant il génère un mot de passe commun pour toutes les applications mail non reconnu par orange, du coup j’ai généré ce nouveau mot de passe je lai mis dans le code ça fonctionne pour l’instant, c’était peut-être ça le problème de perte du serveur SMTP, qui m’obligeait a rebouter esp pour retrouver le serveur??? |