#include <ESP_Mail_Client.h>
#include <ESPAsyncTCP.h>
#include <AsyncElegantOTA.h>
#include <ESPAsyncWebServer.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#define Relay1 D1 //D5
#define Relay2 D2 //D6
#define Relay3 D5 //D5
long int analogInPin = A0;
long int ligar11inihr, ligar11inimn, ligar11fimhr, ligar11fimmn, ligar21inihr,
ligar21inimn, ligar21fimhr, ligar21fimmn, ligar31inihr, ligar31inimn, ligar31fimhr,
ligar31fimmn;
long int ligar12inihr, ligar12inimn, ligar12fimhr, ligar12fimmn, ligar22inihr,
ligar22inimn, ligar22fimhr, ligar22fimmn, ligar32inihr, ligar32inimn, ligar32fimhr,
ligar32fimmn;
long int ligar13inihr, ligar13inimn, ligar13fimhr, ligar13fimmn, ligar23inihr,
ligar23inimn, ligar23fimhr, ligar23fimmn, ligar33inihr, ligar33inimn, ligar33fimhr,
ligar33fimmn;
String textmsgtxt, msgtxt, msgtxt1, msgtxt2, msgtxt3, IPremoto, localIP1, psswrd,
psswrd1, onoff, localport, nowmn, nowhrs;
String T11, T12, T13, T21, T22, T23, T31, T32, T33, Tmr11, Tmr12, Tmr13, Tmr21,
Tmr22, Tmr23, Tmr31, Tmr32, Tmr33;
String Temp1, Temp2, Temp3, System, even_days1, even_days2, even_days3;
//int address = 0;
int resettime = 1;
int portinf = 1;
int inPIN = D7;
//int onoffend = 0;
int Buzzer1 = D6; //Buzzer Beep
long int hrs = 0;
long int mn = 0;
long int seg = 0;
long int pairdays = 1;
long int onoffini = 0;
unsigned long previousMillis = 0;
//unsigned long currentMillis1 = 0;
const long secinterval = 1000;
//const long onoffinterval = 2000;
const char* ssid = "Your wifi network name";
const char* password = "your wifi password ";
// To send Emails using Gmail on port 465 (SSL), you need to create an app password:
https://support.google.com/accounts/answer/185833
#define AUTHOR_EMAIL "YOUR_FROM_EMAIL@gmail.com"
#define AUTHOR_PASSWORD "password_YOUR_FROM_EMAIL@gmail.com "
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 465
#define RECIPIENT_EMAIL "YOUR_TO_EMAIL@gmail.com"
/* The SMTP Session object used for Email sending */
SMTPSession smtp;
/* Declare the message class */
//SMTP_Message message;
//ESP_Mail_Session session;
/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status);
unsigned int localUdpPort, serverport;
WiFiUDP Udp;
//unsigned int localUdpPort = 465; // local port to listen on
char incomingPacket[255]; // buffer for incoming packets
//char replyPacket[] = "Hi there! Got the message :-)"; // a reply string to
send back
AsyncWebServer server(90); //choose your own router port, if you want!
const char* loginIndex =
"<meta charset=utf-8>"
"<meta http-equiv=X-UA-Compatible content='IE=edge'>"
"<meta name=viewport content='width=device-width,initial-scale=1'>"
"<form name='loginForm' method='post'>"
"<table width='20%' bgcolor='0070FF' align='center'>"
"<tr>"
"<td colspan=2>"
"<center><font size=4><b>D1 Mini - 3SWITCHS, Login Menu</b></font></center>"
"<br>"
"</td>"
"<br>"
"<br>"
"</tr>"
"<tr>"
"<td>Username:</td>"
"<td><input type='text' size=25 name='userid'><br></td>"
"</tr>"
"<br>"
"<br>"
"<tr>"
"<td>Password:</td>"
"<td><input type='Password' size=25 name='pwd'><br></td>"
"<br>"
"<br>"
"</tr>"
"<tr>"
"<td><input type='submit' onclick='check(this.form)' value='Login'></td>"
"</tr>"
"</table>"
"</form>"
"<script>"
"function check(form)"
"{"
"if(form.userid.value=='TYPE A USER_NAME' && form.pwd.value=='TYPE A PASSWORD')"
"{"
"window.open('/update')"
"}"
"else"
"{"
" alert('Wrong password or Username')/*displays error message*/"
";"
"window.open('https://www.google.com/?gws_rd=ssl')"
"}"
"}"
"</script>";
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void setup()
{
pinMode(inPIN, INPUT);
digitalWrite(inPIN, LOW);
pinMode(Relay1, OUTPUT);
digitalWrite(Relay1, LOW);
pinMode(Relay2, OUTPUT);
digitalWrite(Relay2, LOW);
pinMode(Relay3, OUTPUT);
digitalWrite(Relay3, LOW);
pinMode(Buzzer1, OUTPUT);
digitalWrite(Buzzer1, LOW);
EEPROM.begin(512);
Serial.begin(115200);
Serial.println();
WiFi.disconnect();
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
MailClient.networkReconnect(true);
smtp.debug(1);
int resettime = 1;
unsigned int localUdpPort = 8080; // local port to listen on
Udp.begin(localUdpPort);
Serial.printf("UDP IP %s, porta UDP %d\n", WiFi.localIP().toString().c_str(),
localUdpPort);
localIP1 = WiFi.localIP().toString().c_str();
String msgtxt = ("Switch connected to: " + localIP1 + ":" + localUdpPort);
sendUDP(msgtxt);
msgtxt = "";
// }
// Start in OFF
onoff = "OF";
writeeeprom(243,onoff);
even_days1 = "OF";
writeeeprom(246,even_days1);
even_days2 = "OF";
writeeeprom(250,even_days2);
even_days3 = "OF";
writeeeprom(253,even_days3);
}
//#################################################################
void loop()
{
unsigned long currentMillis = millis();
//Serial.println(currentMillis);
onoffini = digitalRead(inPIN); //read the pin D7 from the switch command (IN)
- LOW(0v) HIGH(3v3) 10KOhm to GND
//Serial.println(onoffini);
delay(1);
if(onoffini == 1){ // Button to turn ON or OFF all the system D7 as a pullup
delay(10);
System = readeeprom(243);
if(System == "ON"){
onoff = "OF";
writeeeprom(243,onoff);
String mensage = "Sistem OFF";
sendUDP(msgtxt);
textmsgtxt = "";
tone(Buzzer1, 1800, 300); // play tone for 500 ms
delay(1000);
tone(Buzzer1, 1800, 300); // play tone for 500 ms
delay(5000);
}
if(System == "OF"){
onoff = "ON";
writeeeprom(243,onoff);
String msgtxt = "Sistem ON";
sendUDP(msgtxt);
textmsgtxt = "";
tone(Buzzer1, 1800, 2000); // play tone for 2000 ms
}
delay(3000);
}
if (currentMillis - previousMillis >= secinterval){
previousMillis = currentMillis;
currentMillis = 0;
seg = seg + 1;
Serial.print("seg:");
Serial.println(seg);
System = readeeprom(243);
if (System == "ON") {
workingswitchs();
}
//---------------------------------------------------------
if (seg == 60){
seg = 0;
mn = mn + 1;
//Serial.print("mn:");
//Serial.println(mn);
}
if (mn == 60){
mn = 0;
hrs = hrs + 1;
// Serial.print("hrs:");
// Serial.println(hrs);
}
if (hrs == 24){
hrs = 0;
pairdays = pairdays + 1;
}
if (pairdays == 2){
pairdays = 1;
}
}
//========================================================================================
int packetSize = Udp.parsePacket();
if (packetSize > 5)
{
// receive incoming UDP packets
Serial.printf("Received %d bytes from %s, port %d\n",
packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
IPremoto = Udp.remoteIP().toString().c_str();
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
Serial.printf("UDP packet contents: %s\n", incomingPacket);
textmsgtxt = incomingPacket;
//Serial.println(textMessage);
delay(1);
if(textmsgtxt.indexOf("IPServer")>=0){ //Exemple IPServer:192.xxx.x.xx
psswrd1 = textmsgtxt.substring(9 ,21);
//Serial.println("IP: " + psswrd1);
writeeeprom(0,psswrd1);
delay(10);
psswrd1 = readeeprom(0).substring(0, 14);
String msgtxt = "New IP: " + psswrd1;
sendUDP(msgtxt);
textmsgtxt = "";
// Serial.print("psswrd1: ");
// Serial.println(psswrd1);
}
else if(textmsgtxt.indexOf("ReiniciaIP")>=0)// Apagar o IP e colocar
o de defeito
{
psswrd1 = Udp.remoteIP().toString().c_str();
//Serial.println("IP: " + psswrd1);
writeeeprom(0,psswrd1);
delay(10);
psswrd1 = readeeprom(0).substring(0, 14);
String msgtxt = "IP dfault: " + psswrd1;
sendUDP(msgtxt);
}
if(textmsgtxt.indexOf("Portalocal")>=0)// Ex: Portalocal:1234
- if different of 8080)
{
psswrd1 = textmsgtxt.substring(11 ,15);
//Serial.println("Porta local: " + psswrd1);
writeeeprom(110,psswrd1);
delay(1);
psswrd1 = readeeprom(110).substring(0, 4);
String msgtxt = "Local Port: " + psswrd1;
sendUDP(msgtxt);
textmsgtxt = "";
}
if(textmsgtxt.indexOf("Portaserver")>=0)// Ex: Portaserver:1234
- Port of the Smartphone)
{
psswrd1 = textmsgtxt.substring(12 ,16);
Serial.println("IP: " + psswrd1);
writeeeprom(120,psswrd1);
delay(1);
psswrd1 = readeeprom(120).substring(0, 4);
String msgtxt = "Server Port : " + psswrd1;
sendUDP(msgtxt);
textmsgtxt = "";
}
if(textmsgtxt.indexOf("Apagarmem")>=0)// Apagarmem
- erase the memory and restart the D1 Mini
{
// write a 0 to all 512 bytes of the EEPROM
for (int i = 0; i < 512; i++) {
EEPROM.write(i, 0);
EEPROM.commit();
}
Serial.println("Mem erased");
ESP.restart();
}
if(textmsgtxt.indexOf("Reiniciar")>=0)// reinicia Sistema
{
ESP.restart();
}
if (textmsgtxt.indexOf("Serveron")>=0) { //start Server to updte OTA
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/html", loginIndex);
});
// Start ElegantOTA
AsyncElegantOTA.begin(&server);
//AsyncElegantOTA.begin(&server);
// Start server
server.begin();
String msgtxt = "Server Activ";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Serveroff")>=0) {
server.end();
String msgtxt = "Server Desconnected";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Horascertas")>=0){ //Ex. Horascertas:20:14 -Adjust the hours and minutes
String hrs1 = textmsgtxt.substring(12 ,14);
//writeeeprom(103,hrs1);
String mn1 = textmsgtxt.substring(15 ,17);
//Serial.println("temp1 " + temp1);
//writeeeprom(106,mn1);
String msgtxt = "Inserted Hours in D1Mini to: " + hrs1 + ":" + mn1;
sendUDP(msgtxt);
textmsgtxt = "";
hrs = hrs1.toInt();
mn = mn1.toInt();
}
if (textmsgtxt.indexOf("Quehoras")>=0){ //to now the internal time
if((hrs >= 0) && (hrs < 10)) {
nowhrs = "0" + String(hrs);
}
else{
nowhrs = String(hrs);
}
if((mn >= 0) && (mn < 10)) {
nowmn = "0" + String(mn);
}
else{
nowmn = String(mn);
}
String msgtxt = " D1Mini Internal hours: " + nowhrs + ":" + nowmn;
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer11")>=0){ //Exemplo Timer1:HrsINI,HrsFIM (Timer11:20:50,21:05)
String Timer11hi = textmsgtxt.substring(8 ,10);
writeeeprom(20,Timer11hi);
String Timer11mni = textmsgtxt.substring(11 ,13);
writeeeprom(24,Timer11mni);
String Timer11hf = textmsgtxt.substring(14 ,16);
writeeeprom(28,Timer11hf);
String Timer11mnf = textmsgtxt.substring(17 ,19);
writeeeprom(32,Timer11mnf);
String msgtxt = "Timer1-1 On at: " + readeeprom(20).substring(0 ,2) + ":" + readeeprom(24).substring(0 ,2) + ", Off at: " + readeeprom(28).substring(0 ,2) + ":" + readeeprom(32).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer12")>=0){ //Exemplo Timer12:HrsINI,HrsFIM (Timer12:20:50 21:05)
String Timer12hi = textmsgtxt.substring(8 ,10);
writeeeprom(162,Timer12hi);
String Timer12mni = textmsgtxt.substring(11 ,13);
writeeeprom(165,Timer12mni);
String Timer12hf = textmsgtxt.substring(14 ,16);
writeeeprom(168,Timer12hf);
String Timer12mnf = textmsgtxt.substring(17 ,19);
writeeeprom(171,Timer12mnf);
String msgtxt = "Timer1-2 ON at: " + readeeprom(162).substring(0 ,2) + ":" + readeeprom(165).substring(0 ,2) + ", OFF at: " + readeeprom(168).substring(0 ,2) + ":" + readeeprom(171).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer13")>=0){ //Exemplo Timer13:HrsINI,HrsFIM (Timer13:20:50,21:05)
String Timer13hi = textmsgtxt.substring(8 ,10);
writeeeprom(174,Timer13hi);
String Timer13mni = textmsgtxt.substring(11 ,13);
writeeeprom(177,Timer13mni);
String Timer13hf = textmsgtxt.substring(14 ,16);
writeeeprom(180,Timer13hf);
String Timer13mnf = textmsgtxt.substring(17 ,19);
writeeeprom(183,Timer13mnf);
String msgtxt = "Timer1-3 ON at: " + readeeprom(174).substring(0 ,2) + ":" + readeeprom(177).substring(0 ,2) + ", OFF at: " + readeeprom(180).substring(0 ,2) + ":" + readeeprom(183).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer21")>=0){ //Exemplo Timer21:HrsINI,HrsFIM (Timer21:20:50,21:05)
String Timer21hi = textmsgtxt.substring(8 ,10);
writeeeprom(40,Timer21hi);
String Timer21mni = textmsgtxt.substring(11 ,13);
writeeeprom(44,Timer21mni);
String Timer21hf = textmsgtxt.substring(14 ,16);
writeeeprom(48,Timer21hf);
String Timer21mnf = textmsgtxt.substring(17 ,19);
writeeeprom(52,Timer21mnf);
String msgtxt = "Timer2-1 ON at: " + readeeprom(40).substring(0 ,2) + ":" + readeeprom(44).substring(0 ,2) + ", OFF at: " + readeeprom(48).substring(0 ,2) + ":" + readeeprom(52).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer22")>=0){ //Exemplo Timer22:HrsINI,HrsFIM (Timer22:20:50,21:05)
String Timer22hi = textmsgtxt.substring(8 ,10);
writeeeprom(186,Timer22hi);
String Timer22mni = textmsgtxt.substring(11 ,13);
writeeeprom(189,Timer22mni);
String Timer22hf = textmsgtxt.substring(14 ,16);
writeeeprom(192,Timer22hf);
String Timer22mnf = textmsgtxt.substring(17 ,19);
writeeeprom(195,Timer22mnf);
String msgtxt = "Timer2-2 ON at: " + readeeprom(186).substring(0 ,2) + ":" + readeeprom(189).substring(0 ,2) + ", DesON at: " + readeeprom(192).substring(0 ,2) + ":" + readeeprom(195).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer23")>=0){ //Exemplo Timer23:HrsINI,HrsFIM (Timer23:20:50 21:05)
String Timer23hi = textmsgtxt.substring(8 ,10);
writeeeprom(198,Timer23hi);
String Timer23mni = textmsgtxt.substring(11 ,13);
writeeeprom(201,Timer23mni);
String Timer23hf = textmsgtxt.substring(15 ,16);
writeeeprom(204,Timer23hf);
String Timer23mnf = textmsgtxt.substring(17 ,19);
writeeeprom(207,Timer23mnf);
String msgtxt = "Timer2-3 ON at: " + readeeprom(198).substring(0 ,2) + ":" + readeeprom(201).substring(0 ,2) + ", DesON at: " + readeeprom(204).substring(0 ,2) + ":" + readeeprom(207).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer31")>=0){ //Exemplo Timer31:HrsINI,HrsFIM (Timer31:20:50,21:05)
String Timer31hi = textmsgtxt.substring(8 ,10);
writeeeprom(60,Timer31hi);
String Timer31mni = textmsgtxt.substring(11 ,13);
writeeeprom(64,Timer31mni);
String Timer31hf = textmsgtxt.substring(14 ,16);
writeeeprom(68,Timer31hf);
String Timer31mnf = textmsgtxt.substring(17 ,19);
writeeeprom(72,Timer31mnf);
String msgtxt = "Timer3-1 ON at: " + readeeprom(60).substring(0 ,2) + ":" + readeeprom(64).substring(0 ,2) + ", DesON at: " + readeeprom(68).substring(0 ,2) + ":" + readeeprom(72).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer32")>=0){ //Exemplo Timer32:HrsINI,HrsFIM (Timer32:20:50 21:05)
String Timer32hi = textmsgtxt.substring(8 ,10);
writeeeprom(210,Timer32hi);
String Timer32mni = textmsgtxt.substring(11 ,13);
writeeeprom(213,Timer32mni);
String Timer32hf = textmsgtxt.substring(14 ,16);
writeeeprom(216,Timer32hf);
String Timer32mnf = textmsgtxt.substring(17 ,19);
writeeeprom(219,Timer32mnf);
String msgtxt = "Timer3-2 ON at: " + readeeprom(210).substring(0 ,2) + ":" + readeeprom(213).substring(0 ,2) + ", DesON at: " + readeeprom(216).substring(0 ,2) + ":" + readeeprom(219).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Timer33")>=0){ //Exemplo Timer33:HrsINI,HrsFIM (Timer33:20:50 21:05)
String Timer33hi = textmsgtxt.substring(8 ,10);
writeeeprom(222,Timer33hi);
String Timer33mni = textmsgtxt.substring(11 ,13);
writeeeprom(225,Timer33mni);
String Timer33hf = textmsgtxt.substring(14 ,16);
writeeeprom(228,Timer33hf);
String Timer33mnf = textmsgtxt.substring(17 ,19);
writeeeprom(231,Timer33mnf);
String msgtxt = "Timer3-3 ON at: " + readeeprom(222).substring(0 ,2) + ":" + readeeprom(225).substring(0 ,2) + ", DesON at: " + readeeprom(228).substring(0 ,2) + ":" + readeeprom(231).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("SystemON")>=0){
onoff = "ON";
writeeeprom(243,onoff);
String msgtxt = "Sistema ON";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("SystemOFF")>=0){
onoff = "OF";
writeeeprom(243,onoff);
String msgtxt = "Sistema OFF";
digitalWrite(Relay1, LOW);
digitalWrite(Relay2, LOW);
digitalWrite(Relay3, LOW);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares1ON")>=0){
onoff = "ON";
writeeeprom(246,onoff);
String msgtxt = "S1-ON, pairdays Pares";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares1OFF")>=0){
onoff = "OF";
writeeeprom(246,onoff);
String msgtxt = "S1 Funcionamento Diário";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares2ON")>=0){
onoff = "ON";
writeeeprom(250,onoff);
String msgtxt = "S2-ON, pairdays Pares";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares2OFF")>=0){
onoff = "OF";
writeeeprom(250,onoff);
String msgtxt = "S2 Funcionamento Diário";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares3ON")>=0){
onoff = "ON";
writeeeprom(253,onoff);
String msgtxt = "S3-ON, pairdays Pares";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Pares3OFF")>=0){
onoff = "OF";
writeeeprom(253,onoff);
String msgtxt = "S3 Funcionamento Diário";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay1ON")>=0){
onoff = "ON";
writeeeprom(234,onoff);
String msgtxt = "Temporizador 1 ON";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay1OFF")>=0){
onoff = "OF";
writeeeprom(234,onoff);
digitalWrite(Relay1, LOW);
String msgtxt = "Temporizador 1 OFF";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay2ON")>=0){
onoff = "ON";
writeeeprom(237,onoff);
String msgtxt = "Temporizador 2 ON";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay2OFF")>=0){
onoff = "OF";
writeeeprom(237,onoff);
digitalWrite(Relay2, LOW);
String msgtxt = "Temporizador 2 OFF";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay3ON")>=0){
onoff = "ON";
writeeeprom(240,onoff);
String msgtxt = "Temporizador 3 ON";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Relay3OFF")>=0){
onoff = "OF";
writeeeprom(240,onoff);
digitalWrite(Relay3, LOW);
String msgtxt = "Temporizador 3 OFF";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp11ON")>=0){
onoff = "ON";
writeeeprom(75,onoff);
String msgtxt = "Temporizador 1-1 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp11OFF")>=0){
onoff = "OF";
writeeeprom(75,onoff);
String msgtxt = "Temporizador 1-1 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp12ON")>=0){
onoff = "ON";
writeeeprom(78,onoff);
String msgtxt = "Temporizador 1-2 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp12OFF")>=0){
onoff = "OF";
writeeeprom(78,onoff);
String msgtxt = "Temporizador 1-2 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp13ON")>=0){
onoff = "ON";
writeeeprom(81,onoff);
String msgtxt = "Temporizador 1-3 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp13OFF")>=0){
onoff = "OF";
writeeeprom(81,onoff);
String msgtxt = "Temporizador 1-3 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp21ON")>=0){
onoff = "ON";
writeeeprom(84,onoff);
String msgtxt = "Temporizador 2-1 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp21OFF")>=0){
onoff = "OF";
writeeeprom(84,onoff);
String msgtxt = "Temporizador 2-1 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp22ON")>=0){
onoff = "ON";
writeeeprom(87,onoff);
String msgtxt = "Temporizador 2-2 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp22OFF")>=0){
onoff = "OF";
writeeeprom(87,onoff);
String msgtxt = "Temporizador 2-2 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp23ON")>=0){
onoff = "ON";
writeeeprom(90,onoff);
String msgtxt = "Temporizador 2-3 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp23OFF")>=0){
onoff = "OF";
writeeeprom(90,onoff);
String msgtxt = "Temporizador 2-3 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp31ON")>=0){
onoff = "ON";
writeeeprom(93,onoff);
String msgtxt = "Temporizador 3-1 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp31OFF")>=0){
onoff = "OF";
writeeeprom(93,onoff);
String msgtxt = "Temporizador 3-1 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp32ON")>=0){
onoff = "ON";
writeeeprom(96,onoff);
String msgtxt = "Temporizador 3-2 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp32OFF")>=0){
onoff = "OF";
writeeeprom(96,onoff);
String msgtxt = "Temporizador 3-2 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp33ON")>=0){
onoff = "ON";
writeeeprom(99,onoff);
String msgtxt = "Temporizador 3-3 ON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Temp33OFF")>=0){
onoff = "OF";
writeeeprom(99,onoff);
String msgtxt = "Temporizador 3-3 DesON atdo";
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("STTimer")>=0){ // Condição dos Temporizadores ON ou OFF
T11 = readeeprom(75);
msgtxt1 = "T1-1: " + T11;
T12 = readeeprom(78);
msgtxt1 = msgtxt1 + " ,T1-2: " + T12;
T13 = readeeprom(81);
msgtxt1 = msgtxt1 + " ,T1-3: " + T13;
T21 = readeeprom(84);
msgtxt2 = "T2-1: " + T21;
T22 = readeeprom(87);
msgtxt2 = msgtxt2 + " ,T2-2: " + T22;
T23 = readeeprom(90);
msgtxt2 = msgtxt2 + " ,T2-3: " + T23;
T31 = readeeprom(93);
msgtxt3 = "T3-1: " + T31;
T32 = readeeprom(96);
msgtxt3 = msgtxt3 + " ,T3-2: " + T32;
T33 = readeeprom(99);
msgtxt3 = msgtxt3 + " ,T3-3: " + T33;
msgtxt = "Status Temporizadores: " + msgtxt1 + " - " + msgtxt2 + " - " + msgtxt3;
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("Status")>=0){ // Condição do Sistema ON ou OFF
String msgtxt = "Sistema: " + readeeprom(243).substring(0 ,2) + ", Circuito 1: " + readeeprom(234).substring(0 ,2) + ", Circuito 2: " + readeeprom(237).substring(0 ,2) + ", Circuito 3: " + readeeprom(240).substring(0 ,2);
msgtxt = msgtxt + ", S1 pairdays Pares: " + readeeprom(246).substring(0 ,2);
msgtxt = msgtxt + ", S2 pairdays Pares: " + readeeprom(250).substring(0 ,2);
msgtxt = msgtxt + ", S3 pairdays Pares: " + readeeprom(253).substring(0 ,2);
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("StartEndT1")>=0){ // Horario de funcionamento ON ou OFF
String msgtxt1 = "Timer1-1 ON: " + readeeprom(20).substring(0 ,2) + ":" + readeeprom(24).substring(0 ,2) + ", OFF: " + readeeprom(28).substring(0 ,2) + ":" + readeeprom(32).substring(0 ,2);
String msgtxt2 = "Timer1-2 ON: " + readeeprom(162).substring(0 ,2) + ":" + readeeprom(165).substring(0 ,2) + ", OFF: " + readeeprom(168).substring(0 ,2) + ":" + readeeprom(171).substring(0 ,2);
String msgtxt3 = "Timer1-3 ON: " + readeeprom(174).substring(0 ,2) + ":" + readeeprom(177).substring(0 ,2) + ", OFF: " + readeeprom(180).substring(0 ,2) + ":" + readeeprom(183).substring(0 ,2);
msgtxt = msgtxt1 + " - " + msgtxt2 + " - " + msgtxt3;
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("StartEndT2")>=0){ // Horario de funcionamento ON ou OFF
String msgtxt1 = "Timer2-1 ON: " + readeeprom(40).substring(0 ,2) + ":" + readeeprom(44).substring(0 ,2) + ", OFF: " + readeeprom(48).substring(0 ,2) + ":" + readeeprom(52).substring(0 ,2);
String msgtxt2 = "Timer2-2 ON: " + readeeprom(186).substring(0 ,2) + ":" + readeeprom(189).substring(0 ,2) + ", OFF: " + readeeprom(192).substring(0 ,2) + ":" + readeeprom(195).substring(0 ,2);
String msgtxt3 = "Timer2-3 ON: " + readeeprom(198).substring(0 ,2) + ":" + readeeprom(201).substring(0 ,2) + ", OFF: " + readeeprom(204).substring(0 ,2) + ":" + readeeprom(207).substring(0 ,2);
msgtxt = msgtxt1 + " - " + msgtxt2 + " - " + msgtxt3;
sendUDP(msgtxt);
textmsgtxt = "";
}
if (textmsgtxt.indexOf("StartEndT3")>=0){ // Horario de funcionamento ON ou OFF
String msgtxt1 = "Timer3-1 ON: " + readeeprom(60).substring(0 ,2) + ":" + readeeprom(64).substring(0 ,2) + ", OFF: " + readeeprom(68).substring(0 ,2) + ":" + readeeprom(72).substring(0 ,2);
String msgtxt2 = "Timer3-2 ON: " + readeeprom(210).substring(0 ,2) + ":" + readeeprom(213).substring(0 ,2) + ", OFF: " + readeeprom(216).substring(0 ,2) + ":" + readeeprom(219).substring(0 ,2);
String msgtxt3 = "Timer3-3 ON: " + readeeprom(222).substring(0 ,2) + ":" + readeeprom(225).substring(0 ,2) + ", OFF: " + readeeprom(228).substring(0 ,2) + ":" + readeeprom(231).substring(0 ,2);
msgtxt = msgtxt1 + " - " + msgtxt2 + " - " + msgtxt3;
sendUDP(msgtxt);
textmsgtxt = "";
}
}
}
//----------------------------------------------------- Function that sends UDP msgtxt
void sendUDP(String msgtxt){
// send back a reply, to the IP address and port we got the port from: 1 to remote port, 2 to server port
if ((Udp.remotePort()) > 0){
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.println(msgtxt);
Udp.endPacket();
}
else {
String myIP = readeeprom(0).substring(0, 14);
portinf = myIP.length();
Serial.print("Comp IP Server: ");
Serial.println(portinf);
if (portinf > 0) {
serverport = readeeprom(120).substring(0, 4).toInt();
char myIP1[15];
//String myIP = readeeprom(0).substring(0, 14);
myIP.toCharArray(myIP1, 15);
Udp.beginPacket(myIP1, serverport);
Udp.println(msgtxt);
Udp.endPacket();
//portinf = 0;
}
}
String textMsgOut = msgtxt;
send_email(textMsgOut);
}
//***************************************************
void writeeeprom(int enderecoBase1, String &mensagem){ // Salva a string nos endereços de forma sequencial
Serial.println (mensagem.length());
Serial.println (EEPROM.length());
if (mensagem.length()>EEPROM.length() || (enderecoBase1+mensagem.length()) >EEPROM.length() ){ // verificamos se a string cabe na memória a partir do endereço desejado
Serial.println ("A sua String não cabe na EEPROM"); // Caso não caiba mensagem de erro é mostrada
}
Serial.println (mensagem);
Serial.println (readeeprom(enderecoBase1));
String psswrd = readeeprom(enderecoBase1).substring(0, 6);//readeeprom(enderecoBase1);
// psswrd.trim();
Serial.println (psswrd);
// int psswrd1 = mensagem;
// Serial.println (psswrd1);
if(mensagem == psswrd) { // Economizar escritas de EEPROM (MAX: 100K)
Serial.println ("Psswrds iguais, não escreve");
}
else { // Caso pass diferente e seja possível armazenar
for (int i = 0; i<mensagem.length(); i++){
EEPROM.write(enderecoBase1,mensagem[i]); // Escrevemos cada byte da string
de forma sequencial na memória
enderecoBase1++; // Deslocamos endereço base em uma posição a cada byte salvo
}
EEPROM.write(enderecoBase1,'\0'); // Salvamos marcador de fim da string
EEPROM.commit();
Serial.println ("Escrito EEPROM");
}
}
//******************************************************************
String readeeprom(int enderecoBase1){
String mensagem="";
if (enderecoBase1>EEPROM.length()){ // Se o endereço base for maior que o espaço
de endereçamento da EEPROM retornamos uma string vazia
return mensagem;
}
else { // Caso contrário, lemos byte a byte de cada endereço e montamos uma nova
String
char pos;
do{
pos = EEPROM.read(enderecoBase1); // Leitura do byte com base na posição atual
enderecoBase1++; // A cada leitura incrementamos a posição a ser lida
mensagem = mensagem + pos; // Montamos string de saída
}
while (pos != '\0'); // Fazemos isso até encontrar o marcador de fim de string
}
return mensagem; // Retorno da mensagem
}
//==============================================================
void workingswitchs(){
Temp1 = readeeprom(234);
if (Temp1 == "ON") {
even_days1 = readeeprom(246);
if (even_days1 == "OF") {
switch1();
}
if (even_days1 == "ON") {
if (pairdays == 2){
switch1();
}
}
}
Temp2 = readeeprom(237);
if (Temp2 == "ON") {
even_days2 = readeeprom(250);
if (even_days2 == "OF") {
switch2();
}
if (even_days2 == "ON") {
if (pairdays == 2){
switch2();
}
}
}
Temp3 = readeeprom(240);
if (Temp3 == "ON") {
even_days3 = readeeprom(253);
if (even_days3 == "OF") {
switch3();
}
if (even_days3 == "ON") {
if (pairdays == 2){
switch3();
}
}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
void switch1(){
Tmr11 = readeeprom(75);
if (Tmr11 == "ON") {
ligar11inihr = readeeprom(20).substring(0 ,2).toInt();
ligar11inimn = readeeprom(24).substring(0 ,2).toInt();
ligar11fimhr = readeeprom(28).substring(0 ,2).toInt();
ligar11fimmn = readeeprom(32).substring(0 ,2).toInt();
if ((hrs == ligar11inihr) && (mn == ligar11inimn) && (seg == 3)){
digitalWrite(Relay1, HIGH);
delay(5);
msgtxt = "Timer1-1 ligado entre:" + readeeprom(20).substring(0 ,2) + ":"
+ readeeprom(24).substring(0 ,2) + " e: " + readeeprom(28).substring(0 ,2) + ":
" + readeeprom(32).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar11fimhr) && (mn == ligar11fimmn) && (seg == 3)){
digitalWrite(Relay1, LOW);
delay(5);
msgtxt = "Timer1-1 desligado";
sendUDP(msgtxt);
}
}
Tmr12 = readeeprom(78);
if (Tmr12 == "ON") {
ligar12inihr = readeeprom(162).substring(0 ,2).toInt();
ligar12inimn = readeeprom(165).substring(0 ,2).toInt();
ligar12fimhr = readeeprom(168).substring(0 ,2).toInt();
ligar12fimmn = readeeprom(171).substring(0 ,2).toInt();
if ((hrs == ligar12inihr) && (mn == ligar12inimn) && (seg == 3)){
digitalWrite(Relay1, HIGH);
delay(5);
msgtxt = "Timer1-2 ligado entre:" + readeeprom(162).substring(0 ,2) + ":" + readeeprom(165).substring(0 ,2) + " e: " + readeeprom(168).substring(0 ,2) + ":" + readeeprom(171).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar12fimhr) && (mn == ligar12fimmn) && (seg == 3)){
digitalWrite(Relay1, LOW);
delay(5);
msgtxt = "Timer1-2 desON atdo";
sendUDP(msgtxt);
}
}
Tmr13 = readeeprom(81);
if (Tmr13 == "ON") {
ligar13inihr = readeeprom(174).substring(0 ,2).toInt();
ligar13inimn = readeeprom(177).substring(0 ,2).toInt();
ligar13fimhr = readeeprom(180).substring(0 ,2).toInt();
ligar13fimmn = readeeprom(183).substring(0 ,2).toInt();
if ((hrs == ligar13inihr) && (mn == ligar13inimn) && (seg == 3)){
digitalWrite(Relay1, HIGH);
delay(5);
msgtxt = "Timer1-3 ligado entre:" + readeeprom(174).substring(0 ,2) +
":" + readeeprom(177).substring(0 ,2) + " e: " + readeeprom(180).substring(0 ,2) +
":" + readeeprom(183).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar13fimhr) && (mn == ligar13fimmn) && (seg == 3)){
digitalWrite(Relay1, LOW);
delay(5);
msgtxt = "Timer1-3 desligado";
sendUDP(msgtxt);
}
}
}
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
void switch2(){
Tmr21 = readeeprom(84);
if (Tmr21 == "ON") {
ligar21inihr = readeeprom(40).substring(0 ,2).toInt();
ligar21inimn = readeeprom(44).substring(0 ,2).toInt();
ligar21fimhr = readeeprom(48).substring(0 ,2).toInt();
ligar21fimmn = readeeprom(52).substring(0 ,2).toInt();
if ((hrs == ligar21inihr) && (mn == ligar21inimn) && (seg == 3)){
digitalWrite(Relay2, HIGH);
delay(5);
msgtxt = "Timer2-1 ligado entre:" + readeeprom(40).substring(0 ,2) + ":"
+ readeeprom(44).substring(0 ,2) + " e: " + readeeprom(48).substring(0 ,2) +
":" + readeeprom(52).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar21fimhr) && (mn == ligar21fimmn) && (seg == 3)){
digitalWrite(Relay2, LOW);
delay(10);
msgtxt = "Timer2-1 desligado";
sendUDP(msgtxt);
}
}
Tmr22 = readeeprom(87);
if (Tmr22 == "ON") {
ligar22inihr = readeeprom(186).substring(0 ,2).toInt();
ligar22inimn = readeeprom(189).substring(0 ,2).toInt();
ligar22fimhr = readeeprom(192).substring(0 ,2).toInt();
ligar22fimmn = readeeprom(195).substring(0 ,2).toInt();
if ((hrs == ligar22inihr) && (mn == ligar22inimn) && (seg == 3)){
digitalWrite(Relay2, HIGH);
delay(5);
msgtxt = "Timer2-2 ligado entre:" + readeeprom(186).substring(0 ,2) + ":"
+ readeeprom(189).substring(0 ,2) + " e: " + readeeprom(192).substring(0 ,2) +
":" + readeeprom(195).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar22fimhr) && (mn == ligar22fimmn) && (seg == 3)){
digitalWrite(Relay2, LOW);
delay(10);
msgtxt = "Timer2-2 desligado";
sendUDP(msgtxt);
}
}
Tmr23 = readeeprom(90);
if (Tmr23 == "ON") {
ligar23inihr = readeeprom(198).substring(0 ,2).toInt();
ligar23inimn = readeeprom(201).substring(0 ,2).toInt();
ligar23fimhr = readeeprom(204).substring(0 ,2).toInt();
ligar23fimmn = readeeprom(207).substring(0 ,2).toInt();
if ((hrs == ligar23inihr) && (mn == ligar23inimn) && (seg == 3)){
digitalWrite(Relay2, HIGH);
delay(5);
msgtxt = "Timer2-3 ligado entre:" + readeeprom(198).substring(0 ,2) + ":"
+ readeeprom(201).substring(0 ,2) + " e: " + readeeprom(204).substring(0 ,2) +
":" + readeeprom(207).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar23fimhr) && (mn == ligar23fimmn) && (seg == 3)){
digitalWrite(Relay2, LOW);
delay(10);
msgtxt = "Timer2-3 desligado";
sendUDP(msgtxt);
}
}
}
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
void switch3() {
Tmr31 = readeeprom(93);
if (Tmr31 == "ON") {
ligar31inihr = readeeprom(60).substring(0 ,2).toInt();
ligar31inimn = readeeprom(64).substring(0 ,2).toInt();
ligar31fimhr = readeeprom(68).substring(0 ,2).toInt();
ligar31fimmn = readeeprom(72).substring(0 ,2).toInt();
if ((hrs == ligar31inihr) && (mn == ligar31fimmn) && (seg == 3)){
digitalWrite(Relay3, HIGH);
delay(5);
msgtxt = "Timer3-1 ligado entre:" + readeeprom(60).substring(0 ,2) + ":"
+ readeeprom(64).substring(0 ,2) + " e: " + readeeprom(68).substring(0 ,2) + ":"
+ readeeprom(72).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar31fimhr) && (mn == ligar31fimmn) && (seg == 3)){
digitalWrite(Relay3, LOW);
delay(5);
msgtxt = "Timer3-1 desligado";
sendUDP(msgtxt);
}
}
Tmr32 = readeeprom(96);
if (Tmr32 == "ON") {
ligar32inihr = readeeprom(210).substring(0 ,2).toInt();
ligar32inimn = readeeprom(213).substring(0 ,2).toInt();
ligar32fimhr = readeeprom(216).substring(0 ,2).toInt();
ligar32fimmn = readeeprom(219).substring(0 ,2).toInt();
if ((hrs == ligar32inihr) && (mn == ligar32fimmn) && (seg == 3)){
digitalWrite(Relay3, HIGH);
delay(5);
msgtxt = "Timer3-2 ligado entre:" + readeeprom(210).substring(0 ,2) + ":"
+ readeeprom(213).substring(0 ,2) + " e: " + readeeprom(216).substring(0 ,2) + ":"
+ readeeprom(219).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar32fimhr) && (mn == ligar32fimmn) && (seg == 3)){
digitalWrite(Relay3, LOW);
delay(5);
msgtxt = "Timer3-2 desligado";
sendUDP(msgtxt);
}
}
Tmr33 = readeeprom(99);
if (Tmr33 == "ON") {
ligar33inihr = readeeprom(222).substring(0 ,2).toInt();
ligar33inimn = readeeprom(225).substring(0 ,2).toInt();
ligar33fimhr = readeeprom(228).substring(0 ,2).toInt();
ligar33fimmn = readeeprom(231).substring(0 ,2).toInt();
if ((hrs == ligar33inihr) && (mn == ligar33fimmn) && (seg == 3)){
digitalWrite(Relay3, HIGH);
delay(1);
msgtxt = "Timer3-3 ligado entre:" + readeeprom(222).substring(0 ,2) + ":"
+ readeeprom(225).substring(0 ,2) + " e: " + readeeprom(228).substring(0 ,2) + ":"
+ readeeprom(231).substring(0 ,2);
sendUDP(msgtxt);
}
if ((hrs == ligar33fimhr) && (mn == ligar33fimmn) && (seg == 3)){
digitalWrite(Relay3, LOW);
delay(1);
msgtxt = "Timer3-3 desligado";
sendUDP(msgtxt);
}
}
}
//SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status){
/* Print the current status */
Serial.println(status.info());
/* Print the sending result */
if (status.success()){
Serial.println("----------------");
ESP_MAIL_PRINTF("Message sent success: %d\n", status.completedCount());
ESP_MAIL_PRINTF("Message sent failled: %d\n", status.failedCount());
Serial.println("----------------\n");
struct tm dt;
for (size_t i = 0; i < smtp.sendingResult.size(); i++){
/* Get the result item */
SMTP_Result result = smtp.sendingResult.getItem(i);
time_t ts = (time_t)result.timestamp;
localtime_r(&ts, &dt);
ESP_MAIL_PRINTF("Message No: %d\n", i + 1);
ESP_MAIL_PRINTF("Status: %s\n", result.completed ? "success" : "failed");
ESP_MAIL_PRINTF("Date/Time: %d/%d/%d %d:%d:%d\n", dt.tm_year + 1900, dt.tm_mon +
1, dt.tm_mday, dt.tm_hour, dt.tm_min, dt.tm_sec);
ESP_MAIL_PRINTF("Recipient: %s\n", result.recipients.c_str());
ESP_MAIL_PRINTF("Subject: %s\n", result.subject.c_str());
}
Serial.println("----------------\n");
// You need to clear sending result as the memory usage will grow up.
smtp.sendingResult.clear();
}
}
//==============================
void send_email( String textMsgOut ){ //void send_email( void ){
/* Declare the session config data */
ESP_Mail_Session session;
//String textMsgOut;
//send email
Serial.println("Sending email...");
Serial.println(textMsgOut);
/* Set the callback function to get the sending results */
smtp.callback(smtpCallback);
/* Declare the ESP_Mail_Session for user defined session credentials */
//ESP_Mail_Session session;
/* Set the session config */
session.server.host_name = SMTP_HOST;
session.server.port = SMTP_PORT;
session.login.email = AUTHOR_EMAIL;
session.login.password = AUTHOR_PASSWORD;
session.login.user_domain = "";
/* Declare the message class */
SMTP_Message message;
/* Set the message headers */
message.sender.name = "D1_Mini Switchs";
message.sender.email = AUTHOR_EMAIL;
message.subject = "Condition Reply";
message.addRecipient("Mike", RECIPIENT_EMAIL);
/* Enable the chunked data transfer with pipelining for large message if
server supported */
message.enable.chunking = true;
//Send raw text message
String textMsg = "D1-MINI Repy: " + textMsgOut;
message.text.content = textMsg.c_str();
message.text.charSet = "us-ascii";
message.text.transfer_encoding = Content_Transfer_Encoding::enc_7bit;
message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_high;
message.response.notify = esp_mail_smtp_notify_success |
esp_mail_smtp_notify_failure |
esp_mail_smtp_notify_delay;
/* Set the custom message header */
//message.addHeader("Message-ID: <abcde.fghij@gmail.com>");
/* Connect to server with the session config */
if (!smtp.connect(&session))
return;
/* Start sending Email and close the session */
if (!MailClient.sendMail(&smtp, &message))
Serial.println("Error sending Email, " + smtp.errorReason());
// to clear sending result log
// smtp.sendingResult.clear();
ESP_MAIL_PRINTF("Free Heap: %d\n", MailClient.getFreeHeap());
}
Comentários