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

Backend بسيط + قاعدة بيانات زمنية

Simple Backend + Time-Series Database

كيف يعمل الويب من الداخل: Client/Server، HTTP methods و Status codes، وتصميم REST API للمزرعة. نبني API بـ Flask من الصفر يستقبل قراءات الحقل ويخزنها ويقدمها باستعلامات زمنية، ثم نستكشف API منصة KFS Smart Farm ونقارن SQLite بقواعد السلاسل الزمنية مثل InfluxDB.

Overview

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

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

  • تشرح دورة Request/Response و GET / POST و Status codes (200، 201، 400، 401، 404).
  • تصمم REST endpoints واضحة لبيانات المزرعة.
  • تبني API بـ Flask يقرأ ويكتب في SQLite مع التحقق من المدخلات.
  • تكتب استعلامات زمنية (نطاق زمني، تجميع يومي) وتقدمها كـ JSON.
  • تفهم متى نحتاج Time-series DB مثل InfluxDB / TimescaleDB.

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

تحويل عقد المزرعة لإرسال قراءاتها عبر HTTP POST مباشرة لسيرفر Flask على لابتوب المزرعة، والتحقق من البيانات عبر الـ API باستعلامات «آخر 24 ساعة» و «متوسط يومي» لكل حقل.

المُخرج (Deliverable)

نظام Backend يستقبل ويخزن ويقدم بيانات المزرعة: mini_api.py مكتوب بيد الفريق + منصة Smart Farm تعمل مع عقدة حقيقية، ومجموعة طلبات curl/Postman موثقة.

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

  1. 0:00 مراجعة مراجعة: صفحة الصوبة الحية 10 د
  2. 0:10 شرح HTTP و REST وتصميم API المزرعة + قواعد السلاسل الزمنية 30 د
  3. 0:40 تطبيق Lab: API بـ Flask من الصفر (mini_api.py) 35 د
  4. 1:15 استراحة استراحة 10 د
  5. 1:25 تطبيق Lab: API منصة Smart Farm — اختبار بـ curl/Postman 35 د
  6. 2:00 تطبيق ربط صفحة الصوبة بالـ API بدلاً من data.json 25 د
  7. 2:25 ميداني ميداني: العقد ترسل للـ API عبر HTTP 25 د
  8. 2:50 تقييم اختبار سريع + الواجب 10 د

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

Python + FlaskPostman أو curlمشروع web-basics (mini_api.py)مشروع smart-farm (app.py)ESP32 + firmware HTTP

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

Client / Serverالعميل / الخادم

العميل يطلب (المتصفح، العقدة)، والخادم يجيب (Flask).

HTTP methodنوع الطلب

GET للقراءة، POST للإضافة، PUT/PATCH للتعديل، DELETE للحذف.

Endpointنقطة النهاية

رابط + method يؤدي وظيفة: POST /api/readings.

Status codeرمز الحالة

2xx نجاح، 4xx خطأ من العميل، 5xx خطأ في الخادم.

RESTأسلوب تصميم API

موارد بأسماء (readings, nodes) وعمليات HTTP قياسية.

Query stringمعاملات الرابط

?node=field_A&hours=24

Request bodyجسم الطلب

بيانات JSON المرسلة مع POST.

Routeالمسار

ربط رابط بدالة Python في Flask (@app.get).

Time-series DBقاعدة سلاسل زمنية

مصممة للكتابة المستمرة والاستعلام بالوقت (InfluxDB).

Retention policyسياسة الاحتفاظ

حذف أو تجميع البيانات الأقدم من مدة معينة تلقائياً.

Downsamplingتقليل الدقة

تحويل قراءات كل دقيقة لمتوسطات ساعية للأرشيف.

CORSمشاركة الموارد عبر الأصول

قيد المتصفح على طلب API من نطاق مختلف.