Messages : 774
Sujets : 4
Inscription : Sep 2024
20-11-2025, 05:20 PM
(Modification du message : 20-11-2025, 05:34 PM par Lolo69.)
Pour le 1 2 et 3 c est en effet assez simple
Le gros du travail est fait
Pour le 3 y a plusieurs chemins possibles
De mon côté je verrais bien une électrovanne pilotée par un relais piloté par l esp….
Par contre cette peur de la fuite me laisse perplexe… j ai rarement pour ne pas dire jamais entendu un tel désastre dans mon entourage
(20-11-2025, 05:20 PM)Lolo69 a écrit : Pour le 1 2 et 3 c est en effet assez simple
Le gros du travail est fait
Pour le 2 en fouillant un peu la doc dans les code device on même pouvoir voir envoyer les valeurs
Pour le 3 y a plusieurs chemins possibles
De mon côté je verrais bien une électrovanne pilotée par un relais piloté par l esp….
Par contre cette peur de la fuite me laisse perplexe… j ai rarement pour ne pas dire jamais entendu un tel désastre dans mon entourage
Messages : 527
Sujets : 5
Inscription : Jun 2024
20-11-2025, 06:01 PM
(Modification du message : 20-11-2025, 07:12 PM par Mike.)
C’était tellement simple que j'ai fait le 1 et le 2 
Pour le 2 j'ai rajouté un type pour l'alerte qui est affiché dans le sujet du mail.
Pour passer le type, au lieu de mettre / dans l'url pour la notif push de l'ecodevice, il faut mettre /?type=leType
Par exemple :
/?type=FUITE_D_EAU
Je n'ai pas testé mais ça devrait marcher. Je ne sais pas comment l'ecodevice fait sa requête donc dans un premier temps, mieux vaut utiliser des types sans espaces, sans accents et autres caractères spéciaux.
Code : //Version 1.05 20 11 25 LBE
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpwd wifi"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 254); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 254); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "ton_mail_orange@orange.fr"; // A mettre à jour
session.login.password = "ton_pwd_orange"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "ton_mail_orange@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32.";
smtp.debug(1);
String prefixPage = "<!DOCTYPE html><html><head><meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\"></head><body>";
String suffixPage = "</body></html>";
String page = prefixPage + suffixPage;
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", prefixPage + "<p style='color:red'>Erreur de connexion SMTP !</p>" + suffixPage);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
page = prefixPage + "<p style='color:red'>Erreur d'envoi !</p>" + suffixPage;
Serial.println("Erreur d'envoi !");
} else {
page = prefixPage + "<p style='color:green'>Email envoyé !</p>" + suffixPage;
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
Messages : 774
Sujets : 4
Inscription : Sep 2024
20-11-2025, 07:01 PM
(Modification du message : 20-11-2025, 07:01 PM par Lolo69.)
Mike a degainé plus vite, j'étais entrain de faire le 1 de façon plus "intelligente" pour afficher le timestamping de l'envoi sur la page web
je vais le merge de mon 1 avec le 2 de Mike, je teste et vous dis
Messages : 163
Sujets : 13
Inscription : Jun 2024
(20-11-2025, 05:20 PM)Lolo69 a écrit : Pour le 1 2 et 3 c est en effet assez simple
Le gros du travail est fait
Pour le 3 y a plusieurs chemins possibles
De mon côté je verrais bien une électrovanne pilotée par un relais piloté par l esp….
Par contre cette peur de la fuite me laisse perplexe… j ai rarement pour ne pas dire jamais entendu un tel désastre dans mon entourage
(20-11-2025, 05:20 PM)Lolo69 a écrit : Pour le 1 2 et 3 c est en effet assez simple
Le gros du travail est fait
Pour le 2 en fouillant un peu la doc dans les code device on même pouvoir voir envoyer les valeurs
Pour le 3 y a plusieurs chemins possibles
De mon côté je verrais bien une électrovanne pilotée par un relais piloté par l esp….
Par contre cette peur de la fuite me laisse perplexe… j ai rarement pour ne pas dire jamais entendu un tel désastre dans mon entourage
personnellement je me suis retrouvé avec 20 cms deau au rdc dans la buanderie d'une surface de 25 m2 environ,
en cause un filtre dont la cartouche a explosée
un oncle de ma femme a eu 40 cms d’eau dans le sous sol de son pavillon en cause un raccord laiton qui s'est fendu.
et pour finir en beauté un ancien collègue qui c’est retrouvé avec tout l’intérieur dune maison refaite à neuf (réfection total de toutes les cloisons et isolation placo menuiserie intérieur cuisine équipée carrelage etc..... âpres la fuite coup des travaux +de 100000 € oui 100000€ ça parait énorme et pourtant c’est bien le prix, en cause le bouchon en bout dune nourrisse de départ âpres ballon qui a explosé, la fuite a durée 4 jours environ depuis le dernier étage de la maison !!!!
donc oui je prends la chose au sérieux tout de même !!!!
c’est pour cela que toutes les améliorations que l’on peu apporter a esp seront les bienvenus
Messages : 527
Sujets : 5
Inscription : Jun 2024
Nouvelle version légèrement ameliorée
Code : //Version 1.05 20 11 25
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpwd wifi"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 254); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 254); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "ton_mail_orange@orange.fr"; // A mettre à jour
session.login.password = "ton_pwd_orange"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "ton_mail_orange@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32.";
smtp.debug(1);
String prefixPage = "<!DOCTYPE html><html><head><meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\"></head><body>";
String suffixPage = "</body></html>";
String page = prefixPage + suffixPage;
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", prefixPage + "<p style='color:red'>Erreur de connexion SMTP !</p>" + suffixPage);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
page = prefixPage + "<p style='color:red'>Erreur d'envoi !</p>" + suffixPage;
Serial.println("Erreur d'envoi !");
} else {
page = prefixPage + "<p style='color:green'>Email envoyé !</p>" + suffixPage;
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
Messages : 163
Sujets : 13
Inscription : Jun 2024
20-11-2025, 07:14 PM
(Modification du message : 20-11-2025, 07:14 PM par tupolev89.)
(20-11-2025, 07:01 PM)Lolo69 a écrit : Mike a degainé plus vite, j'étais entrain de faire le 1 de façon plus "intelligente" pour afficher le timestamping de l'envoi sur la page web
je vais le merge de mon 1 avec le 2 de Mike, je teste et vous dis
merci
(20-11-2025, 07:13 PM)Mike a écrit : Nouvelle version légèrement ameliorée
Code : //Version 1.05 20 11 25
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpwd wifi"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 254); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 254); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "ton_mail_orange@orange.fr"; // A mettre à jour
session.login.password = "ton_pwd_orange"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "ton_mail_orange@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32.";
smtp.debug(1);
String prefixPage = "<!DOCTYPE html><html><head><meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\"></head><body>";
String suffixPage = "</body></html>";
String page = prefixPage + suffixPage;
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", prefixPage + "<p style='color:red'>Erreur de connexion SMTP !</p>" + suffixPage);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
page = prefixPage + "<p style='color:red'>Erreur d'envoi !</p>" + suffixPage;
Serial.println("Erreur d'envoi !");
} else {
page = prefixPage + "<p style='color:green'>Email envoyé !</p>" + suffixPage;
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
je teste de suite
Messages : 774
Sujets : 4
Inscription : Sep 2024
20-11-2025, 07:30 PM
(Modification du message : 20-11-2025, 07:39 PM par Lolo69.)
attends !!!!!!!!!!!!! du coup on a deux 1.05 lol la mienne n avait pas pris en compte la 1.05 de mike à toi de choisir ou de fusionner les 2 version 1.05 en une 1.06
On va pouvoir passer le concours de "Qui veut coder le plus rapidement pour tupolev89 "
Code : //Version 1.05 20 11 25
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpass"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 1); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 1); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String stateText = "En attente de notification Push"; // texte par défaut
// Récupérer date et heure NTP
time_t now = time(nullptr);
struct tm timeinfo;
localtime_r(&now, &timeinfo);
char buffer[20];
strftime(buffer, sizeof(buffer), "%d/%m/%Y %H:%M:%S", &timeinfo);
stateText = String("Mail envoyé le ") + buffer;
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "tonmail@orange.fr"; // A mettre à jour
session.login.password = "tonpwd"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "tonmail@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32 le " + String(buffer);
smtp.debug(1);
// Génération de la page HTML
String page =
"<!DOCTYPE html><html><head>"
"<meta charset='UTF-8'>"
"<meta http-equiv='Cache-Control' content='no-cache, no-store, must-revalidate'>"
"<meta name='viewport' content='width=device-width, initial-scale=1.0'>"
"<title>Alerte EcoDevice</title>"
"</head><body>"
"<h2>" + stateText + "</h2>"
"</body></html>";
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", page);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
Serial.println("Erreur d'envoi !");
} else {
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
test ce code tu as le time stamping de l envoi dans le mail et dans la page web
j ai testé aussi avec http://192.168.1.119/?type=fuite de nouilles
et ca met bien fuite de nouilles dans le mail
cahier des charges remplis pour les points 1 et 2
pour le 3 à suivre en fonction du hardware que tu veux mettre .... si vanne connectée wifi avec une api ou requete GET ce serait le plus simple mais pas sur que ca existe, plus facilement piloter un relais avec l ESP qui va piloter une EV classique, le cablage de l EV restera le plus compliqué il te fait avoir de l energie electrique pres de celle ci , et faire cohabiter du 220 vers de l'eau il faut pas faire n importe comment
Messages : 527
Sujets : 5
Inscription : Jun 2024
(20-11-2025, 07:30 PM)Lolo69 a écrit : attends !!!!!!!!!!!!!
test ce code tu as le time stamping de l envoi dans le mail et dans la page web
j ai testé aussi avec http://192.168.1.119/?type=fuite de nouilles
et ca met bien fuite de nouilles dans le mail
cahier des charges remplis pour les points 1 et 2
pour le 3 à suivre en fonction du hardware que tu veux mettre .... si vanne connectée wifi avec une api ou requete GET ce serait le plus simple mais pas sur que ca existe, plus facilement piloter un relais avec l ESP qui va piloter une EV classique, le cablage de l EV restera le plus compliqué il te fait avoir de l energie electrique pres de celle ci , et faire cohabiter du 220 vers de l'eau il faut pas faire n importe comment
@lolo, tu as fais la même erreur que moi initialement, d'où ma version modifiée. En cas d'erreur la page contiendra quand meme "Message envoyé" alors que ce n'est pas le cas.
Regarde la dernière version que j'ai envoyé, j'ai mieux géré ce cas.
Messages : 774
Sujets : 4
Inscription : Sep 2024
20-11-2025, 07:53 PM
(Modification du message : 20-11-2025, 08:00 PM par Lolo69.)
Cool on va laisser bosser un peu tupolev pour faire le merge
Car je trouve le timestamp sympa …
En + j avais fait une gestion similaire à la tienne que j ai fait sauter par erreur avec le timestamp, c est la pression du concours lol
+1 pour toi
Mais comme j ai le timestamp on voit bien si c est parti ou pas
J égalise à 1 partout mdr
Ça permet de voir que chez moi j arrive à envoyer 2 mails dans la même seconde
Donc on va dire approximativement 1 toutes les 500 ms , avec ça la baignoire ne débordera pas
La je suis plus sur l ordi ;-)
Mon esp simplement alimenté sans connexion PC pour tester la stabilité, je relance un push demain;-)
Messages : 163
Sujets : 13
Inscription : Jun 2024
21-11-2025, 12:48 AM
(Modification du message : 21-11-2025, 12:55 AM par tupolev89.)
(20-11-2025, 06:01 PM)Mike a écrit : C’était tellement simple que j'ai fait le 1 et le 2 
Pour le 2 j'ai rajouté un type pour l'alerte qui est affiché dans le sujet du mail.
Pour passer le type, au lieu de mettre / dans l'url pour la notif push de l'ecodevice, il faut mettre /?type=leType
Par exemple :
/?type=FUITE_D_EAU
Je n'ai pas testé mais ça devrait marcher. Je ne sais pas comment l'ecodevice fait sa requête donc dans un premier temps, mieux vaut utiliser des types sans espaces, sans accents et autres caractères spéciaux.
Code : //Version 1.05 20 11 25 LBE
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpwd wifi"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 254); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 254); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "ton_mail_orange@orange.fr"; // A mettre à jour
session.login.password = "ton_pwd_orange"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "ton_mail_orange@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32.";
smtp.debug(1);
String prefixPage = "<!DOCTYPE html><html><head><meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\"></head><body>";
String suffixPage = "</body></html>";
String page = prefixPage + suffixPage;
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", prefixPage + "<p style='color:red'>Erreur de connexion SMTP !</p>" + suffixPage);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
page = prefixPage + "<p style='color:red'>Erreur d'envoi !</p>" + suffixPage;
Serial.println("Erreur d'envoi !");
} else {
page = prefixPage + "<p style='color:green'>Email envoyé !</p>" + suffixPage;
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
Bonsoir alors retour avec la version 1.05 fonctionne parfaitement ,le mode type permet des pushs personnalisés c’est parfait, dommage d’être obligé de mettre le tiret bas entre les mots car la synthèse vocale au moment de la lecture de l’alerte nous dis .......tiret du bas.......!
je recherche la vanne comme prévu et je reviens vous voir.
merci beaucoup.
(21-11-2025, 12:48 AM)tupolev89 a écrit : (20-11-2025, 06:01 PM)Mike a écrit : C’était tellement simple que j'ai fait le 1 et le 2 
Pour le 2 j'ai rajouté un type pour l'alerte qui est affiché dans le sujet du mail.
Pour passer le type, au lieu de mettre / dans l'url pour la notif push de l'ecodevice, il faut mettre /?type=leType
Par exemple :
/?type=FUITE_D_EAU
Je n'ai pas testé mais ça devrait marcher. Je ne sais pas comment l'ecodevice fait sa requête donc dans un premier temps, mieux vaut utiliser des types sans espaces, sans accents et autres caractères spéciaux.
Code : //Version 1.05 20 11 25 LBE
#include <WiFi.h>
#include <WebServer.h>
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESP_Mail_Client.h>
const char* ssid = "tonssid"; // A mettre à jour
const char* password = "tonpwd wifi"; // A mettre à jour
IPAddress local_IP(192, 168, 1, 119); // A mettre à jour
IPAddress gateway(192, 168, 1, 254); // A mettre à jour
IPAddress subnet(255, 255, 255, 0); // A mettre à jour
IPAddress primaryDNS(192, 168, 1, 254); // A mettre à jour
IPAddress secondaryDNS(8, 8, 4, 4); //optional
SMTPSession smtp;
WebServer server(80);
void handleRoot() {
String type = "Non defini";
if (server.hasArg("type")) {
type = server.arg("type");
}
ESP_Mail_Session session;
session.server.host_name = "smtp.orange.fr"; // A mettre à jour
session.server.port = 465; // A mettre à jour
session.login.email = "ton_mail_orange@orange.fr"; // A mettre à jour
session.login.password = "ton_pwd_orange"; // A mettre à jour
session.login.user_domain = "";
SMTP_Message message;
message.sender.name = "ESP32";
message.sender.email = "ton_mail_orange@orange.fr"; // A mettre à jour
message.addRecipient("Destinataire", "tondestinataire@domain.fr"); // A mettre à jour
message.subject = "Alerte de type : " + type;
message.text.content = "Bonjour ! Email envoyé depuis ESP32.";
smtp.debug(1);
String prefixPage = "<!DOCTYPE html><html><head><meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\"></head><body>";
String suffixPage = "</body></html>";
String page = prefixPage + suffixPage;
if (!smtp.connect(&session)) {
Serial.println("Erreur de connexion SMTP !");
server.send(200, "text/html", prefixPage + "<p style='color:red'>Erreur de connexion SMTP !</p>" + suffixPage);
return;
}
if (!MailClient.sendMail(&smtp, &message)) {
page = prefixPage + "<p style='color:red'>Erreur d'envoi !</p>" + suffixPage;
Serial.println("Erreur d'envoi !");
} else {
page = prefixPage + "<p style='color:green'>Email envoyé !</p>" + suffixPage;
Serial.println("Email envoyé !");
}
smtp.closeSession();
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.setSleep(false); //on evite de mettre l esp en veille
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();
}
Bonsoir alors retour avec la version 1.05 fonctionne parfaitement ,le mode type permet des pushs personnalisés c’est parfait, dommage d’être obligé de mettre le tiret bas entre les mots car la synthèse vocale au moment de la lecture de l’alerte nous dis .......tiret du bas.......!
peut on ajouter plus d’un destinataire pour le mail envoyé?
je recherche la vanne comme prévu et je reviens vous voir.
merci beaucoup.
|