विषयसूची:

थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट: 8 कदम
थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट: 8 कदम

वीडियो: थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट: 8 कदम

वीडियो: थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट: 8 कदम
वीडियो: Voice-controlled Home Automation from Scratch Using IBM Watson, Docker, IFTTT, and Serverless 2024, नवंबर
Anonim
थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट
थिंगस्पीक एमक्यूटीटी और आईएफटीटीटी एप्लेट्स का उपयोग कर मौसम की रिपोर्ट

परिचय

एक क्लाउड-आधारित मौसम एप्लिकेशन ईमेल अधिसूचना के रूप में दैनिक मौसम रिपोर्ट प्रदान करता है। यह वेब एप्लिकेशन SHT25 और Adafruit Huzzah ESP8266 का उपयोग करके तापमान और आर्द्रता को मापता है। यह हमें रीयल-टाइम तापमान और आर्द्रता डेटा और प्रति घंटा विश्लेषण प्रदान करता है। डेटा थिंगस्पीक एमक्यूटीटी एपीआई का उपयोग करके भेजा जाता है और बाद में जब भी तापमान आईएफटीटीटी प्रोटोकॉल का उपयोग करके निर्दिष्ट सीमा तक पहुंच जाता है तो हम उपयोगकर्ता को एक ईमेल अधिसूचना प्रदान कर रहे हैं। SHT25 सेंसरियन द्वारा बनाया गया एक तापमान और आर्द्रता सेंसर है। SHT25 ±2% RH के आसपास उच्च स्तर की सटीकता प्रदान करता है। इसकी आर्द्रता सीमा 0 से 100% के बीच है और तापमान सीमा -40 से 125 डिग्री सेल्सियस के बीच है। यह 8 सेकंड के सेंसर प्रतिक्रिया समय के साथ बहुत अधिक विश्वसनीय और तेज़ है।

विशेषताएं

  • थिंग स्पीक एमक्यूटीटी एपीआई का उपयोग करके आपको रीयल-टाइम एनालिटिक्स और आंकड़े प्रदान करता है
  • IFTTT का उपयोग करके उपयोगकर्ता को एक नियत समय पर एक ईमेल सूचना प्रदान की जाती है
  • टास्क शेड्यूलर का उपयोग कार्य को शेड्यूल करने के लिए किया जाता है जैसे सेंसर से डेटा प्राप्त करना, सेंसर रीडिंग प्रकाशित करना, MQTT विषय की सदस्यता लेना
  • यह सेंसर रीडिंग लाने के लिए I2C प्रोटोकॉल का उपयोग करता है जो अधिक सटीक, विस्तार योग्य और स्केलेबल है
  • स्लीप मोड जब डिवाइस निष्क्रिय होता है या कोई कार्य कॉलबैक नहीं कहा जाता है।
  • प्रभावी कार्य शेड्यूलिंग परेशानी मुक्त उपयोग प्रदान करता है
  • एक अलग वेबपेज होस्ट किया जाता है जहां उपयोगकर्ता को अन्य वाईफाई नेटवर्क की पहुंच में हर बार अपने डिवाइस को फ्लैश करने से बचने के लिए अपने उपयोगकर्ता प्रमाण-पत्र प्रदान करना होता है
  • SPIFFS का उपयोग हमारे कोड को पढ़ने योग्य और कम अनाड़ी बनाने के लिए हमारे वेबपेज को स्टोर करने के लिए किया जाता है

चरण 1: हार्डवेयर और सॉफ्टवेयर विशिष्टता

हार्डवेयर और सॉफ्टवेयर विशिष्टता
हार्डवेयर और सॉफ्टवेयर विशिष्टता
हार्डवेयर और सॉफ्टवेयर विशिष्टता
हार्डवेयर और सॉफ्टवेयर विशिष्टता

हार्डवेयर विशिष्टता

  • एडफ्रूट esp8266 हुज़ाह बोर्ड
  • हुज़ाह बोर्ड शील्ड
  • SHT25 सेंसर मॉड्यूल
  • I2C केबल

सॉफ्टवेयर विशिष्टता

  • अरुडिनो आईडीई
  • आईएफटीटीटी बात बोलो
  • एमक्यूटीटी एपीआई

चरण 2: उपयोगकर्ता क्रेडेंशियल संग्रहीत करना

उपयोगकर्ता क्रेडेंशियल संग्रहीत करना
उपयोगकर्ता क्रेडेंशियल संग्रहीत करना
उपयोगकर्ता क्रेडेंशियल संग्रहीत करना
उपयोगकर्ता क्रेडेंशियल संग्रहीत करना

यहां हम तापमान और सापेक्ष आर्द्रता के वास्तविक समय मूल्य को पढ़ने और इन मूल्यों को क्लाउड पर पोस्ट करने के लिए SHT25 I2C सेंसर का उपयोग कर रहे हैं। अद्यतन सेंसर मूल्य समय-समय पर प्राप्त करने के लिए और इन अद्यतनों को एक साथ पोस्ट करने के लिए हम Arduino के कार्य शेड्यूलर लाइब्रेरी का उपयोग कर रहे हैं। क्लाउड संचालन के लिए, हम ThingSpeak MQTT API का उपयोग कर रहे हैं। बाद में हम IFTTT एप्लेट का उपयोग करने वाले उपयोगकर्ता को रीयल-टाइम मौसम रिपोर्ट प्रदान कर रहे हैं। अपना खुद का मौसम स्टेशन बनाने के लिए आप इन चरणों का पालन कर सकते हैं। तो, DIY।

आगे बढ़ने से पहले। हमें उपयोगकर्ता क्रेडेंशियल्स को सहेजना होगा। इस उद्देश्य के लिए, हम 192.169.1.4 पर एक वेब सर्वर होस्ट कर रहे हैं। हमने अपने वेब फॉर्म को SPIFFS में स्टोर कर लिया है। एक बार डिवाइस शुरू हो जाने पर यह 60 सेकंड के लिए एक वेब सर्वर को होस्ट करता है। उपयोगकर्ता को इन चरणों का पालन करना चाहिए।

  • AP ESPuser से कनेक्ट करें, यह आपकी उपलब्ध वाईफाई नेटवर्क सूची में सूचीबद्ध है। इस एपी से कनेक्ट करें और पासवर्ड दर्ज करें "********"
  • एक बार यह कनेक्ट हो जाने के बाद, अपने ब्राउज़र पर जाएं और आईपी 192.168.1.4 दर्ज करें।
  • इनपुट फ़ील्ड में अपने स्थानीय वाईफाई का एसएसआईडी और पासवर्ड दर्ज करें और सबमिट दर्ज करें
  • ये क्रेडेंशियल EEPROM में सहेजे जाएंगे
  • 60-सेकंड के बाद डिवाइस स्वचालित रूप से एपी से डिस्कनेक्ट हो जाएगा
  • अगली बार जब आप डिवाइस चालू करते हैं, तो उपयोगकर्ता को इस प्रक्रिया का पालन करने की आवश्यकता नहीं होती है, डिवाइस स्वचालित रूप से EEPROM से उपयोगकर्ता क्रेडेंशियल प्राप्त करेगा और I2C इंटरफ़ेस से सेंसर रीडिंग प्राप्त करना और इसे क्लाउड पर पोस्ट करना जारी रखेगा।

//--------------- एपी कॉन्फिगरेशन---------------// आईपीएड्रेस ap_local_IP(192, 168, 1, 4); आईपीएड्रेस ap_gateway(१९२, १६८, १, २५४); आईपीएड्रेस ap_subnet(255, 255, 255, 0);

Serial.print ("एक्सेस पॉइंट कॉन्फ़िगर करना …");

WiFi.softAPConfig(ap_local_IP, ap_gateway, ap_subnet);

Serial.print ("उपयोगकर्ता क्रेडेंशियल सेट करना");

वाईफाई.सॉफ्टएपी (एसएसआईडीएपी, पासएपी);

सर्वर.ऑन ("/", हैंडलरूट);

server.onNotFound (onHandleNotFound);

सर्वर। शुरू ();

APTimer = मिली ();

जबकि (मिली () - APTimer <APInterval) {

सर्वर.हैंडल क्लाइंट ();

}

//**************************************************************************************************************************************************************************************************************************************************************************************************************** *** *********//शून्य हैंडलरूट () {

अगर (server.hasArg("ssid")&& server.hasArg("password"))

{

// यदि सभी फॉर्म फ़ील्ड में डेटा कॉल है

हैंडल सबमिट करें ()

हैंडल सबमिट (); }

अन्यथा {

// फॉर्म को फिर से प्रदर्शित करें

// spiffs में निहित फ़ाइल पढ़ें

फ़ाइल फ़ाइल =SPIFFS.open("/webform.html", "r");

server.streamFile (फ़ाइल, "पाठ/एचटीएमएल");

// फ़ाइल को बंद करना न भूलें

फ़ाइल। बंद करें ();

}}

// स्थिति की जाँच करें कि इसमें ssid और पासवर्ड तर्क हैं

// फिर ROM को क्रेडेंशियल लिखें

ROMwrite(String(server.arg("ssid")), String(server.arg("password")))

चरण 3: SPIFFS में अपना वेबफ़ॉर्म सेट करना

SPIFFS

सीरियल पेरिफेरल इंटरफेस फ्लैश फाइल सिस्टम, या संक्षेप में SPIFFS। यह एसपीआई फ्लैश चिप के साथ माइक्रोकंट्रोलर के लिए एक हल्के वजन वाली फाइल सिस्टम है। ESP8266 की ऑनबोर्ड फ्लैश चिप में आपके वेब पेजों के लिए काफी जगह है, खासकर यदि आपके पास 1MB, 2MB या 4MB संस्करण है। हमने अपने वेबपेज को फ्लैश सिस्टम में भी स्टोर किया है। spiffs पर डेटा अपलोड करने के लिए हमें कुछ चरणों का पालन करना होगा

  1. टूल डाउनलोड करें:
  2. अपने Arduino स्केचबुक निर्देशिका में, उपकरण निर्देशिका बनाएं यदि यह अभी तक मौजूद नहीं है
  3. टूल को टूल डायरेक्टरी में अनपैक करें (पथ /Arduino/tools/ESP8266FS/tool/esp8266fs.jar जैसा दिखेगा)
  4. Arduino IDE को पुनरारंभ करें
  5. एक स्केच खोलें (या एक नया बनाएं और इसे सेव करें)
  6. स्केच निर्देशिका पर जाएँ (स्केच > स्केच फ़ोल्डर दिखाएँ चुनें)
  7. डेटा नाम की एक निर्देशिका बनाएं और वहां की फाइल सिस्टम में आप जो भी फाइल चाहते हैं। हमने अपना HTML पृष्ठ webform.html. नाम से अपलोड कर दिया है
  8. सुनिश्चित करें कि आपने एक बोर्ड, पोर्ट और बंद सीरियल मॉनिटर का चयन किया है
  9. टूल्स > ESP8266 स्केच डेटा अपलोड चुनें। यह फाइलों को ESP8266 फ्लैश फाइल सिस्टम में अपलोड करना शुरू कर देना चाहिए। हो जाने पर, IDE स्टेटस बार SPIFFS इमेज अपलोडेड संदेश प्रदर्शित करेगा।

फ़ाइल फ़ाइल =SPIFFS.open("/webform.html", "r");

server.streamFile (फ़ाइल, "पाठ/एचटीएमएल");

// फ़ाइल को बंद करना न भूलें

फ़ाइल। बंद करें ();

चरण 4: कार्य निर्धारण

इस ट्यूटोरियल में, हम दो ऑपरेशन कर रहे हैं:

  • I2C प्रोटोकॉल का उपयोग करके SHT25 से डेटा पढ़ें
  • ThingSpeak MQTT API का उपयोग करके अपडेट किए गए डेटा को क्लाउड पर पोस्ट करें

इसे प्राप्त करने के लिए हम टास्कशेड्यूलर लाइब्रेरी का उपयोग कर रहे हैं। हमने दो अलग-अलग नियंत्रण कार्यों के संदर्भ में दो अलग-अलग कार्यों को निर्धारित किया है। यह अग्रानुसार होगा

  • टास्क 1 सेंसर वैल्यू को पढ़ने के लिए है यह टास्क 1 सेकंड तक चलता है जब तक कि यह 10 सेकंड के टाइमआउट तक नहीं पहुंच जाता।
  • जब टास्क 1 अपने टाइमआउट तक पहुंच जाता है तो हम स्थानीय वाईफाई और एमक्यूटीटी ब्रोकर से जुड़ रहे हैं।
  • अब टास्क 2 सक्षम है और हम टास्क 1 को अक्षम कर रहे हैं टास्क 2 सेंसर डेटा को थिंग स्पीक एमक्यूटीटी ब्रोकर को प्रकाशित करने के लिए है यह कार्य 20 सेकंड के समय तक पहुंचने तक 20 सेकंड तक चलता है।
  • जब टास्क 2 अपने टाइमआउट तक पहुंच जाता है तो टास्क 1 फिर से सक्षम हो जाता है और टास्क 2 अक्षम हो जाता है। यहाँ फिर से, हमें अद्यतन मूल्य मिल रहा है और प्रक्रिया जारी है
  • जब कोई कॉलबैक नहीं कहा जाता है या डिवाइस निष्क्रिय है तो यह लाइट स्लीप में चला जाता है जिससे बिजली की बचत होती है।

// ------------- टास्क कॉलबैक के लिए प्रोटोटाइप -------------//

शून्य कार्यI2CCallback ();

शून्य कार्यI2CDisable ();

शून्य कार्यWiFiCallback ();

शून्य कार्यWiFiDisable ();

//---------------कार्य---------------//

टास्क tI2C(2 * TASK_SECOND, TASK_FOREVER, &taskI2CCकॉलबैक, &ts, false, NULL, &taskI2CDisable);

टास्क tWiFi(20* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

// tI2C tI2C.enable () सक्षम करें;

चरण 5: SHT25. से तापमान और आर्द्रता मान पढ़ना

SHT25. से तापमान और आर्द्रता मान पढ़ना
SHT25. से तापमान और आर्द्रता मान पढ़ना

I2C एक दो-तार इंटरफ़ेस है जो मास्टर डिवाइस के साथ संचार करने के लिए केवल दो तारों का उपयोग करता है। एक SCL (सीरियल क्लॉक) है और दूसरा SDA (सीरियल डेटा) है। प्रत्येक दास डिवाइस का एक अनूठा पता होता है। SHT 25 का एक 8-बिट पता भी है और इसे 0x44 पते से एक्सेस किया जा सकता है। इसमें पते के 8 बिट होते हैं जहां 7 बिट वास्तविक पता होते हैं और जबकि सबसे दाहिने एलएसबी बिट 0 का उपयोग डिवाइस से पढ़ने या लिखने का संकेत देने के लिए किया जाता है। यदि बिट 0 को 1 पर सेट किया जाता है तो मास्टर डिवाइस स्लेव I2C डिवाइस से पढ़ेगा। I2C बहुत अधिक विश्वसनीय, स्केलेबल और तेज़ है और यहां तक कि इसके संचालन के कई तरीके हैं जो इसे और अधिक ऊर्जा कुशल बनाता है

हम तापमान और आर्द्रता मूल्यों को पढ़ने के लिए Wire.h पुस्तकालय का उपयोग कर रहे हैं। यह पुस्तकालय सेंसर और मास्टर डिवाइस के बीच i2c संचार की सुविधा प्रदान करता है। 0x44 SHT25 के लिए I2C पता है। SHT25 संचालन के एक अलग मोड में काम करता है। आप उसके लिए डेटाशीट का उल्लेख कर सकते हैं। हम सिंगल शॉट ऑपरेशन के लिए क्रमशः 0x2C और 0x06 MSB और LSB के रूप में उपयोग कर रहे हैं

चरण 6: थिंगस्पीक एमक्यूटीटी एपीआई का उपयोग करके थिंगस्पीक में मूल्यों को प्रकाशित करना

थिंगस्पीक एमक्यूटीटी एपीआई का उपयोग करके थिंगस्पीक में मूल्यों का प्रकाशन
थिंगस्पीक एमक्यूटीटी एपीआई का उपयोग करके थिंगस्पीक में मूल्यों का प्रकाशन

हमारे तापमान और आर्द्रता मूल्यों को क्लाउड पर पोस्ट करने के लिए हम थिंगस्पीक एमक्यूटीटी एपीआई का उपयोग कर रहे हैं। थिंगस्पीक एक IoT प्लेटफॉर्म है। थिंगस्पीक एक निःशुल्क वेब सेवा है जो आपको क्लाउड में सेंसर डेटा एकत्र करने और संग्रहीत करने देती है। MQTT एक सामान्य प्रोटोकॉल है जिसका उपयोग IoT सिस्टम में निम्न-स्तरीय उपकरणों और सेंसर को जोड़ने के लिए किया जाता है। MQTT का उपयोग ब्रोकर को और उससे छोटे संदेश भेजने के लिए किया जाता है। थिंगस्पीक ने हाल ही में एक एमक्यूटीटी ब्रोकर जोड़ा है ताकि डिवाइस थिंगस्पीक को संदेश भेज सकें। आप इस पोस्ट से थिंगस्पीक चैनल सेट करने की प्रक्रिया का पालन कर सकते हैं

थिंगस्पीक एमक्यूटीटी

MQTT एक प्रकाशित/सब्सक्राइब आर्किटेक्चर है जिसे मुख्य रूप से वायरलेस नेटवर्क पर बैंडविड्थ और पावर-बाधित उपकरणों को जोड़ने के लिए विकसित किया गया है। यह एक सरल और हल्का प्रोटोकॉल है जो टीसीपी/आईपी सॉकेट या वेबसाकेट पर चलता है। वेबसाकेट पर एमक्यूटीटी को एसएसएल के साथ सुरक्षित किया जा सकता है। पब्लिश/सब्सक्राइब आर्किटेक्चर संदेशों को क्लाइंट डिवाइस पर पुश करने में सक्षम बनाता है, बिना डिवाइस के सर्वर को लगातार पोल करने की आवश्यकता होती है। क्लाइंट कोई भी डिवाइस होता है जो ब्रोकर से जुड़ता है और जानकारी तक पहुंचने के लिए विषयों को प्रकाशित या सब्सक्राइब कर सकता है। एक विषय में ब्रोकर के लिए रूटिंग जानकारी होती है। प्रत्येक ग्राहक जो संदेश भेजना चाहता है, उन्हें एक निश्चित विषय पर प्रकाशित करता है, और प्रत्येक ग्राहक जो संदेश प्राप्त करना चाहता है, एक निश्चित विषय की सदस्यता लेता है।

प्रकाशित करें और थिंगस्पीक एमक्यूटीटी का उपयोग करके सदस्यता लें

  • चैनल फ़ीड चैनलों पर प्रकाशन /प्रकाशित/
  • किसी विशेष फ़ील्ड चैनल /प्रकाशित/फ़ील्ड/फ़ील्ड/ में प्रकाशन
  • चैनल फील्ड चैनल को सब्सक्राइब करें /सब्सक्राइब करें//
  • निजी चैनल फ़ीड चैनलों की सदस्यता लें // सदस्यता लें/फ़ील्ड/फ़ील्ड/
  • चैनल के सभी क्षेत्रों की सदस्यता लें। चैनल//सदस्यता लें/फ़ील्ड/फ़ील्ड /

शून्य कार्यवाईफाई कॉलबैक ()

{

Serial.println ("taskWiFiCallbackStarted");

Serial.print ("इस कार्य के लिए समय समाप्त: / t");

Serial.println (tWiFi.getTimeout ());

अगर (! mqttCli.connected ())

{

Serial.println ("क्लाइंट कनेक्ट नहीं है");

पुन: कनेक्ट करेंएमक्यूटीटी ();

}

स्ट्रिंग विषयस्ट्रिंग = "चैनल/"+स्ट्रिंग(चैनलआईडी)+"/प्रकाशित/"+स्ट्रिंग(लिखेंएपीआईके);

int विषय लम्बाई = विषयस्ट्रिंग। लम्बाई () +1;

चार विषय बफर [विषय लम्बाई];

topicString.toCharArray(topicBuffer, topicLength+1);

Serial.println (विषयबफर);

स्ट्रिंग डेटास्ट्रिंग = स्ट्रिंग ("फ़ील्ड 1 =" + स्ट्रिंग (अस्थायी, 1) + "और फ़ील्ड 2 =" + स्ट्रिंग (अस्थायी, 1) + "और फ़ील्ड 3 =" + स्ट्रिंग (आर्द्र, 1));

int डेटा लम्बाई = डेटास्ट्रिंग। लम्बाई () +1;

बाइट डेटाबफर [डेटा लम्बाई];

dataString.getBytes(dataBuffer, dataLength);

mqttCli.beginPublish(topicBuffer, dataLength, false);

Serial.println(mqttCli.write(dataBuffer, dataLength)? "प्रकाशित": "प्रकाशित विफल");

mqttCli.endPublish ();

//mqttCli.loop ();

}

चरण 7: मौसम रिपोर्ट ईमेल अधिसूचना

मौसम रिपोर्ट ईमेल अधिसूचना
मौसम रिपोर्ट ईमेल अधिसूचना
मौसम रिपोर्ट ईमेल अधिसूचना
मौसम रिपोर्ट ईमेल अधिसूचना

हम उपयोगकर्ता को रीयल-टाइम मौसम रिपोर्ट ईमेल सूचना देने के लिए IFTTT एप्लेट का उपयोग कर रहे हैं। इसलिए, हमने इसे थिंगस्पीक के माध्यम से लागू किया है। हम तापमान और आर्द्रता के 5-fay मानों का औसत रखते हैं। जब भी अंतिम प्रविष्टि का मान औसत मान से अधिक होता है। यह एक ईमेल सूचना को ट्रिगर करेगा "यह एक गर्म दिन है"। और जब यह औसत मूल्य से कम हो। यह एक ईमेल सूचना को ट्रिगर करेगा "क्या एक सुंदर दिन है"। हर दिन लगभग 10:00 बजे (IST) हमें एक ईमेल सूचना प्राप्त होगी

चैनलआईडी = ******;

iftttURL='https://maker.ifttt.com/**************';

नमीडाटा = बातस्पीकरेड (चैनल आईडी, 'फ़ील्ड', 3, 'न्यूमडेज़', 5); tempData = बातस्पीकरेड (चैनलआईडी, 'फ़ील्ड', 1, 'न्यूमडेज़', 5);

perHumid = अधिकतम (नमी डेटा) - मिनट (नमी डेटा);

ह्यूमिडवैल्यू = 0.1 * प्रति ह्यूमिड + मिनट (नमी डेटा);

perTemp=max(tempData)-min(tempData);

tempValue=0.1*perTemp+min(tempData);

urlTemp=strcat('https://api.thingspeak.com/channels/', स्ट्रिंग (चैनलआईडी), '/fields/1/last.txt');

urlHumid = strcat ('https://api.thingspeak.com/channels/', स्ट्रिंग (चैनलआईडी), '/fields/3/last.txt'); lastTempValue=str2num (वेब्रेड (urlTemp)); lastHumidValue = str2num (वेब्रेड (urlHumid));

अगर (lastTempValue

अगर (lastTempValue>tempValue || lastHumidValue>humidValue)

plantMessage=' यह एक गर्म दिन है।'; वेबराइट (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); समाप्त

चरण 8: कुल मिलाकर कोड

कुल मिलाकर कोड
कुल मिलाकर कोड
कुल मिलाकर कोड
कुल मिलाकर कोड
कुल मिलाकर कोड
कुल मिलाकर कोड

कुल मिलाकर कोड

इस GitHub रिपॉजिटरी में समग्र कोड उपलब्ध है

सीमाओं

  • बड़ी मात्रा में डेटा के लिए एक विधि प्रकाशित करके डेटा को प्रकाशित करने में कुछ समस्याएं हैं। इस समस्या को हल करने के लिए हम राइट () फ़ंक्शन का उपयोग कर रहे हैं
  • SPIFFS में नया डेटा अपलोड करने से पहले SPIFFS को स्वरूपित किया जाना चाहिए।
  • आपको देरी() फ़ंक्शन का उपयोग नहीं करना चाहिए। देरी() पृष्ठभूमि संचालन में बाधा डालती है। इसके बजाय, यदि आवश्यक हो तो केवल मिलिस () का उपयोग करके देरी करें

क्रेडिट

  • ESP826वेबसर्वर
  • कार्य अनुसूचक
  • एसएचटी 25
  • थिंगस्पीक एमक्यूटीटी एपीआई
  • आईएफटीटीटी
  • पबसब क्लाइंट

सिफारिश की: