سؤال 3: قُمْ بتحديث الكائن on_message لطباعة المعلومات إلى الواجهة الطرفية حول العميل الذي نشر البيانات، وكذلك الموضوع الذي استلمت البيانات منه.
الإجابة: س3: اجعل دالة on_message تطبع في الـ Terminal: معرّف العميل (Client ID) الذي نشر البيانات *(يؤخذ من الـ payload/JSON أو من جزء من اسم الـ topic إذا كان مُضمَّنًا فيه)*، واسم الموضوع المستلم منه *(msg.topic)*، ويفضّل أيضًا طباعة محتوى الرسالة بعد فك الترميز *(payload)*.
خطوات الحل:
- **الشرح:** لنفهم هذا السؤال: لدينا دالة on_message في برنامج يستخدم MQTT. هذه الدالة تُستدعى تلقائيًا عند استقبال رسالة. الفكرة هنا هي أن نعدّل هذه الدالة لتقوم بطباعة معلومات مفيدة في Terminal (الواجهة الطرفية). المعلومات المطلوبة هي: 1. **معرّف العميل (Client ID) الذي نشر البيانات**: هذا يمكن الحصول عليه إما من داخل محتوى الرسالة نفسها (payload) إذا كان مضمّنًا فيها كبيانات JSON، أو من جزء من اسم الموضوع (topic) إذا كان مُضمّنًا في هيكل اسم الموضوع. 2. **اسم الموضوع المستلم منه (msg.topic)**: هذا هو الموضوع الذي وصلت منه الرسالة، وهو متاح عادةً كمعامل في الدالة. 3. **محتوى الرسالة بعد فك الترميز (payload)**: يُفضّل أيضًا طباعة محتوى الرسالة نفسه بعد تحويله من ترميز بايتات إلى نص مقروء. إذن، المطلوب هو كتابة كود داخل دالة on_message يقوم باستخراج هذه المعلومات وطباعتها باستخدام أمر مثل print().