#include <WiFi.h>
#include <ESP_Mail_Client.h>
// ---------------- Wi-Fi Bilgileri ----------------
#define WIFI_SSID "SUPERONLINE_Wi-Fi_9F2B"
#define WIFI_PASSWORD "XPFjq9jR4t"
/*
// ---------------- GAM Wi-Fi Bilgileri ----------------
#define WIFI_SSID "SUPERONLINE_Wi-Fi_5DNH"
#define WIFI_PASSWORD "TsXUsKD23f67"
*/
// ---------------- Gmail Bilgileri ----------------
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 465 // SSL portu
#define AUTHOR_EMAIL "@gmail.com" // Gönderici Gmail adresi
#define AUTHOR_PASSWORD "" // Gmail App Password (16 haneli, normal şifre değil)
#define RECIPIENT_EMAIL "@gmail.com" // Alıcı e-posta adresi
// ---------------- Donanım Pinleri ----------------
int pir_pin = 27;
int buzzer = 25;
int ledPin = 12;
int led2=14;
// SMTP oturumu
SMTPSession smtp;
// ---------------- Fonksiyon İmzası ----------------
void smtpCallback(SMTP_Status status);
// ---------------- Setup ----------------
void setup() {
Serial.begin(115200);
pinMode(pir_pin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, LOW);
Serial.println();
Serial.print("📡 WiFi'ye bağlanıyor");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\n✅ WiFi bağlantısı başarılı!");
Serial.print("IP Adresi: ");
Serial.println(WiFi.localIP());
// Saat senkronizasyonu (SSL sertifikası için zorunlu)
configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov");
}
// ---------------- Loop ----------------
void loop() {
if (digitalRead(pir_pin) == HIGH) { // Hareket tespit edildiğinde
Serial.println("🔥 Hareket tespit edildi!");
digitalWrite(buzzer, HIGH);
for(int i=0;i<=20;i++)
{
digitalWrite(ledPin, 1);
digitalWrite(led2, 0);
delay(200);
digitalWrite(ledPin, 0);
digitalWrite(led2, 1);
delay(200);
}
sendEmail();
delay(10000); // Aynı olayı sürekli mail atmaması için bekleme
digitalWrite(buzzer, LOW);
}
delay(1000);
}
// ---------------- E-posta Gönderim Fonksiyonu ----------------
void sendEmail() {
Serial.println("📧 E-posta gönderiliyor...");
// Gmail oturumu ayarları
ESP_Mail_Session session;
session.server.host_name = SMTP_HOST;
session.server.port = SMTP_PORT;
session.login.email = AUTHOR_EMAIL;
session.login.password = AUTHOR_PASSWORD;
session.time.ntp_server = "pool.ntp.org";
session.time.gmt_offset = 3;
session.secure.startTLS = false; // SSL portu (465) olduğu için kapalı olmalı
// E-posta içeriği
SMTP_Message message;
message.sender.name = "ESP32 Hırsız Alarm Sistemi";
message.sender.email = AUTHOR_EMAIL;
message.subject = "🚨 Hareket Algılandı!";
message.addRecipient("Kullanici", RECIPIENT_EMAIL);
String htmlMsg = "<h2 style='color:red;'>💰🥷 Hareket Tespit Edildi!</h2>"
"<p>ESP32 sisteminiz hareket algıladı. Lütfen acilen kontrol edin!</p>";
message.html.content = htmlMsg.c_str();
message.html.content_type = "text/html";
message.text.charSet = "utf-8";
message.html.transfer_encoding = Content_Transfer_Encoding::enc_7bit;
smtp.debug(1);
smtp.callback(smtpCallback);
// Gmail sunucusuna bağlan
if (!smtp.connect(&session)) {
Serial.println("❌ SMTP bağlantısı başarısız!");
Serial.println(smtp.errorReason());
return;
}
// Mail gönder
if (!MailClient.sendMail(&smtp, &message)) {
Serial.println("❌ E-posta gönderilemedi: " + smtp.errorReason());
} else {
Serial.println("✅ E-posta başarıyla gönderildi!");
}
smtp.closeSession(); // Oturumu kapat
}
// ---------------- Callback ----------------
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
}