- للتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.
- خطوات انشاء التلغرام البوت وربطه مع الويموس:
المرحلة 1: إنشاء بوت Telegram
- افتح تطبيق Telegram
- في البحث اكتب:
BotFather
- ستجده بحساب موثق ✔️
- اضغط Open
- اضغط Create a New Bot
- سيطلب منك كتابة:
- ✔️ اسم البوت (Bot Name)
- مثال: Smart Alert System
- ✔️ اسم المستخدم في الخانة الثالثة (username_bot)
- ⚠️ مهم: يجب أن ينتهي بـ bot وبدون مسافات
- مثال: smart_1950_bot (يجب الا يكون مستعمل مسبقا)
- بعدها اضغط Create Bot
- بعدها سيعطيك التوكن (TOKEN)، ستظهر لك رسالة مثل:
123456789:AAAbbbCCCxxxYYYzzz
- 📌 هذا التوكن مهم جدا
- 👉 اضغط Copy احتفظ به جيدًا
المرحلة 2: إنشاء مجموعة Telegram بالتفصيل
- لإنشاء المجموعة، اضغط:
- اختر أي شخص (يمكن حذفه لاحقًا)
- اكتب اسم المجموعة:
- مثال:
Home Alerts
- اضغط على OK
- لاضافة البوت للمجموعة، اولا عد الى الصفحة الرئيسية للتلغرام
- اكتب اسم المستخدم username_bot في خانة البحث
- اضغط على Start
- اضغط على اسمها من الأعلى
- اختر: Add to Group or Channel
- ابحث عن اسم المجموعة وأضفه اليها
- ✔️ فعّل خاصية Manage Group وكل الخاصيات التي تحتها
- اضغط Add bot as Admin
المرحلة 3: الحصول على CHAT ID (أهم خطوة)
- في المجموعة اكتب رسالة: hello ثم ارسلها
- افتح المتصفح واكتب:
- https://api.telegram.org/botTOKEN/getUpdates
- 📌 استبدل:
- كلمة TOKEN ← بالتوكن الخاص بك الذي نسخته مسبقا واحتفظت به
- ستظهر لك بيانات JSON مثل:
{"ok": true,"result": [{"message": {"chat": {"id": -1001234567890,"title": "Home Alerts"}}}]}
- 📌 انسخ رقم id الفريد الذي سيظهر لك: مثلا هنا 1001234567890-
- 👉 هذا هو: CHAT_ID
المرحلة 4: إعداد Arduino IDE + Wemos
- افتح Arduino IDE
- File → Preferences
- أضف هذا الرابط: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- لتثبيت البورد، اختر: Tools → Board → Boards Manager
- ابحث: ESP8266
- اضغط Install
- لاختيار البورد، اختر:Tools → Board → LOLIN (Wemos) D1 R1
المرحلة 5: ما يجب اضافته في الكود
- قبل رفع الكود الى اللوحة، يجب عدم تركيب الاسلاك مع لوحة الويموس حتى اكتمال عملية الرفع.
- كما يجب تنزيل المكتبات التالية:
- مكتبة ESP8266WiFi.h.
- مكتبة WiFiClientSecure.h.
- مكتبة UniversalTelegramBot.h.
- للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
- في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// بيانات الشبكة وتلجرام
const char* ssid = “Redmi A1”;
const char* pass = “19041904”;
const char* BOT_TOKEN = “8767103482:AAH6Zn4FRJ-NQ9RwCrnt3OTDLqPZK-L7Fbg”;
const char* CHAT_ID = “-1003617183721”;
// تعريف الدبابيس (Pins)
const int WATER_SENSOR = D4; // مدخل إشارة حساس الماء
const int BUZZER = D2;
const int LED = D1;
bool waterDetected = false; // لتجنب تكرار إرسال الرسائل بشكل مزعج
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
void setup() {
Serial.begin(115200);
pinMode(WATER_SENSOR, INPUT); // ضبط دبوس الحساس كمدخل
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
// إطفاء الجرس واللد عند التشغيل
digitalWrite(BUZZER, LOW);
digitalWrite(LED, LOW);
WiFi.begin(ssid, pass);
client.setInsecure();
Serial.print(“Connecting to WiFi”);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“\n✅ WiFi Connected!”);
// رسالة تأكيد تشغيل النظام
bot.sendMessage(CHAT_ID, “🛡️ نظام مراقبة تسرب المياه في القبو متصل الآن.”, “”);
}
void loop() {
// قراءة حالة الحساس
// ملاحظة: معظم حساسات الماء تعطي HIGH عند وجود ماء و LOW عند الجفاف
int sensorState = digitalRead(WATER_SENSOR);
if (sensorState == HIGH && !waterDetected) {
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
// إذا تم اكتشاف ماء ولم يتم التنبيه مسبقاً
Serial.println(“⚠️ WARNING: Water Leak Detected!”);
// إرسال رسالة تلجرام عاجلة
bot.sendMessage(CHAT_ID, “⚠️ تحذير عاجل: تم كشف تسرب مياه في القبو!”, “”);
// تشغيل التنبيه الضوئي والصوتي
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
waterDetected = true; // تعيين الحالة لمنع تكرار الرسائل
}
else if (sensorState == LOW && waterDetected) {
// إذا جف الحساس أو تمت معالجة التسرب
Serial.println(“✅ Water cleared.”);
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
waterDetected = false; // إعادة ضبط الحالة
}
delay(1000); // فحص كل ثانية لتوفير الطاقة واستقرار الاتصال
}