#include <ThingSpeak.h>
#include <Esp32WifiManager.h>
const int ZUMBADOR = 23; //Simula el timbre del telefonillo
const int PULSADOR = 22; //Simula el boton del telefonillo
const int PUERTA = 25; //Donde se situa la cerradura electrica
unsigned long counterChannelNumber = 2504023; //id del canal de thingspeak
const char * myCounterReadAPIKey = "0EMWXWWJDYGNFXI6"; //api read de thingspeak
const char * myCounterWriteAPIKey = "98FA4RAQOUBA2LWX"; //api write de thingspeak
const int FieldNumber1 = 1 ; //Canal del servidor
int lecturaPulsador;
WiFiClient client; //Inicia los procesos wifi
void setup()
{
//Definimos los modos de los pines
pinMode(PULSADOR, INPUT);
pinMode(ZUMBADOR, OUTPUT);
pinMode(PUERTA, OUTPUT);
Serial.begin(9600); //Inicia el puerto serie
delay(2000);
Serial.println("Conectando");
WiFi.begin("Wokwi-GUEST"); //Escribres el wifi y su contraseña para conectarse
while (WiFi.status() != WL_CONNECTED) //Mientras que no sea capaz de conectarse a la red que haga...
{
delay(500);
Serial.print(".");
}
//Una vez conectado haz...
Serial.println();
Serial.println("Conectado, IP address: " );//Escribe la direccion ip asignada a la esp
Serial.println(WiFi.localIP());
ThingSpeak.begin(client);
}
void loop()
{
delay(1000);
lecturaPulsador = digitalRead(PULSADOR); //Creamos una variable que es la lectura del pin para el pulsador
Serial.println("Lectura del pulsador:" + String(lecturaPulsador));
int lecturaSERVIDOR = ThingSpeak.readLongField(counterChannelNumber, FieldNumber1, myCounterReadAPIKey); //Creamos una variable que es la lectura de un canal del servidor
Serial.println("Lectura del servidor:" + String(lecturaSERVIDOR));
if (lecturaSERVIDOR == 1) //Simula abrir la puerta
{
digitalWrite(PUERTA, HIGH);
ThingSpeak.writeField(counterChannelNumber, FieldNumber1, 0, myCounterWriteAPIKey); //dni,nºcanal,valor,contraseña
}
else
{
digitalWrite(PUERTA, LOW);
}
if(lecturaPulsador == 1) //simular llamada por portero
{
tone(ZUMBADOR, 262);
delay(2000);
noTone(ZUMBADOR);
}
else
{
noTone(ZUMBADOR);
}
}