📚 برنامج البايثون دور مستقبل MQTT
المفاهيم الأساسية
برنامج مستقبل MQTT: برنامج بايثون يمكنه الاشتراك في موضوع MQTT وجمع الرسائل من عدة ناشري أردوينو في نفس الوقت.
خريطة المفاهيم
```markmap
7. الرسائل في إنترنت الأشياء
إدارة النفايات الذكية وتحليل البيانات (صفحة 292)
إنشاء برامج تحليل البيانات
#### ملف mqtt_receiver.py
##### الوظيفة: الاشتراك في موضوع MQTT وجمع الرسائل.
##### المخرجات: حفظ البيانات في ملف JSON.
#### ملف data_analysis.ipynb
##### الوظيفة: قراءة البيانات من ملف JSON وتحليلها.
##### العملية: يقرأ البيانات، يكتب النتائج، يجمع المعلومات.
تدفق البيانات في النظام
#### وسيط MQTT: نقطة تمرير الرسائل بين الحاوية وبرامج التحليل.
#### ملف JSON: وسيط تخزين للبيانات المجمعة قبل تحليلها.
إنشاء ملف بيانات جسون (صفحة 293)
خطوات إنشاء الملف
#### 1. إنشاء ملف جديد باسم data.json
##### المحتوى: مصفوفة فارغة [].
#### 2. دور ملف mqtt_receiver.py
##### إلحاق كائنات JSON (التقارير) بالمصفوفة الموجودة في data.json.
#### 3. دور ملف data_analysis.py
##### فتح ملف data.json.
##### قراءة محتويات مصفوفة JSON.
##### إجراء عمليات تحليل البيانات.
برمجة ملف mqtt_receiver.py
#### استيراد الحزم المطلوبة
##### datetime: لإضافة طابع زمني للرسائل.
##### json: للتعامل مع كائنات JSON.
##### paho.mqtt.client: لإنشاء عملاء MQTT.
##### os: للتعامل مع الملفات.
#### إنشاء المتغيرات للتعامل مع ملف JSON
##### data_file: المسار الكامل لملف JSON.
##### data_file_objects: قائمة لتخزين الكائنات من ملف JSON.
برمجة عميل MQTT (صفحة 294)
إنشاء متغيرات اتصال MQTT
#### CLIENT_ID: معرف العميل (مثل RECEIVER_01).
#### MQTT_BROKER: عنوان الوسيط (مثل broker.emqx.io).
#### TOPIC: موضوع الاشتراك (مثل waste/drops).
#### PORT: منفذ الاتصال (مثل 1883).
#### FLAG_CONNECTED: علم حالة الاتصال (يبدأ بـ False).
إنشاء متغيرات تخزين البيانات
#### messages_stack: مصفوفة لتخزين الرسائل الخاصة بكل حاوية.
#### reports: مصفوفة لتخزين كائنات التقارير.
إنشاء دالة معالج الأحداث on_connect
#### الوظيفة: طباعة رسالة تأكيد الاتصال في Terminal.
#### العملية: تغيير قيمة FLAG_CONNECTED بناءً على رمز الاستجابة (rc).
##### إذا كان rc == 0: الاتصال ناجح.
##### إذا كان rc != 0: الاتصال فاشل.
برمجة دالة معالجة الرسائل (صفحة 295)
دالة on_message
#### الوظيفة: معالجة الرسائل الواردة من وسيط MQTT.
#### العملية:
##### فك تشفير حمولة الرسالة وتحويلها إلى كائن JSON.
##### إلحاق الكائن بالمصفوفة messages_stack.
##### طباعة الرسالة المستلمة في Terminal.
##### التحقق من وجود العلم can_filled في الكائن.
###### إذا كان True: استدعاء دالة generate_report().
توسعة البرنامج
#### يمكن توسعة البرنامج لمعالجة بيانات JSON تحتوي على المزيد من الحقول والمعلومات حول الناشرين.
```
نقاط مهمة
- وظيفة `on_message` هي المسؤولة عن استقبال ومعالجة كل رسالة تصل من وسيط MQTT.
- تقوم الدالة بتحويل حمولة الرسالة من نص إلى كائن JSON يمكن التعامل معه في بايثون.
- يتم تخزين كل كائن مستلم في مصفوفة `messages_stack` للاحتفاظ بالبيانات.
- يمكن تصميم البرنامج ليتفاعل مع محتوى الرسالة، مثل استدعاء دالة إنشاء تقرير عند ملء الحاوية (`can_filled == True`).
- يمكن تطوير البرنامج ليدعم معالجة رسائل من عدة أجهزة أردوينو تحتوي على بيانات أكثر تعقيدًا.