5.0 KiB
التحكم في ضوء الليل عبر الإنترنت - Wio Terminal
في هذا الجزء من الدرس، ستقوم بالاشتراك في الأوامر المرسلة من وسيط MQTT إلى جهاز Wio Terminal الخاص بك.
الاشتراك في الأوامر
الخطوة التالية هي الاشتراك في الأوامر المرسلة من وسيط MQTT، والاستجابة لها.
المهمة
الاشتراك في الأوامر.
-
افتح مشروع ضوء الليل في VS Code.
-
أضف الكود التالي إلى أسفل ملف
config.h
لتعريف اسم الموضوع الخاص بالأوامر:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
هو الموضوع الذي سيشترك فيه الجهاز لتلقي أوامر تشغيل وإطفاء الـ LED. -
أضف السطر التالي إلى نهاية دالة
reconnectMQTTClient
للاشتراك في موضوع الأوامر عند إعادة الاتصال بعميل MQTT:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
أضف الكود التالي أسفل دالة
reconnectMQTTClient
.void clientCallback(char *topic, uint8_t *payload, unsigned int length) { char buff[length + 1]; for (int i = 0; i < length; i++) { buff[i] = (char)payload[i]; } buff[length] = '\0'; Serial.print("Message received:"); Serial.println(buff); DynamicJsonDocument doc(1024); deserializeJson(doc, buff); JsonObject obj = doc.as<JsonObject>(); bool led_on = obj["led_on"]; if (led_on) digitalWrite(D0, HIGH); else digitalWrite(D0, LOW); }
هذه الدالة ستكون رد النداء (callback) الذي سيستدعيه عميل MQTT عند استلام رسالة من الخادم.
يتم استلام الرسالة كمصفوفة من أعداد صحيحة غير موقعة مكونة من 8 بت، لذا يجب تحويلها إلى مصفوفة أحرف ليتم التعامل معها كنص.
تحتوي الرسالة على مستند JSON، ويتم فك تشفيره باستخدام مكتبة ArduinoJson. يتم قراءة خاصية
led_on
من مستند JSON، وبناءً على قيمتها يتم تشغيل أو إطفاء الـ LED. -
أضف الكود التالي إلى دالة
createMQTTClient
:client.setCallback(clientCallback);
هذا الكود يحدد
clientCallback
كدالة رد النداء التي سيتم استدعاؤها عند استلام رسالة من وسيط MQTT.💁 يتم استدعاء معالج
clientCallback
لجميع المواضيع التي تم الاشتراك فيها. إذا قمت لاحقًا بكتابة كود يستمع إلى مواضيع متعددة، يمكنك الحصول على الموضوع الذي أُرسلت الرسالة إليه من خلال معاملtopic
الذي يتم تمريره إلى دالة رد النداء. -
قم برفع الكود إلى جهاز Wio Terminal الخاص بك، واستخدم Serial Monitor لرؤية مستويات الضوء التي يتم إرسالها إلى وسيط MQTT.
-
قم بضبط مستويات الضوء التي يتم اكتشافها بواسطة جهازك الفعلي أو الافتراضي. سترى الرسائل التي يتم استلامها والأوامر التي يتم إرسالها في الطرفية. ستلاحظ أيضًا تشغيل وإطفاء الـ LED بناءً على مستوى الضوء.
💁 يمكنك العثور على هذا الكود في مجلد code-commands/wio-terminal.
😀 لقد قمت ببرمجة جهازك بنجاح للاستجابة للأوامر المرسلة من وسيط MQTT.
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.