#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <DHT.h>
// — إعدادات الحساس —
#define DHTPIN D4 // الدبوس المتصل بحساس DHT11
#define DHTTYPE DHT11 // نوع الحساس
DHT dht(DHTPIN, DHTTYPE);
// — بيانات الشبكة وتلجرام —
const char* ssid = “Redmi A1”;
const char* pass = “19041904”;
const char* BOT_TOKEN = “8604308627:AAEJnHjAbfa1r5z-g2zrNaVRiXmMn1wlNw0”;
const char* CHAT_ID = “-1004337592927”;
const int BUZZER = D2;
bool alertActive = false;
// عتبة الرطوبة الآمنة للملابس (الرطوبة فوق 65% تسبب العفن والروائح الكريهة في الخزائن المغلقة)
const float HUMIDITY_THRESHOLD = 65.0;
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(BUZZER, OUTPUT);
digitalWrite(BUZZER, LOW);
WiFi.begin(ssid, pass);
client.setInsecure();
Serial.print(“Connecting to WiFi…”);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“\nConnected!”);
bot.sendMessage(CHAT_ID, “👕 نظام حماية خزائن الملابس من الرطوبة والتعفن يعمل الآن بنجاح.”, “”);
}
void loop() {
delay(2000); // DHT11 يحتاج تأخير بين القراءات
float h = dht.readHumidity(); // قراءة الرطوبة
if (isnan(h)) {
Serial.println(“فشل قراءة حساس DHT!”);
return;
}
Serial.print(“Humidity in Closet: “);
Serial.print(h);
Serial.println(“%”);
if (h > HUMIDITY_THRESHOLD) {
if (!alertActive) {
String alertMsg = “⚠️ تحذير: رطوبة عالية في خزانة الملابس (” + String(h) + “%)!\n”;
alertMsg += “خطر نمو الفطريات، صدور روائح كريهة، وتلف الملابس والأحذية الجلدية.\n”;
alertMsg += “💡 يُنصح بفتح الخزانة للتهوية أو استخدام أكياس امتصاص الرطوبة (سيليكا جل).”;
bot.sendMessage(CHAT_ID, alertMsg, “”);
alertActive = true;
}
// تفعيل جرس الإنذار
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
} else {
if (alertActive) {
bot.sendMessage(CHAT_ID, “✅ الرطوبة داخل الخزانة عادت للمستويات الآمنة والطبيعية.”, “”);
alertActive = false;
}
digitalWrite(BUZZER, LOW);
}
}