تطوير مشروع إنترنت الأشياء: تسجيل البيانات، التنبيهات، التحديث عن بُعد ودعم عدة أجهزة
في المقال السابق، قمنا ببناء نظام إنترنت أشياء يقوم بإرسال بيانات الحساس من ESP32 إلى السحابة باستخدام MQTT، وعرضها في لوحة تحكم لحظية. الآن سنقوم بتوسيع هذا المشروع بإضافة ميزات متقدمة مثل تسجيل البيانات، التنبيهات الذكية، التحديث عبر الهواء (OTA)، ودعم عدة أجهزة.
١. تسجيل البيانات باستخدام Firebase
عرض البيانات في الوقت الحقيقي مفيد، ولكن الاحتفاظ بالبيانات وتحليلها لاحقًا مهم جدًا. سنستخدم قاعدة بيانات Firebase لتخزين القيم بشكل مستمر.
١.١ إعداد Firebase
- قم بإنشاء مشروع على Firebase
- فعّل قاعدة البيانات Realtime Database وقم بإعداد القواعد لتكون مؤقتًا:
{ ".read": true, ".write": true }
- احصل على مفتاح السر الخاص بقاعدة البيانات (secret)
١.٢ كود ESP32 لتسجيل البيانات
#include <WiFi.h>
#include <FirebaseESP32.h>
#define WIFI_SSID "اسم_شبكتك"
#define WIFI_PASSWORD "كلمة_المرور"
#define FIREBASE_HOST "yourproject.firebaseio.com"
#define FIREBASE_AUTH "مفتاح_السر"
FirebaseData fbdo;
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
float temp = 26.4;
String path = "/device1/logs/" + String(millis());
Firebase.setFloat(fbdo, path + "/temperature", temp);
}
void loop() {}
يمكنك لاحقًا تصدير هذه البيانات إلى Google Sheets أو عرضها باستخدام أدوات مثل Grafana أو Google Data Studio.
٢. إرسال تنبيهات في الوقت الحقيقي
إذا تجاوزت درجة الحرارة حدًا معينًا، يمكنك إرسال إشعار عبر Telegram أو البريد الإلكتروني. سنستخدم IFTTT لهذا الغرض.
٢.١ إعداد IFTTT
- أنشئ Applet جديد باستخدام Webhook كـ Trigger
- حدد الإجراء (Action) كإرسال رسالة عبر Telegram أو بريد إلكتروني
٢.٢ كود التنبيه من ESP32
if (temp > 30.0) {
Firebase.setString(fbdo, "/device1/alerts", "⚠️ درجة الحرارة مرتفعة!");
}
٣. التحديث عبر الهواء (OTA)
ميزة OTA تتيح لك رفع تحديثات جديدة للبرنامج الثابت على ESP32 بدون الحاجة لتوصيله بالكمبيوتر.
٣.١ كود تمكين OTA
#include <WiFi.h>
#include <ArduinoOTA.h>
void setup() {
WiFi.begin("اسم_الشبكة", "كلمة_المرور");
while (WiFi.status() != WL_CONNECTED) delay(500);
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle();
}
بعد رفع الكود مرة واحدة عبر USB، ستتمكن من إرسال التحديثات القادمة عبر الشبكة.
٤. دعم عدة أجهزة
لتوسيع النظام، يجب دعم أكثر من جهاز. يمكن تحقيق ذلك بإعطاء كل جهاز معرفًا خاصًا (ID) وتخزين بياناته في مسار منفصل بقاعدة البيانات.
٤.١ هيكل قاعدة البيانات
/device1/logs
/device2/logs
/device1/alerts
٤.٢ كود يدعم معرّف الجهاز
String deviceId = "device2";
String path = "/" + deviceId + "/logs/" + String(millis());
Firebase.setFloat(fbdo, path + "/humidity", humidity);
٤.٣ عرض الأجهزة في لوحة تحكم
- إنشاء تبويبات (Tabs) لكل جهاز
- عرض الرسوم البيانية للقراءات
- إظهار آخر وقت تم فيه التحديث
٥. دمج كل المكونات
الآن أصبح نظامك يعمل كالتالي:
- 📡 ESP32 → MQTT → لوحة تحكم React
- 🧠 ESP32 → Firebase → تسجيل وتنبيهات
- 🚀 الحاسوب → OTA → تحديث ESP32
- 🧩 Firebase يدير جميع الأجهزة عبر معرفات
٦. نصائح للحماية والتوسعة
- استخدم رموز مصادقة خاصة لكل جهاز
- قم بتمكين TLS للتشفير
- تحقق من صحة بيانات OTA (مثل checksum)
- احفظ السجلات بصيغة قابلة للتحليل (مثلاً InfluxDB)
الخلاصة
قمت الآن بتحويل مشروعك من تجربة بسيطة إلى نظام ذكي يمكن تطويره ودمجه في مشاريع كبيرة. باستخدام التسجيل، التنبيهات، التحديث عن بعد، ودعم الأجهزة المتعددة، أصبحت جاهزًا لبناء منصة إنترنت أشياء قوية.
في المقال القادم، سنتحدث عن الحماية، المصادقة، إعداد لوحات تحكم مخصصة للمستخدمين، وكيفية إدارة الأجهزة بشكل آمن وفعّال.
أضف تعليق