📚 إنشاء المقاطع البرمجية
المفاهيم الأساسية
المقاطع البرمجية: هي الأكواد التي ستقوم بتشغيل العقد في مشروع المحاكاة.
الدالة `randint`: تأخذ عددين صحيحين كوسيطين، وتُعيد عدداً صحيحاً عشوائياً داخل نطاق هذين العددين.
الدالة `.id()`: تُرجع معرف العقدة (وهو عدد صحيح فريد) والذي يمثل أيضاً رقم القطاع.
الدالة `.send()`: تُستخدم لإرسال البيانات من عقدة إلى العقد الأخرى داخل نطاقها.
خريطة المفاهيم
```markmap
أدوات محاكاة إنترنت الأشياء
برنامج كاب كاربون (CupCarbon)
إنشاء مشروع محاكاة جديد
#### الخطوة 1: بدء مشروع جديد
- اضغط على أيقونة "New Project" (مشروع جديد) من شريط الأدوات.
#### الخطوة 2: حفظ المشروع
- اختر الموقع المراد حفظ المشروع فيه.
- اكتب اسم الملف: "My First CupCarbon Simulation".
#### الخطوة 3: تأكيد الحفظ
- اضغط على زر "Save" (حفظ).
مشروع محاكاة: مراقبة الحريق والتحذيرات
#### إنشاء مشروع جديد للمراقبة
##### الخطوة 1: بدء مشروع جديد
- اضغط على New Project (مشروع جديد) من شريط الأدوات.
##### الخطوة 2: تسمية المشروع وحفظه
- اختر الموقع الذي تريد تخزين المشروع فيه.
- اكتب "Fire Surveillance and Notification" في حقل File name (اسم الملف).
- اضغط على Save (حفظ).
إنشاء شبكة العقدة بوحدة التحكم الرئيسية والوسطي
#### الخطوة 1: إدراج العقد
- اضغط على "عقدة إنترنت أشياء (IoT) Node" من شريط Toolbar.
- اضغط على الخريطة لإضافة العقدة.
- اضغط على "All" من شريط State.
- ضع عقدتين أخريين داخل الدائرة الخارجية للعقدة الأولى.
- اضغط على Esc.
#### الخطوة 2: التعرف على العقد
- العقدة الأولى المضافة هي وحدة التحكم الرئيسية.
- العقدتان الأخريان هما عقد الوسطي.
#### الخطوة 3: ضمان الاتصال
- يجب وضع العقد داخل نصف قطر اتصال وحدة التحكم.
- إذا لم تكن داخل النطاق، اسحبها وأقلتها بالقرب حتى يظهر سهم اتصال ثنائي الاتجاه.
تابع إضافة العقد الطرفية
#### لإدراج العقد الطرفية:
##### الخطوة 1
- اضغط على Node IoT (عقدة إنترنت الأشياء) من شريط Toolbar (الأدوات).
##### الخطوة 2
- ضع عقدتين كل node proxy (عقدة وسطى)، وذلك داخل دائرتها الأخرى.
##### الخطوة 3
- اضغط على All (الكل) من شريط الحالة.
##### الخطوة 4
- اضغط على Esc في لوحة المفاتيح.
إنشاء المقاطع البرمجية
#### المكتبات اللازمة
- `import time`
- `import random`
#### منطق المحاكاة (العقد الطرفية)
##### توليد حدث حريق عشوائي
- داخل حلقة `while node.loop():`
- `fire = random.randint(1, 6)` لتحديد القطاع الذي قد يحدث فيه الحريق.
##### التحقق من وقوع الحريق وإرسال التحذير
- إذا كانت `fire == 1` (اندلع حريق في القطاع 1):
- `node.print("FIRE!")`
- إنشاء رسالة: `message = "FIRE IN SECTOR " + str(node.id())`
- إرسال الرسالة: `node.send(message)`
```
نقاط مهمة
- الغرض من المقطع البرمجي هو تشغيل العقد الطرفية في محاكاة مراقبة الحريق.
- يتم استخدام مكتبة `random` لتوليد رقم عشوائي (من 1 إلى 6) يمثل القطاع الذي قد يحدث فيه حريق.
- معرف العقدة (الذي تُرجعه `node.id()`) هو نفسه رقم القطاع.
- يتم إرسال رسالة تحذير (`"FIRE IN SECTOR X"`) إلى العقد المجاورة باستخدام الدالة `node.send()`.