📚 تمارين توسيع مشروع محاكاة إنترنت الأشياء
المفاهيم الأساسية
لا تحتوي الصفحة على تعريفات جديدة للمفاهيم، بل على تعليمات لتطوير مشروع محاكاة قائم.
خريطة المفاهيم
بناءً على تحليل المحتوى، هذه الصفحة هي استكمال وتوسيع للموضوع الموجود في الخريطة السابقة (مشروع محاكاة مراقبة الحريق في برنامج CupCarbon).
```markmap
أدوات محاكاة إنترنت الأشياء
برنامج كاب كاربون (CupCarbon)
مشروع محاكاة: مراقبة الحريق والتحذيرات
#### إنشاء شبكة العقدة بوحدة التحكم الرئيسية والوسطي
#### تابع إضافة العقد الطرفية
#### إنشاء المقاطع البرمجية
##### منطق المحاكاة (العقد الطرفية)
##### المقطع البرمجي النهائي (edge.py)
##### المقطع البرمجي للعقد الوسطى
##### المقطع البرمجي النهائي (proxy.py)
##### منطق وحدة التحكم (Controller)
###### المقطع البرمجي النهائي (controller.py)
- if node.bufferSize() > 0:
- message = node.read()
- node.print(message)
- time.sleep(2)
- node.print("")
- time.sleep(0.01)
###### خطوات إنشاء المقطع البرمجي
- اضغط على "بايثون" في شريط الأدوات.
- اكتب الأوامر البرمجية في الحقل الفارغ.
- اكتب "controller" في حقل اسم الملف.
- اضغط على "حفظ".
- أغلق نافذة محرر بايثون.
###### خطوات إدراج المقطع البرمجي
- اضغط على العقدة.
- اضغط على علامة تبويب Device Parameters (معاملات الجهاز).
- اضغط على صندوق Script file (ملف المقطع البرمجي).
- اختر ملف controller.py من القائمة المنسدلة.
- اضغط على الزر لإدراج المقطع البرمجي.
- اضغط على زر Save Project (حفظ المشروع).
#### تشغيل المحاكاة
##### الخطوات النهائية
- أنشئ المقاطع البرمجية الأخرى بنفس الطريقة.
- انسخ الأوامر وطبقها على العقد المقابلة.
- تأكد من احتواء جميع العقد على المقطع البرمجي.
- اضغط على Run IoT Simulation (تشغيل محاكاة إنترنت الأشياء) من شريط الأدوات.
##### ملاحظات على نتائج المحاكاة
- بسبب استخدام مولدات أرقام عشوائية، قد تشتعل حرائق في بعض القطاعات (خاصة على الأطراف) أكثر من غيرها.
- قد لا تشتعل حرائق في بعض القطاعات على الإطلاق.
##### حالات المحاكاة (شكل 8.19)
- رسم تخطيطي يوضح شبكة محاكاة مع العقد (edge, proxy, controller).
- يظهر حالة الشبكة مع إشعال حريق في قطاعات مختلفة (مثل القطاع 7 أو القطاع 4).
#### تمارين التوسيع والتعديل
##### التمرين 1: توسيع الشبكة
- إضافة عقدة طرفية (Edge) لكل عقدة وسطى (Proxy).
- أن يكون لكل عقدة وسطى ثلاثة عقد طرفية.
- إضافة المقاطع البرمجية داخل العقد الجديدة.
##### التمرين 2: توسيع الشبكة أكثر
- إضافة عقدة وسطى إضافية.
- إضافة عقدتين طرفيتين.
- أن يكون لكل عقدة وسطى عقدتين طرفيتين.
- إضافة المقاطع البرمجية داخل العقد الجديدة.
##### التمرين 3: تعديل منطق المحاكاة (الحرائق)
- تحديد قسم التعليمات البرمجية الذي يقرر تكرار حدوث الحرائق.
- تعديل المشروع لزيادة احتمال حدوث الحرائق أكثر من السابق.
##### التمرين 4: اختبار التأخير الزمني (Latency)
- تعديل برنامج العقد الوسطى لجعل العقدة في وضع السكون لفترة أطول.
- ملاحظة وتسجيل وجود أي تأخير أو فقدان لأي رسائل.
##### التمرين 5: إضافة مخاطر جديدة (تسرب المياه والفيضان)
- توسيع المشروع لدعم احتمال حدوث تسرب المياه والفيضان.
- تعديل برنامج القطاعات المعرضة للحرائق.
- جعل القيمة 2 من دالة `randint` تعني حدوث تسرب مياه أو فيضان.
- قيام العقدة بطباعة الرسالة المناسبة وإرسالها.
```
نقاط مهمة
- تركز هذه التمارين على توسيع مشروع المحاكاة القائم واختبار سلوكه تحت ظروف مختلفة.
- التمارين تتضمن تعديلات على هيكل الشبكة (عدد العقد) ومنطق المحاكاة (احتمالية المخاطر) وسلوك العقد (فترات السكون).
- الهدف هو تطوير مهارات البرمجة وفهم سلوك الشبكات في إنترنت الأشياء من خلال التجربة والتعديل.