عندما تعرض لوحة المتابعة قراءة حساس، يحتاج المستخدم إلى معرفة وقتها ومصدرها وهل ما تزال حديثة. لذلك سنربط ESP32 بخدمة تحفظ القراءات وواجهة تعرض آخر حالة معروفة، مع معالجة إعادة الإرسال وانقطاع الشبكة. المثال متابعة تعليمية لحرارة غرفة، ولم يُختبر كجهاز إنذار أو تحكم في بيئة حساسة.
حدّد القياس قبل شراء المكونات
اكتب نوع القيمة ووحدتها والفترة المطلوبة بين القراءات وحدود بيئة التشغيل. في هذا المثال نحتاج حرارة بالدرجة المئوية، ومعرّف جهاز ثابتًا، وتاريخ الاستقبال. اختيار الحساس يعتمد على مدى القياس وطريقة التوصيل وتوافق جهده مع اللوحة. لا توصل مخرجًا ذا جهد أعلى مباشرة إلى مدخل ESP32، وراجع ورقة بيانات القطعة الفعلية قبل التوصيل.
قائمة المكونات الوظيفية هي لوحة ESP32، وحساس رقمي مناسب، وكابل ومصدر منخفض الجهد متوافقان، وأسلاك ولوحة تجارب عند الحاجة. لا يدخل التحكم في أجهزة الكهرباء المنزلية ضمن هذا المثال. ارسم توصيل الطاقة والأرضي وإشارة البيانات، ثم افصل فحص القراءة محليًا عن فحص الشبكة حتى تعرف أي جزء سبب العطل.
مسار القراءة من الجهاز إلى الشاشة
- يقرأ الجهاز الحساس ويتحقق من أن القيمة رقم صالح ضمن المجال المعقول.
- ينشئ رسالة تحمل معرّف الجهاز ورقم تسلسل، ويرسلها إلى وسيط MQTT مصادق عليه عبر TLS.
- تستهلك خدمة الخادم الموضوع المخصص للجهاز، وتتحقق من بنية الرسالة وصلاحية الجهاز.
- تسجل الخدمة وقت الاستقبال وتمنع إدخال الرسالة نفسها مرتين.
- تطلب لوحة المتابعة أحدث قراءة عبر API وتعرض الوقت والوحدة وحالة حداثة البيانات.
تشرح وثائق Espressif عميل MQTT وأمثلة TLS. انتبه إلى أن مكوّن ESP-MQTT انتقل إلى مستودع مستقل بدءًا من ESP-IDF 6.0؛ ثبّت إصدار بيئة التطوير والمكوّن في README بدل افتراض أن كل مثال قديم يعمل دون تعديل.
اتفق على عقد الرسالة
{
"device_id": "lab-room-01",
"boot_id": "session-a",
"sequence": 42,
"temperature_c": 24.6,
"measured_at": "2026-10-28T09:30:00Z"
}
هذه بيانات افتراضية لتوضيح البنية. يمنع مفتاح مركّب من الجهاز وجلسة التشغيل والتسلسل تكرار السجل، حتى إذا أعيد إرسال الرسالة. وجود boot_id مهم لأن رقم التسلسل قد يعود إلى الصفر عند إعادة تشغيل اللوحة. إذا لم تتزامن ساعة الجهاز، أرسل حالة واضحة لذلك واعتمد وقت استقبال الخادم في عرض الحداثة، دون اختلاق وقت قياس دقيق.
على الخادم رفض الوحدات غير المعروفة والقيم النصية والتواريخ غير القابلة للتحليل، وتسجيل سبب الرفض دون تسجيل كلمات مرور الشبكة. لا تثق في device_id وحده لإثبات هوية الجهاز؛ اربطه بوسيلة المصادقة وصلاحية النشر في الموضوع الذي تسمح به.
صمّم الانقطاع بوصفه حالة متوقعة
| الحالة | سلوك الجهاز | ما يظهر للمستخدم |
|---|---|---|
| انقطاع Wi-Fi | إعادة اتصال بفترات متباعدة وحد أعلى للمحاولات | آخر قراءة مع وقتها وتحذير قدم البيانات |
| الوسيط غير متاح | طابور محدود أو إسقاط موثق بحسب المتطلبات | لا تُعرض قيمة قديمة بوصفها قراءة حية |
| إعادة تشغيل الجهاز | جلسة جديدة وتسلسل جديد | استئناف العرض دون ازدواج القراءات |
| الحساس مفصول | إرسال حالة خطأ مستقلة بدل صفر مصطنع | الحساس غير متاح، لا حرارة صفرية |
حدّد سعة التخزين المؤقت وما يحدث إذا امتلأ. لا تكتب إلى الذاكرة الدائمة مع كل دورة دون تقدير أثر ذلك. وفي لوحة المتابعة افصل اتصال المتصفح بالخادم عن اتصال الجهاز بالوسيط: قد تعمل الصفحة بصورة طبيعية بينما يكون الجهاز منقطعًا.
خطة تحقق قابلة للتنفيذ
ابدأ برسالة مصطنعة موسومة بوضوح لاختبار الخادم، ثم انتقل إلى الجهاز الحقيقي. أرسل الرسالة ذاتها مرتين وافحص عدد السجلات؛ غيّر الوحدة إلى قيمة غير مسموحة؛ افصل الحساس؛ أعد تشغيل اللوحة؛ واقطع الشبكة ثم أعدها. دوّن لكل تجربة وقتها وإصدار البرنامج والمتوقع والمشاهد. لا تعدّ لون مؤشر الاتصال دليلًا على أن كل قراءة حُفظت.
احفظ مخطط التوصيل وإصدارات الأدوات وعقد الرسالة وتعليمات تشغيل الخادم وسجل التجارب، مع ملف إعداد يوضح الأسماء دون أسرار. عند تكليف تنفيذ مشروع Arduino أو IoT، حدّد المكونات المتوفرة وظروف استخدامها وطريقة عرض القراءة، حتى يشمل الاختبار الجهاز والاتصال والواجهة.
المصادر
مراجعة المصادر: .
اختبار المثال وحدوده
نموذج تعليمي؛ لم تتوفر لوحة ESP32 أو حساس لإجراء اختبار كهربائي أو قياس فعلي. الرسالة والأرقام أدناه افتراضية، وليست قراءات جهاز.
مقالات ذات صلة
الخدمة المرتبطة: برمجة Arduino والأجهزة المتصلة والروبوتات.
أرسل متطلبات مشروعك