#include <UniversalTelegramBot.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
// Definición de pines
const int pinPIR = 13; // Pin al que está conectado el sensor PIR
const int pinLED = 23; // Pin al que está conectado el LED
const int pinBuzzer = 4; // Pin al que está conectado el Buzzer
const int pinTrig = 15; // Pin al que está conectado el pin TRIG del sensor ultrasonido
const int pinEcho = 16; // Pin al que está conectado el pin ECHO del sensor ultrasonido
// Token del bot de Telegram y chat ID
#define TELEGRAM_BOT_TOKEN "6632995916:AAFLPx1pmcSTq0kojLsA5phF-Z1yq5vkuXY"
#define CHAT_ID "6779752367"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// const char* TELEGRAM_CERTIFICATE_ROOT =
// // // "-----BEGIN CERTIFICATE-----\n"
// "MIIDQzCCAiqgAwIBAgIQCgEUAa7UqGo6BmBWhO0JzANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDEw1FdXJvcGUgU2VydmVyIENBMB4XDTIwMDUyMjAwMDAwMFoXDTIwMDUyMjEyMDAwMFowGDEWMBQGA1UEAxMNRXVyb3BlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALlN1sMwGdY47ZwzyTWM5KrlweRkQMbJW5Cw\n"
// "dw1fu3jGJrmWxkSbNwL7PUa2cFVFpRP6IeTno91xdAay0SxwB0DVLbhnOyFnQlCMA==\n"
// // // "-----END CERTIFICATE-----\n";
// // Crear una instancia de la clase UniversalTelegramBot
WiFiClientSecure secured_client; // Puedes utilizar WiFiClientSecure si necesitas la capa de seguridad
UniversalTelegramBot bot(TELEGRAM_BOT_TOKEN, secured_client);
void setup() {
Serial.begin(115200);
pinMode(pinPIR, INPUT);
pinMode(pinLED, OUTPUT);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
Serial.print("Connecting to Wifi SSID ");
Serial.print(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
// Configurar el certificado raíz
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.print("\nWiFi connected. IP address: ");
Serial.println(WiFi.localIP());
Serial.print("Retrieving time: ");
configTime(0, 0, "pool.ntp.org");
time_t now = time(nullptr);
while (now < 24 * 3600) {
Serial.print(".");
delay(100);
now = time(nullptr);
}
Serial.println(now);
}
void loop() {
int movimiento = digitalRead(pinPIR);
if (movimiento == HIGH) {
Serial.println("Movimiento detectado");
digitalWrite(pinLED, HIGH);
digitalWrite(pinBuzzer, HIGH);
delay(500);
digitalWrite(pinBuzzer, LOW);
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrig, LOW);
long duracionPulso = pulseIn(pinEcho, HIGH);
float distancia = duracionPulso * 0.034 / 2;
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
delay(1000);
// Verificar si la distancia es significativa antes de enviar el mensaje
if (distancia > 100) { // Ajusta este umbral según tus necesidades
String mensaje = "Distancia: " + String(distancia) + " cm";
bot.sendMessage(CHAT_ID, mensaje);
}
String mensajeDistancia = "¡Movimiento detectado en tu sensor PIR!";
bot.sendMessage(CHAT_ID, mensajeDistancia);
delay(2000);
digitalWrite(pinLED, LOW);
}
delay(100);
}