تخطَّ إلى المحتوى
نافيرا تك NAVERA TECH
  1. KFS × Navera
  2. IoT & AI for Smart Agriculture
  3. السيشن 8
08/ 22 الأسبوع 3-4 · شبكات الحساسات اللاسلكية 3 ساعات

استقبال البيانات ومعالجتها على السيرفر

Server-Side Data Reception & Processing

نكتب الحلقة التي تربط الحقل بالسيرفر: سكربت Python يشترك في MQTT، يتحقق من صحة كل رسالة، يرفض القيم المستحيلة، يخزن في SQLite بجدول زمني مفهرس، ويسجل الأخطاء — مع لوحة حالة الشبكة الحية في الطرفية.

Overview

نظرة عامة على السيشن

بنهاية السيشن ستكون قادراً على

  • تصمم Schema لبيانات سلاسل زمنية في SQLite بفهارس مناسبة.
  • تكتب مشترك MQTT بمكتبة paho-mqtt 2.x مع callbacks.
  • تطبق Validation: رفض JSON الفاسد، القيم خارج المدى ⇒ NULL، تسجيل العقد الجديدة تلقائياً.
  • تستخدم logging لتسجيل الأخطاء بدلاً من print، وتقرأ السجل لتشخيص المشاكل.
  • تحسب حالة الشبكة (Online/Offline، نسبة التسليم) باستعلامات SQL.

التطبيق في مزرعة الكلية

تشغيل سيرفر الاستقبال على لابتوب المزرعة طوال الجلسة، وعرض لوحة «حالة الشبكة» لكل عقد المزرعة على الشاشة: آخر ظهور، عدد الرسائل في الساعة، نسبة التسليم، والقيم المرفوضة.

المُخرج (Deliverable)

خط بيانات كامل (Data pipeline) من الحقل إلى السيرفر المحلي: Broker → mqtt_ingest.py → SQLite، مع ملف سجل أخطاء (ingest.log) ولوحة حالة الشبكة.

خطة السيشن (180 دقيقة)

  1. 0:00 مراجعة مراجعة: شجرة المواضيع واختبار LWT 10 د
  2. 0:10 شرح معمارية خط البيانات + تصميم جداول السلاسل الزمنية 25 د
  3. 0:35 تطبيق Lab: SQLite من الصفر — إنشاء، إدخال، استعلامات زمنية 30 د
  4. 1:05 تطبيق Lab: سكربت الاستقبال mqtt_ingest.py سطراً بسطر 30 د
  5. 1:35 استراحة استراحة 10 د
  6. 1:45 تطبيق معالجة البيانات المفقودة والأخطاء + السجلات + لوحة الحالة 30 د
  7. 2:15 ميداني ميداني: تشغيل خط البيانات الكامل من حقول المزرعة 35 د
  8. 2:50 تقييم اختبار سريع + الواجب 10 د

الأدوات والمكونات

Python 3.10+paho-mqtt 2.xSQLite + DB Browser for SQLiteMosquittoمشروع Smart Farmعقد ESP32 من السيشن 7

قبل السيشن

قاموس المصطلحات (Glossary)

Data pipelineخط البيانات

سلسلة المراحل من الحساس حتى قاعدة البيانات.

Ingestionالاستيعاب

استقبال البيانات وإدخالها للنظام.

Schemaمخطط الجدول

أسماء الأعمدة وأنواعها.

Indexفهرس

يسرّع البحث (مثل فهرس الكتاب) — ضروري على (node_id, ts).

Time-seriesسلسلة زمنية

قيم مرتبة بالوقت.

NULLقيمة مفقودة

غياب القيمة — أفضل من تخزين −999 أو 0.

Callbackدالة استدعاء

دالة تنفذها المكتبة عند حدث (وصول رسالة).

Validationالتحقق

رفض أو تصحيح البيانات غير المنطقية قبل التخزين.

Loggingالتسجيل

كتابة الأحداث والأخطاء في ملف بوقتها.

WAL modeوضع السجل المسبق

يسمح بالقراءة والكتابة على SQLite في نفس الوقت.

Upsertإدراج أو تحديث

INSERT … ON CONFLICT DO UPDATE.

ISO-8601صيغة الوقت القياسية

2024-06-12T14:30:00 — ترتيبها النصي = ترتيبها الزمني.