4.7 KiB
التحكم في ضوء الليل عبر الإنترنت - الأجهزة الافتراضية لإنترنت الأشياء و Raspberry Pi
في هذا الجزء من الدرس، ستقوم بالاشتراك في الأوامر المرسلة من وسيط MQTT إلى جهاز Raspberry Pi الخاص بك أو جهاز إنترنت الأشياء الافتراضي.
الاشتراك في الأوامر
الخطوة التالية هي الاشتراك في الأوامر المرسلة من وسيط MQTT والاستجابة لها.
المهمة
اشترك في الأوامر.
-
افتح مشروع ضوء الليل في VS Code.
-
إذا كنت تستخدم جهاز إنترنت أشياء افتراضي، تأكد من أن الطرفية تعمل في البيئة الافتراضية. إذا كنت تستخدم Raspberry Pi، فلن تحتاج إلى استخدام بيئة افتراضية.
-
أضف الكود التالي بعد تعريفات
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
هو موضوع MQTT الذي سيشترك فيه الجهاز لتلقي أوامر تشغيل وإطفاء الـ LED. -
أضف الكود التالي مباشرة فوق الحلقة الرئيسية، بعد سطر
mqtt_client.loop_start()
:def handle_command(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) if payload['led_on']: led.on() else: led.off() mqtt_client.subscribe(server_command_topic) mqtt_client.on_message = handle_command
هذا الكود يعرّف وظيفة،
handle_command
، التي تقرأ الرسالة كوثيقة JSON وتبحث عن قيمة خاصيةled_on
. إذا كانت القيمةTrue
، يتم تشغيل الـ LED، وإذا كانت غير ذلك يتم إطفاؤه.يقوم عميل MQTT بالاشتراك في الموضوع الذي سيرسل عليه الخادم الرسائل ويحدد وظيفة
handle_command
ليتم استدعاؤها عند استلام رسالة.💁 يتم استدعاء معالج
on_message
لجميع المواضيع التي تم الاشتراك فيها. إذا قمت لاحقًا بكتابة كود يستمع إلى مواضيع متعددة، يمكنك الحصول على الموضوع الذي أُرسلت إليه الرسالة من كائنmessage
الذي يتم تمريره إلى وظيفة المعالجة. -
قم بتشغيل الكود بنفس الطريقة التي شغّلت بها الكود في الجزء السابق من المهمة. إذا كنت تستخدم جهاز إنترنت أشياء افتراضي، فتأكد من أن تطبيق CounterFit يعمل وأن مستشعر الضوء والـ LED قد تم إنشاؤهما على المنافذ الصحيحة.
-
قم بتعديل مستويات الضوء التي يكتشفها جهازك الفعلي أو الافتراضي. سيتم كتابة الرسائل المستلمة والأوامر المرسلة إلى الطرفية. سيتم أيضًا تشغيل وإطفاء الـ LED بناءً على مستوى الضوء.
💁 يمكنك العثور على هذا الكود في مجلد code-commands/virtual-device أو مجلد code-commands/pi.
😀 لقد قمت ببرمجة جهازك بنجاح للاستجابة للأوامر من وسيط MQTT.
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.