#include <WiFi.h>
#include <WiFiClientSecure.h>
//#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// Configuración de red
const char* ssid = "TU_SSID"; // Nombre de tu red WiFi
const char* password = "TU_PASSWORD"; // Contraseña de tu red WiFi
// Configuración de Telegram Bot
#define BOT_TOKEN "TU_BOT_TOKEN" // Token de tu bot de Telegram
#define CHAT_ID "TU_CHAT_ID" // Tu ID de chat de Telegram
WiFiClientSecure client;
//UniversalTelegramBot bot(BOT_TOKEN, client);
// Configuración de pines
const int pirPin = 15; // Pin del sensor PIR
const int ledPin = 4; // Pin del LED sirena
// Variables de estado
bool motionDetected = false;
unsigned long lastDetectionTime = 0;
const unsigned long cooldownPeriod = 30000; // 30 segundos entre notificaciones
// Función para conectar a WiFi
/*void connectToWiFi() {
Serial.print("Conectando a WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado a la red WiFi");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
}
// Función para enviar notificación por Telegram
void sendTelegramNotification() {
String message = "🚨 ALERTA 🚨\n";
message += "Se ha detectado movimiento en el área vigilada!\n";
message += "Hora: " + String(millis() / 1000) + " segundos después del inicio";
if (bot.sendMessage(CHAT_ID, message, "")) {
Serial.println("Notificación de Telegram enviada");
} else {
Serial.println("Error al enviar notificación de Telegram");
}
}*/
// Función para efecto de sirena con LED
void sirenEffect() {
for (int i = 0; i < 10; i++) {
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
}
}
void setup() {
Serial.begin(115200);
// Configurar pines
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
// Conectar a WiFi
//connectToWiFi();
// Configurar cliente seguro para Telegram
//client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Certificado raíz para Telegram
// Mensaje de inicio
//bot.sendMessage(CHAT_ID, "Sistema de alarma PIR activado ✅", "");
Serial.println("Sistema de alarma inicializado");
}
void loop() {
// Leer estado del sensor PIR
int pirState = digitalRead(pirPin);
// Detección de movimiento
if (pirState == HIGH) {
if (!motionDetected) {
motionDetected = true;
lastDetectionTime = millis();
Serial.println("Movimiento detectado!");
// Activar sirena LED
sirenEffect();
// Enviar notificación
//sendTelegramNotification();
}
} else {
motionDetected = false;
}
// Enfriamiento para evitar múltiples notificaciones
if (motionDetected && (millis() - lastDetectionTime > cooldownPeriod)) {
motionDetected = false;
}
// Pequeña pausa para estabilidad
delay(100);
}