Buenos dias:
Dispongo de una placa nodemcu (esp8266), con un codigo logro enviar un coreo electronico al encender la placa pero para volver a enviar el correo debo apagar la placa y volverla a enchufar de esa manera enciende nuevamente la placa y envia el correo.
Yo nesecito ponerle un interruptor entre dos pines creo yo y programarlo para que la placa siempre este encendida pero al hacer contacto entre esos dos pines se envie el correo.
el codigo que tengo es este:
#include <ESP8266WiFi.h>
#include "Gsender.h"
#pragma region Globals
const char* ssid = "XXXXX"; // WIFI network name
const char* password = "XXXXX"; // WIFI network password
uint8_t connection_state = 0; // Connected to WIFI or not
uint16_t reconnect_interval = 10000; // If not connected wait time to try again
#pragma endregion Globals
uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr)
{
static uint16_t attempt = 0;
Serial.print("Connecting to ");
if(nSSID) {
WiFi.begin(nSSID, nPassword);
Serial.println(nSSID);
} else {
WiFi.begin(ssid, password);
Serial.println(ssid);
}
uint8_t i = 0;
while(WiFi.status()!= WL_CONNECTED && i++ < 50)
{
delay(200);
Serial.print(".");
}
++attempt;
Serial.println("");
if(i == 51) {
Serial.print("Connection: TIMEOUT on attempt: ");
Serial.println(attempt);
if(attempt % 2 == 0)
Serial.println("Check if access point available or SSID and Password\r\n");
return false;
}
Serial.println("Connection: ESTABLISHED");
Serial.print("Got IP address: ");
Serial.println(WiFi.localIP());
return true;
}
void Awaits()
{
uint32_t ts = millis();
while(!connection_state)
{
delay(50);
if(millis() > (ts + reconnect_interval) && !connection_state){
connection_state = WiFiConnect();
ts = millis();
}
}
}
void setup()
{
Serial.begin(115200);
connection_state = WiFiConnect();
if(!connection_state) // if not connected to WIFI
Awaits(); // constantly trying to connect
Gsender *gsender = Gsender::Instance(); // Getting pointer to class instance
String subject = "Puerta abierta/cerrada";
if(gsender->Subject(subject)->Send("XXXXXX@gmail.com", "Puerta abierta/cerrada")) {
Serial.println("Message send.");
} else {
Serial.print("Error sending message: ");
Serial.println(gsender->getError());
}
}
void loop(){}
Tengo entendido que debo ponerle un IF (condicion) que sea que al juntar un pin de entrada con otro recien ahi haga la accion de mandar el mail.
Milll gracias!!!
recompensare mucho a quien me pueda ayudar con este proyecto!!!!!
PD: Siempre deberian estar los pines haciendo contacto, la accion la debe hacer al separarlos.
Moderador: Código editado con etiquetas