- MQTT प्रोटोकॉल क्या है?
- MQTT कैसे काम करता है?
- एक्लिप्स मॉस्किटो ब्रोकर
- अवयव आवश्यक
- ग्रहण MQTT टेस्ट-सर्किट - योजनाबद्ध
- ब्रोकर के साथ संचार स्थापित करने के लिए ESP8266 प्रोग्रामिंग
- Arduino का उपयोग करते हुए ESP8266 के साथ MQTT का परीक्षण
पिछले कुछ वर्षों में, IoT (इंटरनेट ऑफ थिंग्स) उपकरण हमारे दैनिक जीवन का एक अविभाज्य हिस्सा बन गए हैं। स्मार्ट घरों से, स्मार्ट बल्ब से स्मार्ट उपकरणों तक; निर्माता और डेवलपर्स जुड़े हुए उपकरणों का एक नेटवर्क बनाने के लिए इस तकनीक को शामिल कर रहे हैं जो हमारे दिन-प्रतिदिन के जीवन को थोड़ा और रोमांचक बनाता है। संचार की आसानी के कारण यह सब संभव हो पाया है। उपकरणों के बीच संवाद करने के कई संभावित तरीके हैं, लेकिन वाणिज्यिक और शौक उत्पादों में, एक एकल प्रोटोकॉल जो आमतौर पर उपयोग किया जाता है, वह संदेश कतारबद्ध टेलीमेट्री ट्रांसपोर्ट (MQTT) है । हमने पहले Arduino और Google सहायक का उपयोग करके एक वॉयस-कंट्रोल्ड एफएम रेडियो बनाया था जो NodeMCU बोर्ड के साथ संचार करने के लिए MQTT का उपयोग करता है। यह जांचें कि क्या यह आपके लिए दिलचस्प लगता है।
इस परियोजना में, हम एक मुक्त और लोकप्रिय ग्रहण MQTT ब्रोकर का उपयोग करेंगे और एक MQTT ब्रोकर और MQTT ब्रोकर और NodeMCU के बीच डेटा ट्रांसफर करने के लिए एक IoT डिवाइस (हमारे मामले में, यह एक NodeMCU मॉड्यूल है) को कनेक्ट करना सीखेंगे ।
MQTT प्रोटोकॉल क्या है?
इससे पहले कि हम आगे बढ़ें, MQTT (संदेश पंक्तिबद्ध टेलीमेट्री ट्रांसपोर्ट) प्रोटोकॉल के बारे में स्पष्ट विचार रखना बेहतर है । यह एक हल्का मैसेजिंग प्रोटोकॉल है जो प्रकाशित / सदस्यता विधि का उपयोग करता है और कई उपकरणों के बीच संदेशों का अनुवाद करता है। MQTT प्रोटोकॉल का उपयोग करते हुए, हम विभिन्न आउटपुट डिवाइसों को भी डेटा भेज / प्राप्त / नियंत्रित कर सकते हैं, जैसे कि सेंसर डेटा पढ़ सकते हैं, आदि यह टीसीपी के शीर्ष पर विकसित किया गया है, यही कारण है कि यह HTTP जैसे समान प्रोटोकॉल से तेज है। इसके अलावा, इसके बहुत हल्के जैसे अन्य प्रोटोकॉल पर कई अन्य फायदे हैं, इसलिए यह अतिरिक्त मेमोरी का उपभोग नहीं करता है, यह बहुत कम नेटवर्क बैंडविड्थ के साथ काम कर सकता है, इसके शीर्ष पर, इसमें एक मजबूत सुरक्षा प्रोटोकॉल इनबिल्ट है। ये विशेषताएं इसे कई अनुप्रयोगों के लिए उपयुक्त बनाती हैं।
MQTT कैसे काम करता है?
एमक्यूटीटी प्रोटोकॉल के काम को समझने के लिए, हमें केवल तीन बुनियादी चीजों को समझने की जरूरत है; ऊपर चित्र से पता चलता है कि। साथ ही, हमने इसे लेख में नीचे समझाया है।
MQTT क्लाइंट:
एक MQTT ग्राहक किसी भी उपकरण है कि एक केंद्रीय सर्वर, जो के रूप में जाना जाता है के साथ MQTT कार्य करता है और संचार चलाता है (यह एक माइक्रो या एक सर्वर हो सकता है) है " दलाल ।" ब्रोकर कनेक्टेड क्लाइंट्स के बीच डेटा कम्युनिकेशन को हैंडल करता है।
MQTT प्रकाशक:
जब कोई ग्राहक कोई सूचना भेजना चाहता है, तो ग्राहक को "प्रकाशक" के रूप में जाना जाता है। प्रकाशक किसी विशेष विषय पर जानकारी प्रकाशित करेगा। " विषय " एक ऐसा मार्ग है जहाँ हम संदेशों को प्रकाशित / सदस्यता ले सकते हैं। फिर ब्रोकर उपयोगकर्ता द्वारा प्रकाशित जानकारी को ग्राहकों (जिसे सब्सक्राइबर के रूप में भी जाना जाता है) को भेजता है, जिन्होंने उस विशिष्ट विषय की सदस्यता ली है।
MQTT सब्सक्राइबर:
MQTT सब्सक्राइबर एक पर विषयों का सदस्य बनता MQTT दलाल दलाल द्वारा भेजे गए संदेशों को पढ़ने के लिए।
एक्लिप्स मॉस्किटो ब्रोकर
एक्लिप्स मॉस्किटो एक ओपन-सोर्स एमक्यूटीटी ब्रोकर है, जो हल्का है और संचार के लिए आईओटी उपकरणों पर उपयोग के लिए उपयुक्त है। MQTT प्रोटोकॉल का उपयोग कर एक / सदस्यता मॉडल को प्रकाशित जानकारी के हस्तांतरण की एक हल्के तरीका प्रदान करता है। यदि आप विषय के बारे में अधिक जानना चाहते हैं, तो आप आधिकारिक मच्छर वेबसाइट पर जा सकते हैं।
एक्लिप्स मॉस्किटो ब्रोकर की स्थापना:
ब्रोकर के साथ संचार स्थापित करने के लिए, हमें इसे पहले सेट करने की आवश्यकता है। इस परियोजना में, ब्रोकर के साथ सूचना को प्रकाशित करने और सदस्यता लेने के लिए एक एंड्रॉइड एप्लिकेशन का उपयोग किया जाता है । निम्नलिखित चरण आपको सेटअप प्रक्रिया का बेहतर विचार देंगे।
चरण 1:
सबसे पहले, Google Play Store / App Store में उपलब्ध किसी भी "MQTT क्लाइंट" एप्लिकेशन को डाउनलोड करें और इसे इंस्टॉल करें। इस परियोजना में, "MQTT क्लाइंट" नामक एक एप्लिकेशन का उपयोग किया जाता है, जो नीचे दिखाए गए चित्र की तरह दिखता है।
चरण 2:
एप्लिकेशन में अतिरिक्त विकल्पों को सूचीबद्ध करने के लिए "+" चिह्न पर क्लिक करें, जहां हम एक नया ब्रोकर जोड़ने जा रहे हैं। जब बटन पर क्लिक किया जाता है, तो एक नई स्क्रीन दिखाई देती है जैसा कि नीचे दिखाया गया है।
चरण 3:
इसके बाद, आवश्यक क्षेत्र में ब्रोकर का विवरण भरना होगा। सबसे पहले, एप्लिकेशन में दिखाए गए विकल्प "सक्षम" पर क्लिक करें। इस परियोजना में, एक्लिप्स एमक्यूटीटी ब्रोकर का उपयोग किया जाता है, जो विवरण भरे जाने हैं:
निक नाम: अपनी पसंद का नाम दें
होस्ट: mqtt.eclipse.org
पोर्ट: 1883
क्लाइंट आईडी: अपनी पसंद की एक आईडी दें
उपरोक्त विवरण को उनके संबंधित क्षेत्रों में भरने की आवश्यकता है। अन्य सभी क्षेत्र आवश्यक नहीं हैं और इन्हें खाली छोड़ा जा सकता है। सफल समापन के बाद, ब्रोकर विवरण को बचाने के लिए सेव बटन पर क्लिक करें।
एक बार हो जाने के बाद, एंड्रॉइड एप्लिकेशन सेटअप प्रक्रिया समाप्त हो गई है और अब हम चीजों के हार्डवेयर पक्ष पर आगे बढ़ सकते हैं।
अवयव आवश्यक
आवश्यक भागों की एक पूरी सूची नीचे वर्णित है। जैसा कि यह सर्किट सरल है, आप अपने स्थानीय शौक स्टोर पर सभी आवश्यक भागों को पा सकते हैं।
- NodeMCU
- एलईडी
- ब्रेड बोर्ड
- तारों को जोड़ना
- प्रोग्रामिंग केबल
ग्रहण MQTT टेस्ट-सर्किट - योजनाबद्ध
बेसिक MQTT प्रोजेक्ट के लिए सर्किट आरेख नीचे दिया गया है:
ब्रोकर के साथ संचार स्थापित करने के लिए ESP8266 प्रोग्रामिंग
एक सरल Arduino कोड MQTT ब्रोकर और NodeMCU के बीच सभी आवश्यक संचार का ख्याल रखता है। इस खंड में, हम यह जानेंगे कि यह कार्यक्षमता कैसे काम करती है।
Arduino IDE सेटअप करें और कोड अपलोड करें:
यदि आप पहली बार कोड को NodeMCU में अपलोड कर रहे हैं, तो आपको पहले Arduino IDE सेट करना होगा । ऐसा करने के लिए, बस नीचे दिए गए सरल निर्देश का पालन करें।
सबसे पहले, Arduino IDE खोलें, फिर File-> Preferences-> सेटिंग्स पर जाएँ ।
इसके बाद, नीचे दिए गए URL को कॉपी करें और इसे 'अतिरिक्त बोर्ड प्रबंधक URL ' फ़ील्ड में पेस्ट करें, और 'Ok' पर क्लिक करें। आप यह जानने के लिए नीचे की छवि देख सकते हैं कि हमने क्या किया है।
लिंक:
इसके बाद, टूल्स> बोर्ड> बोर्ड्स मैनेजर पर जाएं । बोर्ड के प्रबंधक विंडो में, खोज बॉक्स में ईएसपी 8266 टाइप करें और एंटर दबाएं। फिर ड्रॉपडाउन से नवीनतम संस्करण का चयन करें और इंस्टॉल पर क्लिक करें। नीचे दी गई छवि आपको एक स्पष्ट विचार देगी।
अंत में, एक बार इंस्टॉलेशन पूरा होने के बाद, टूल्स -> बोर्ड -> पर जाएं और NodeMCU 1.0 (ESP-12E मॉड्यूल) का चयन करें। अब, आप Arduino IDE के साथ NodeMCU प्रोग्राम कर सकते हैं। जैसा कि हमने Arduino IDE की स्थापना पूरी कर ली है, अब हम पूरा कोड अपलोड कर सकते हैं। लेकिन पहले, पूरे कोड की त्वरित व्याख्या पर पढ़ें।
सबसे पहले, हमने MQTT के लिए ESP8266 और "PubSubClient.h" का उपयोग करने के लिए "ESP8266WiFi.h" को शामिल किया है ।
आप Arduino लाइब्रेरी के अंदर ESP8266 लाइब्रेरी प्रीबिल्ट पा सकते हैं, लेकिन आपको इसके संबंधित GitHub रिपॉजिटरी से PubSubClient लाइब्रेरी डाउनलोड करनी होगी।
#शामिल
फिर, नेटवर्क क्रेडेंशियल्स को परिभाषित करें जैसे कि आपका वाई-फाई उपयोगकर्ता नाम और पासवर्ड। क्रमशः "व्यवस्थापक" और "12345678" के स्थान पर अपनी साख बदलें।
const char * ssid = "admin"; const char * पासवर्ड = "12345678";
अगला, हमें MQTT सर्वर को कॉन्फ़िगर करने की आवश्यकता है । हमने इस परियोजना के लिए एक्लिप्स एमक्यूटीटी सर्वर का उपयोग किया है, यही वजह है कि सर्वर का पता "mqtt.eclipse.org" दिया गया है । लेकिन अगर आप किसी अन्य सर्वर जैसे कि मॉस्किटो, एडफ्रूट का उपयोग करने की योजना बना रहे हैं, तो आप इसे अपने विशिष्ट सर्वर पते और पोर्ट नंबर से बदल सकते हैं।
const char * mqtt_server = "mqtt.eclipse.org"; const int mqtt_port = 1883;
अगला, वर्ग WiFiClient और PubSubClient के लिए इंस्टेंस बनाए जाते हैं, जिन्हें पूरे कार्यक्रम में उपयोग किया जाएगा।
WiFiClient espClient; PubSubClient ग्राहक (espClient);
में सेटअप () अनुभाग, हम फोन WiFi.begin () पहले, इस विधि बुला अपना पसंदीदा हॉटस्पॉट को ईएसपी कनेक्ट करेगा।
WiFi.begin (ssid, पासवर्ड);
अगला, हम WiFi.status () पद्धति का उपयोग करके एक सफल नेटवर्क कनेक्शन की जांच करते हैं । एक सफल कनेक्शन के बाद, कनेक्टेड नेटवर्क के एसएसआईडी के साथ सीरियल मॉनिटर पर एक संदेश मुद्रित होता है।
जबकि (WiFi.status ()! = WL_CONNECTED) {विलंब (500); Serial.println ("वाईफाई से कनेक्ट करना.."); } Serial.print ("वाईफाई से कनेक्ट:"); Serial.println (WiFi.SSID ());
अब, हमें एक ब्रोकर बनाने की आवश्यकता है। उसके लिए, हमने सेटस्वर विधि का उपयोग किया है; यह तरीका दो तर्क देता है, जिन्हें हमने पहले से परिभाषित किया है। अब, यदि हम सर्वर से संदेश प्राप्त करना चाहते हैं, तो हमें कॉलबैक फ़ंक्शन बनाने की आवश्यकता है । उसके लिए, हम setCallback (कॉलबैक) विधि का उपयोग कर रहे हैं ।
client.setServer (mqtt_server, mqtt_port); client.setCallback (MQTTcallback);
अब, हमने ESP8266 क्लाइंट से कनेक्ट करने के लिए कनेक्ट (क्लाइंटआईडी) फ़ंक्शन का उपयोग किया है। यहां क्लाइंटिड क्लाइंट का नाम है, और यह अद्वितीय होना चाहिए। यदि यह जुड़ा हुआ है, तो सीरियल मॉनीटर के अंदर एक सफलता संदेश दिखाया जा सकता है।
if (client.connect ("ESP8266")) {Serial.println ("कनेक्टेड"); } और {Serial.print ("राज्य के साथ विफल") Serial.println (client.state ()); देरी (2000); }
इसके बाद, हम ग्राहक को भेजते हैं । सदस्यता () , एक अंतर्निहित एमक्यूटीटी फ़ंक्शन, जिसका उपयोग किसी विशेष विषय की सदस्यता के लिए किया जाता है। इस परियोजना के लिए, हमने अपने ग्राहक नाम के रूप में " esp / परीक्षण " का उपयोग किया है ।
client.subscribe ("esp / test");
अब, MQTTcallback फ़ंक्शन को यह जांचने के लिए बुलाया जाता है कि कोई अद्यतन जानकारी उपलब्ध है या नहीं। यदि नया डेटा उपलब्ध है, तो यह फ़ंक्शन प्राप्त डेटा को संभालता है और सीरियल मॉनिटर में एक संदेश को मूल संदेश और विषय के नाम के साथ प्रिंट करता है जहां संदेश प्राप्त होता है।
अगला, हम संदेशों को एक स्ट्रिंग में परिवर्तित करते हैं, ताकि इसकी तुलना किसी भी ट्रिगरिंग क्रिया के लिए की जा सके। इस परियोजना में, MQTT कमांड का उपयोग करके एक एलईडी चालू / बंद किया जाता है, जैसा कि नीचे दिए गए कोड में दिखाया गया है।
for (int i = 0; मैं <लंबाई; i ++) {संदेश = संदेश + (char) पेलोड; } Serial.print (संदेश); अगर (संदेश == "पर") {digitalWite (LED, HIGH); }
अंत में, विषय पर जानकारी प्रकाशित करने के लिए। Client.publish () समारोह प्रयोग किया जाता है। इस परियोजना में, एक पुश-बटन स्थिति की जाँच की जाती है, यदि बटन दबाया जाता है, तो एक संदेश टॉपिक " esp / test1 " पर प्रकाशित होता है जैसा कि नीचे दिखाया गया है।
if (digitalRead (D1) == 0)) {client.publish ("esp / test1", "ESP8266 से नमस्कार"); } अन्य; client.loop ();
Arduino का उपयोग करते हुए ESP8266 के साथ MQTT का परीक्षण
हमारे अंतिम परीक्षण के लिए, हम एंड्रॉइड एप्लिकेशन का उपयोग करने जा रहे हैं, जिसे हमने पहले स्थापित किया है।
MQTT क्लाइंट एप्लिकेशन खोलें, और सुनिश्चित करें कि आपके मोबाइल में सक्रिय इंटरनेट कनेक्शन है। इसके अलावा, हॉटस्पॉट जिस पर NodeMCU जुड़ा है, में एक सक्रिय इंटरनेट कनेक्शन होना चाहिए। एक बार जब सब कुछ इंटरनेट से जुड़ा होता है, तो हम ईएसपी मॉड्यूल से "हैलो ईएसपी 8266" स्ट्रिंग भेजने जा रहे हैं, जो एंड्रॉइड ऐप के अंदर परिलक्षित होगा, और हमें एक सूचना मिलेगी। अगला, हम एंड्रॉइड ऐप से एक स्ट्रिंग भेजेंगे, जो कि एक एलईडी चालू करेगा जो ईएसपी 8266 नोड नोडल बोर्ड से जुड़ा है।
चरण -1: (विषय की सदस्यता लें):
ऐप पर सेव्ड एमक्यूटीटी विकल्प पर क्लिक करें, जिसे हमने पहले कॉन्फ़िगर किया है। यह एक स्क्रीन को पॉप करेगा, जहाँ इसे "एक विषय की सदस्यता लें" के लिए प्रेरित किया जाता है । हमने पहले इस विषय को " esp / test1 " के रूप में कॉन्फ़िगर किया है । तो, एंड्रॉइड ऐप में, हम " esp / test1 " लिखेंगे । सदस्यता पर क्लिक करें, ऐसा करने से आप नीचे की तरह एक स्क्रीन के साथ प्रस्तुत करेंगे, जहां यह लिखा जाएगा, जैसे कि विशेष विषय से "कोई संदेश प्राप्त नहीं"।
अब, 'कनेक्टेड' बटन पर क्लिक करें जो नोडएमसीयू से जुड़ा है। अब हमारे कोड के अनुसार, " ईएसपी 8266 से हैलो " एक संदेश टॉपिक पर प्रकाशित किया जाएगा और नीचे दिखाए गए संदेश के साथ स्क्रीन पर एक अधिसूचना होगी।
चरण -2: विषय पर प्रकाशित करें:
अब Topic में प्रकाशित करने के लिए, एप्लिकेशन के UP ARROW बटन पर क्लिक करें, और यह नीचे दिखाए गए अनुसार एक स्क्रीन खोलेगा।
अब, विषय क्षेत्र में, " esp / test " और संदेश क्षेत्र में, क्रमशः " चालू " या " बंद " लिखें और एलईडी को बंद करें। उदाहरण के लिए, यदि "चालू" विषय को प्रकाशित किया जाता है, तो एलईडी चालू हो जाएगा और यदि "बंद" विषय को प्रकाशित किया जाता है, तो एलईडी बंद हो जाएगी।
मुझे उम्मीद है कि आपको लेख पसंद आया होगा और कुछ नया सीखा होगा। यदि आपके पास इस लेख के बारे में कोई प्रश्न हैं, तो कृपया नीचे टिप्पणी करने के लिए स्वतंत्र महसूस करें या आप इसके बजाय हमारे मंच का उपयोग कर सकते हैं।