صفحة 335 - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

📚 معلومات الصفحة

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 تمارين توسيع مشروع محاكاة إنترنت الأشياء

المفاهيم الأساسية

لا تحتوي الصفحة على تعريفات جديدة للمفاهيم، بل على تعليمات لتطوير مشروع محاكاة قائم.

خريطة المفاهيم

بناءً على تحليل المحتوى، هذه الصفحة هي استكمال وتوسيع للموضوع الموجود في الخريطة السابقة (مشروع محاكاة مراقبة الحريق في برنامج CupCarbon).

```markmap

أدوات محاكاة إنترنت الأشياء

برنامج كاب كاربون (CupCarbon)

مشروع محاكاة: مراقبة الحريق والتحذيرات

#### إنشاء شبكة العقدة بوحدة التحكم الرئيسية والوسطي

#### تابع إضافة العقد الطرفية

#### إنشاء المقاطع البرمجية

##### منطق المحاكاة (العقد الطرفية)

##### المقطع البرمجي النهائي (edge.py)

##### المقطع البرمجي للعقد الوسطى

##### المقطع البرمجي النهائي (proxy.py)

##### منطق وحدة التحكم (Controller)

###### المقطع البرمجي النهائي (controller.py)

  • while node.loop():
- 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` تعني حدوث تسرب مياه أو فيضان.
  • قيام العقدة بطباعة الرسالة المناسبة وإرسالها.
```

نقاط مهمة

  • تركز هذه التمارين على توسيع مشروع المحاكاة القائم واختبار سلوكه تحت ظروف مختلفة.
  • التمارين تتضمن تعديلات على هيكل الشبكة (عدد العقد) ومنطق المحاكاة (احتمالية المخاطر) وسلوك العقد (فترات السكون).
  • الهدف هو تطوير مهارات البرمجة وفهم سلوك الشبكات في إنترنت الأشياء من خلال التجربة والتعديل.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

1

نوع: QUESTION_HOMEWORK

وسع مشروعك لدعم عقدة طرفية (Edge) تضاف لكل عقدة وسطى (Proxy)، بحيث يكون لكل عقدة وسطى ثلاثة عقد طرفية. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة.

2

نوع: QUESTION_HOMEWORK

وسع مشروعك لدعم عقدة وسطى إضافية، وأضف عقدتين طرفيتين، ولكل عقدة وسطى عقدتين طرفيتين. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة.

3

نوع: QUESTION_HOMEWORK

حدد أي قسم من التعليمات البرمجية يقرر تكرار حدوث الحرائق. عدّل مشروعك في برنامج CupCarbon لزيادة احتمال حدوث الحرائق أكثر من السابق.

4

نوع: QUESTION_HOMEWORK

قد يؤدي أي تأخير زمني (Latency) في شبكة المصنع إلى تأخير الاتصال بين العقد. قم بتعديل برنامجك الخاص بعقد الوسطى لجعل العقدة وضع السكون لفترة أطول. هل لاحظت وجود أي تأخير أو فقدان لأي رسائل؟ دون ملاحظاتك أدناه.

5

نوع: QUESTION_HOMEWORK

وسع مشروعك لدعم احتمال حدوث تسرب المياه وحدوث الفيضان. عدّل برنامجك للقطاعات المعرضة للحرائق بحيث يعني إرجاع القيمة من دالة توليد الأرقام العشوائية (randint) القيمة 2 حدوث تسرب للمياه أو فيضان في هذا القطاع. على العقدة القيام بطباعة الرسالة المناسبة وإرسالها.

📄 النص الكامل للصفحة

--- SECTION: 1 --- وسع مشروعك لدعم عقدة طرفية (Edge) تضاف لكل عقدة وسطى (Proxy)، بحيث يكون لكل عقدة وسطى ثلاثة عقد طرفية. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة. --- SECTION: 2 --- وسع مشروعك لدعم عقدة وسطى إضافية، وأضف عقدتين طرفيتين، ولكل عقدة وسطى عقدتين طرفيتين. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة. --- SECTION: 3 --- حدد أي قسم من التعليمات البرمجية يقرر تكرار حدوث الحرائق. عدّل مشروعك في برنامج CupCarbon لزيادة احتمال حدوث الحرائق أكثر من السابق. --- SECTION: 4 --- قد يؤدي أي تأخير زمني (Latency) في شبكة المصنع إلى تأخير الاتصال بين العقد. قم بتعديل برنامجك الخاص بعقد الوسطى لجعل العقدة وضع السكون لفترة أطول. هل لاحظت وجود أي تأخير أو فقدان لأي رسائل؟ دون ملاحظاتك أدناه. --- SECTION: 5 --- وسع مشروعك لدعم احتمال حدوث تسرب المياه وحدوث الفيضان. عدّل برنامجك للقطاعات المعرضة للحرائق بحيث يعني إرجاع القيمة من دالة توليد الأرقام العشوائية (randint) القيمة 2 حدوث تسرب للمياه أو فيضان في هذا القطاع. على العقدة القيام بطباعة الرسالة المناسبة وإرسالها.

✅ حلول أسئلة الكتاب الرسمية

عدد الأسئلة: 5

سؤال س:1: وسع مشروعك لدعم عقدة طرفية (Edge) تضاف لكل عقدة وسطى (Proxy)، بحيث يكون لكل عقدة وسطى ثلاثة عقد طرفية. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة.

الإجابة: أضفت لكل عقدة وسطى (Proxy) عقدة طرفية (Edge) جديدة (ليصبح المجموع (3). - نسخت المقاطع البرمجية. - عدلت الموجه وجهة الإرسال لتناسب الشبكة الجديدة.

خطوات الحل:

  1. **الخطوة 1 (فهم المطلوب):** المطلوب هو توسيع هيكل الشبكة بإضافة عقدة طرفية (Edge node) جديدة لكل عقدة وسطى (Proxy node) موجودة، بحيث يصبح إجمالي عدد العقد الطرفية المتصلة بكل عقدة وسطى هو ثلاث عقد. هذا يتطلب تعديلات في تصميم الشبكة وفي المقاطع البرمجية للعقد الجديدة.
  2. **الخطوة 2 (التطبيق العملي):** أولاً، نقوم بإضافة العقد الطرفية الجديدة في بيئة المحاكاة (مثل CupCarbon) وربط كل منها بالعقدة الوسطى المخصصة لها. بعد ذلك، يجب نسخ المقاطع البرمجية (الأكواد) من العقد الطرفية الموجودة مسبقًا إلى العقد الطرفية الجديدة. الأهم هو تعديل هذه الأكواد لتحديد الموجه الصحيح (العقدة الوسطى التي تتصل بها العقدة الطرفية الجديدة) وتوجيه الإرسال لضمان تدفق البيانات بشكل سليم ضمن التكوين الجديد للشبكة.
  3. **الخطوة 3 (التحقق والنتيجة):** بعد إضافة العقد وتعديل الأكواد، يجب تشغيل المحاكاة للتأكد من أن كل عقدة طرفية جديدة ترسل بياناتها بشكل صحيح إلى العقدة الوسطى الخاصة بها، وأن العقدة الوسطى تستقبلها وتعالجها كما هو متوقع. إذن الإجابة هي: **إضافة عقد طرفية جديدة لكل عقدة وسطى لتصبح ثلاثة، نسخ المقاطع البرمجية، وتعديل الموجه وجهة الإرسال لتناسب الشبكة الجديدة.**

سؤال س:2: وسع مشروعك لدعم عقدة وسطى إضافية، وأضف عقدتين طرفيتين جديدتين إلى الوسطى بحيث يكون لدى وحدة التحكم الرئيسية ثلاث عقد وسطى، ولكل عقدة وسطى عقدتين طرفيتين. لا تنس إضافة المقاطع البرمجية داخل العقد الجديدة.

الإجابة: - أضفت عقدة وسطى جديدة (Proxy) وعقدتين طرفيتين لها. - تأكدت من ربط العقد بشكل صحيح (2) طرفية لكل وسطى). - نسخت الأكواد وعدلت المعرفات والوجهات.

خطوات الحل:

  1. **الخطوة 1 (فهم المطلوب):** المطلوب هو توسيع الشبكة بإضافة عقدة وسطى (Proxy node) إضافية، ثم ربط عقدتين طرفيتين (Edge nodes) جديدتين بهذه العقدة الوسطى الجديدة. الهدف هو أن يصبح لدى وحدة التحكم الرئيسية ثلاث عقد وسطى إجمالاً، وكل عقدة وسطى متصلة بعقدتين طرفيتين.
  2. **الخطوة 2 (التطبيق العملي):** نبدأ بإضافة العقدة الوسطى الجديدة في برنامج المحاكاة. ثم نضيف عقدتين طرفيتين جديدتين ونربطهما بهذه العقدة الوسطى الجديدة. بعد ذلك، نقوم بنسخ المقاطع البرمجية من العقد الوسطى والطرفية الموجودة مسبقًا إلى العقد الجديدة. من الضروري تعديل المعرفات (IDs) ووجهات الإرسال (destinations) في الأكواد لتعكس التكوين الجديد للشبكة وضمان الاتصال الصحيح بين جميع العقد.
  3. **الخطوة 3 (التحقق والنتيجة):** بعد إجراء التعديلات، يجب تشغيل المحاكاة للتأكد من أن جميع العقد تعمل وتتواصل بشكل صحيح ضمن الهيكل الجديد للشبكة، وأن البيانات تتدفق كما هو مخطط له. إذن الإجابة هي: **إضافة عقدة وسطى جديدة وعقدتين طرفيتين لها، التأكد من ربط العقد بشكل صحيح (2 طرفية لكل وسطى)، ونسخ الأكواد وتعديل المعرفات والوجهات.**

سؤال س:3: حدد أي قسم من التعليمات البرمجية يقرر تكرار حدوث الحرائق. عدّل مشروعك في برنامج CupCarbon لزيادة احتمال حدوث الحرائق أكثر من السابق.

الإجابة: - القسم المسؤول هو: توليد الرقم العشوائي وشرط المقارنة. - لزيادة احتمال الحرائق: قلل مدى الأرقام العشوائية أو اجعل أكثر من قيمة تمثل حريقاً.

خطوات الحل:

  1. **الخطوة 1 (تحديد القسم المسؤول):** في برامج المحاكاة التي تعتمد على توليد الأحداث العشوائية مثل الحرائق، يتم تحديد تكرار الحدث عادةً باستخدام دالة لتوليد الأرقام العشوائية (مثل `randint` في بايثون أو ما يعادلها في لغات أخرى). هذا الرقم العشوائي يتم مقارنته بقيمة معينة أو ضمن نطاق محدد لتحديد ما إذا كان الحريق سيحدث أم لا. هذا القسم من التعليمات البرمجية هو المسؤول عن تكرار حدوث الحرائق.
  2. **الخطوة 2 (تعديل الاحتمال):** لزيادة احتمال حدوث الحرائق، يمكننا تعديل هذا القسم بطريقتين رئيسيتين: 1. **تقليل مدى الأرقام العشوائية:** إذا كانت الدالة تولد أرقامًا بين 1 و 100، وكان الحريق يحدث عند الرقم 5، فإن تقليل المدى إلى 1-50 سيزيد من فرصة الحصول على الرقم 5. 2. **زيادة قيم الحريق:** يمكننا جعل أكثر من قيمة تمثل حدوث حريق. فبدلاً من أن يكون الحريق عند الرقم 5 فقط، يمكن أن يحدث عند 5 أو 6 أو 7.
  3. **الخطوة 3 (النتيجة):** بتطبيق أحد هذه التعديلات على الكود، سنلاحظ زيادة في عدد مرات حدوث الحرائق خلال المحاكاة. إذن الإجابة هي: **القسم المسؤول هو توليد الرقم العشوائي وشرط المقارنة، ولزيادة احتمال الحرائق نقلل مدى الأرقام العشوائية أو نجعل أكثر من قيمة تمثل حريقاً.**

سؤال س:4: قد يؤدي أي تأخير زمني (Latency) في شبكة المصنع إلى تأخير الاتصال بين العقد. قم بتعديل برنامجك الخاص بعقد الوسطى لجعل العقدة وضع السكون لفترة أطول. هل لاحظت وجود أي تأخير أو فقدان لأي رسائل؟ دون ملاحظاتك أدناه.

الإجابة: - نعم، لوحظ تأخر (Latency) لأن الـ Proxy لا تستقبل إلا عند الاستيقاظ. - قد تظهر رسائل متأخرة كدفعات أو تفقد إذا امتلأ طابور الانتظار في المحاكاة.

خطوات الحل:

  1. **الخطوة 1 (فهم المفهوم):** التأخير الزمني (Latency) هو الوقت المستغرق لانتقال البيانات من نقطة إلى أخرى في الشبكة. عندما تكون العقدة في وضع السكون (Sleep mode)، فإنها تتوقف عن استقبال أو معالجة الرسائل خلال هذه الفترة لتوفير الطاقة.
  2. **الخطوة 2 (التطبيق والملاحظة):** عند تعديل برنامج العقد الوسطى (Proxy nodes) لزيادة فترة السكون، فإن العقدة لن تستقبل الرسائل إلا بعد استيقاظها من السكون. هذا سيؤدي حتمًا إلى تأخير في معالجة الرسائل واستلامها. **الملاحظات:** - **تأخير (Latency):** نعم، سيلاحظ تأخير كبير في وصول الرسائل من العقد الطرفية إلى العقد الوسطى، ومن ثم إلى وحدة التحكم الرئيسية، لأن العقد الوسطى لا تستجيب إلا بعد فترة السكون. - **فقدان الرسائل:** قد يحدث فقدان للرسائل إذا كانت العقد الطرفية ترسل بياناتها بشكل متكرر وسريع بينما العقد الوسطى في وضع السكون لفترة طويلة، مما قد يؤدي إلى امتلاء طابور الانتظار (buffer) في المحاكاة أو تجاوز فترة صلاحية الرسائل قبل استلامها.
  3. **الخطوة 3 (النتيجة):** إذن الإجابة هي: **نعم، لوحظ تأخر (Latency) لأن الـ Proxy لا تستقبل إلا عند الاستيقاظ، وقد تظهر رسائل متأخرة كدفعات أو تفقد إذا امتلأ طابور الانتظار في المحاكاة.**

سؤال س:5: وسع مشروعك لدعم احتمال حدوث تسرب المياه وحدوث الفيضان. عدّل برنامجك للقطاعات المعرضة للحرائق بحيث يعني إرجاع القيمة من دالة توليد الأرقام العشوائية (randint) القيمة 2 حدوث تسرب للمياه أو فيضان في هذا القطاع. على العقدة القيام بطباعة الرسالة المناسبة وإرسالها.

الإجابة: - كانت المشكلة: القيمة 2 تدل على فيضان. - عند حدوث فيضان: تطبع العقدة وتُرسل Proxy وتُحكم - تم تحديث المتحكم ليميز رسالة الفيضان.

خطوات الحل:

  1. **الخطوة 1 (فهم المطلوب):** المطلوب هو توسيع وظيفة الكشف في الشبكة لتشمل تسرب المياه والفيضانات، بالإضافة إلى الحرائق. تحديدًا، يجب أن تعني القيمة 2 الناتجة عن دالة توليد الأرقام العشوائية (مثل `randint`) حدوث تسرب مياه أو فيضان في القطاع المعني.
  2. **الخطوة 2 (تعديل الكود):** في الكود الخاص بالعقد الطرفية (Edge nodes) التي تقوم بتوليد الأرقام العشوائية، يجب إضافة شرط جديد: إذا كانت القيمة العشوائية الناتجة هي 2، يجب على العقدة طباعة رسالة تفيد بحدوث 'تسرب مياه/فيضان' وإرسال هذه الرسالة إلى العقدة الوسطى (Proxy). يجب أيضًا تعديل برنامج العقدة الوسطى (Proxy) ووحدة التحكم الرئيسية (Controller) للتعرف على هذا النوع الجديد من الرسائل (رسالة الفيضان) والتعامل معها بشكل مناسب، مثل عرض تنبيه مختلف أو اتخاذ إجراء معين.
  3. **الخطوة 3 (التحقق والنتيجة):** بعد إجراء التعديلات، يجب تشغيل المحاكاة للتأكد من أن العقد الطرفية ترسل الرسالة الصحيحة عند توليد القيمة 2، وأن العقد الوسطى ووحدة التحكم الرئيسية تستقبلها وتفسرها بشكل صحيح وتتخذ الإجراء المناسب. إذن الإجابة هي: **تعديل الكود في العقد الطرفية لربط القيمة 2 بحدث الفيضان، وإضافة تعليمات لطباعة وإرسال رسالة الفيضان، وتحديث المتحكمات للتعرف على هذه الرسالة والتعامل معها.**

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 3 بطاقة لهذه الصفحة

في سياق شبكات إنترنت الأشياء، ما هو التأثير المباشر لزيادة فترة السكون (Sleep mode) للعقد الوسطى (Proxy nodes) على أداء الشبكة؟

  • أ) يزيد من سرعة نقل البيانات ويقلل من استهلاك الطاقة بشكل كبير.
  • ب) يؤدي إلى تأخير زمني (Latency) في استلام ومعالجة الرسائل، وقد يتسبب في فقدان بعض الرسائل إذا امتلأ طابور الانتظار.
  • ج) يقضي تماماً على أي احتمال لفقدان الرسائل عن طريق تخزينها بشكل دائم.
  • د) يحول الشبكة إلى وضع البث المستمر، مما يلغي الحاجة إلى طابور انتظار.

الإجابة الصحيحة: b

الإجابة: يؤدي إلى تأخير زمني (Latency) في استلام ومعالجة الرسائل، وقد يتسبب في فقدان بعض الرسائل إذا امتلأ طابور الانتظار.

الشرح: 1. العقدة الوسطى في وضع السكون لا تستقبل أو تعالج الرسائل. 2. الرسائل المرسلة إليها تنتظر في طابور حتى تستيقظ. 3. زيادة فترة السكون تزيد من وقت الانتظار (Latency). 4. إذا كانت الرسائل تصل بسرعة أكبر من قدرة العقدة على المعالجة، قد يمتلئ الطابور وتفقد بعض الرسائل.

تلميح: فكر في ما يحدث للبيانات المرسلة أثناء فترة عدم استجابة العقدة.

التصنيف: مفهوم جوهري | المستوى: متوسط

في مشروع محاكاة باستخدام CupCarbon، إذا أردت زيادة احتمال حدوث حدث معين (مثل الحريق) في العقد الطرفية، ما الذي يجب تعديله في التعليمات البرمجية؟

  • أ) تغيير عنوان IP للعقدة الرئيسية.
  • ب) زيادة عدد العقد الطرفية فقط دون تغيير الكود.
  • ج) تعديل قسم التعليمات البرمجية المسؤول عن توليد الأرقام العشوائية وشرط التحقق منها لتحفيز الحدث.
  • د) تقليل قوة إشارة الراديو لجميع العقد.

الإجابة الصحيحة: c

الإجابة: تعديل قسم التعليمات البرمجية المسؤول عن توليد الأرقام العشوائية وشرط التحقق منها لتحفيز الحدث.

الشرح: 1. تحديد دالة توليد الأرقام العشوائية (مثل randint()). 2. تحديد الشرط الذي يتحقق من قيمة الرقم العشوائي لاتخاذ قرار بحدوث الحريق. 3. لتكرار الحدث أكثر، عدّل الشرط ليكون صحيحاً لمجموعة أوسع من القيم (مثلاً: if random_value < 5 بدلاً من if random_value == 1).

تلميح: الأحداث العشوائية في المحاكاة غالباً ما تُدار من خلال دوال توليد أرقام.

التصنيف: صيغة/خطوات | المستوى: صعب

عند توسيع شبكة إنترنت الأشياء في CupCarbon لإضافة حدث جديد مثل 'تسرب المياه'، ما الخطوة البرمجية الأساسية التي يجب تنفيذها داخل العقدة الطرفية؟

  • أ) زيادة المسافة بين العقد فقط.
  • ب) تغيير لون العقدة في واجهة المحاكاة دون تغيير الكود.
  • ج) إضافة شرط جديد في الكود يتحقق من قيمة دالة توليد الأرقام العشوائية (مثل randint) لقيمة محددة (مثلاً 2)، وعند تحققه، تقوم العقدة بطباعة وإرسال رسالة مناسبة.
  • د) تعطيل جميع أحداث الحرائق السابقة.

الإجابة الصحيحة: c

الإجابة: إضافة شرط جديد في الكود يتحقق من قيمة دالة توليد الأرقام العشوائية (مثل randint) لقيمة محددة (مثلاً 2)، وعند تحققه، تقوم العقدة بطباعة وإرسال رسالة مناسبة.

الشرح: 1. استخدام دالة مثل randint() لتوليد رقم عشوائي. 2. إضافة شرط else if أو شرط منفصل للتحقق من قيمة معينة (مثلاً == 2). 3. داخل هذا الشرط، كتابة أمر الطباعة (print) لعرض رسالة 'تسرب مياه'. 4. كتابة أمر الإرسال (send) لإعلام العقدة الوسطى بالحدث.

تلميح: كيف تمت معالجة حدث الحريق سابقاً؟ فكر في تطبيق نفس المنطق لحدث جديد.

التصنيف: صيغة/خطوات | المستوى: صعب