7.3 KiB
इंटरनेट के माध्यम से अपनी नाइटलाइट को नियंत्रित करें - Wio Terminal
इस पाठ के इस भाग में, आप अपने Wio Terminal को MQTT ब्रोकर्स से भेजे गए कमांड्स को सब्सक्राइब करेंगे।
कमांड्स को सब्सक्राइब करें
अगला कदम 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); }
यह फंक्शन वह कॉलबैक होगा जिसे MQTT क्लाइंट सर्वर से कोई संदेश प्राप्त होने पर कॉल करेगा।
संदेश unsigned 8-बिट इंटीजर की एक ऐरे के रूप में प्राप्त होता है, इसलिए इसे टेक्स्ट के रूप में ट्रीट करने के लिए एक कैरेक्टर ऐरे में कन्वर्ट करना होगा।
संदेश में एक JSON डॉक्यूमेंट होता है, जिसे ArduinoJson लाइब्रेरी का उपयोग करके डिकोड किया जाता है। JSON डॉक्यूमेंट की
led_on
प्रॉपर्टी को पढ़ा जाता है, और उसके मान के आधार पर LED को चालू या बंद किया जाता है। -
createMQTTClient
फंक्शन में निम्नलिखित कोड जोड़ें:client.setCallback(clientCallback);
यह कोड
clientCallback
को MQTT ब्रोकर्स से संदेश प्राप्त होने पर कॉल करने के लिए सेट करता है।💁
clientCallback
हैंडलर सभी सब्सक्राइब किए गए टॉपिक्स के लिए कॉल किया जाता है। यदि आप बाद में ऐसा कोड लिखते हैं जो कई टॉपिक्स को सुनता है, तो आप उस टॉपिक को प्राप्त कर सकते हैं जिस पर संदेश भेजा गया था,topic
पैरामीटर से जो कॉलबैक फंक्शन को पास किया जाता है। -
कोड को अपने Wio Terminal पर अपलोड करें, और सीरियल मॉनिटर का उपयोग करके देखें कि लाइट लेवल्स MQTT ब्रोकर्स को कैसे भेजे जा रहे हैं।
-
अपने फिजिकल या वर्चुअल डिवाइस द्वारा डिटेक्ट किए गए लाइट लेवल्स को एडजस्ट करें। आप देखेंगे कि टर्मिनल में संदेश प्राप्त हो रहे हैं और कमांड्स भेजे जा रहे हैं। आप यह भी देखेंगे कि लाइट लेवल के आधार पर LED चालू और बंद हो रही है।
💁 आप इस कोड को code-commands/wio-terminal फोल्डर में पा सकते हैं।
😀 आपने सफलतापूर्वक अपने डिवाइस को MQTT ब्रोकर्स से कमांड्स का जवाब देने के लिए कोड किया है।
अस्वीकरण:
यह दस्तावेज़ AI अनुवाद सेवा Co-op Translator का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।