Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Connecter compteur eau impulsion
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
Répondre

C’était tellement simple que j'ai fait le 1 et le 2 Smile
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();
}
Répondre

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
Répondre

(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
Répondre

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();
}
Répondre

(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
Répondre

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
Répondre

(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.
Répondre

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;-)
Répondre

(20-11-2025, 06:01 PM)Mike a écrit : C’était tellement simple que j'ai fait le 1 et le 2 Smile
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 Smile
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.
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
1 visiteur(s)

Moteur MyBB, © 2002-2025 Melroy van den Berg.