विषयसूची:

आपका ऊर्जा बिल मॉनिटर: 4 कदम
आपका ऊर्जा बिल मॉनिटर: 4 कदम

वीडियो: आपका ऊर्जा बिल मॉनिटर: 4 कदम

वीडियो: आपका ऊर्जा बिल मॉनिटर: 4 कदम
वीडियो: बिजली मीटर or Electronic meter में यूनिट कैसे चेक करे? (TAT) 2024, नवंबर
Anonim
आपका ऊर्जा बिल मॉनिटर
आपका ऊर्जा बिल मॉनिटर

इस परियोजना के बारे में

यदि आप वास्तव में अपने घर को स्मार्ट बनाना चाहते हैं, तो आप शायद अपने मासिक बिलों (यानी ऊर्जा, गैस, आदि…) से शुरू करना चाहेंगे। जैसा कि कुछ कहते हैं, ग्रह के लिए अच्छा है, बटुआ और नीचे की रेखा। ओपन-सोर्स हार्डवेयर घरेलू वातावरण में स्थिरता तक पहुंचने का हमारा तरीका है! यह विचार हमें एक सरल और सुरक्षित समाधान बनाने के लिए लाया, किसी भी होम ऑटोमेशन सॉफ़्टवेयर के साथ एकीकृत करना आसान है क्योंकि यह एमक्यूटीटी पर डेटा को उजागर करता है (हमारे मामले में हम आपको दिखाएंगे कि इसे गृह सहायक में कैसे एकीकृत किया जाए)।

अवलोकन

विद्युत ऊर्जा की खपत को मापने के लिए, हमने फाइंडर एनर्जी मीटर का उपयोग करना चुना, क्योंकि यह डीआईएन रेल उपयोग के लिए डिज़ाइन किया गया है और हमारे घर के मुख्य कैबिनेट में पूरी तरह से फिट बैठता है। इस उत्पाद के बारे में अच्छी बात यह है कि इसमें एक RS485 मोडबस इंटरफ़ेस है, एक औद्योगिक मानक संचार प्रोटोकॉल है जो एक Arduino से बात करना वास्तव में आसान बनाता है। वास्तव में, Arduino ने प्रोटोकॉल को डिकोड करने के लिए एक आधिकारिक शील्ड, MKR485 और दो लाइब्रेरी जारी की हैं। मेनबोर्ड के रूप में, हमने Arduino MKR WiFi 1010 को चुना, क्योंकि यह MKR फॉर्म फैक्टर को साझा करता है और इसमें वाईफाई कनेक्टिविटी है।

सेटअप चेतावनी! अपने घर की विद्युत प्रणाली से निपटने के बारे में अपने देश के नियमों की जाँच करें और बेहद सावधान रहें क्योंकि यह घातक हो सकता है! यदि आप नहीं जानते कि कैसे, एक इलेक्ट्रीशियन को बुलाओ। पहला कदम अपने विद्युत कैबिनेट में मीटर स्थापित करना है। यह सुनिश्चित करने के लिए कि आप सुरक्षित वातावरण में काम कर रहे हैं, अपने सिस्टम के आगे विद्युत टर्मिनल से बिजली बंद कर दें और मल्टीमीटर से दोबारा जांच लें कि टर्मिनलों के बीच कोई वोल्टेज नहीं है। फिर ऊर्जा मीटर को अपने कैबिनेट के अंदर रखें और मुख्य ब्रेकर से लाइव और न्यूट्रल तारों को मीटर के इनपुट से कनेक्ट करें, रंग सम्मेलन का उपयोग करना याद रखें (ईयू में रहने के लिए न्यूट्रल और ब्राउन/ब्लैक/ग्रे के लिए नीला)। आउटपुट को बाकी सिस्टम से जोड़ा जाना है।

मुख्य वोल्टेज कनेक्शन। ऊपर के तार इनपुट हैं, परे के तार आउटपुट हैं।

चरण 1: आवश्यक भागों

भागों की जरूरत
भागों की जरूरत

चरण 2: सॉफ्टवेयर की जरूरत

सॉफ्टवेयर की जरूरत
सॉफ्टवेयर की जरूरत

सॉफ्टवेयर

अपना कंप्यूटर शुरू करें और अपना आईडीई खोलें। आप Arduino IDE या Arduino Create Editor का उपयोग कर सकते हैं। कोड निम्नलिखित अनुरोधों को पूरा कर रहा है: मोडबस संचार, वाईफाई प्रबंधन एमक्यूटीटी प्रोटोकॉल मोडबस औद्योगिक सेंसर और मशीनों के लिए ओपन-सोर्स प्रोटोकॉल है। Arduino को Modbus से बात करने के लिए, हम Arduino Modbus लाइब्रेरी का उपयोग करने जा रहे हैं। यह लाइब्रेरी सभी हैंडलर्स को पैक करती है और किसी भी मोडबस डिवाइस को वास्तव में तेजी से कनेक्ट करती है। चूंकि हम रजिस्टरों को पढ़ने जा रहे हैं, मीटर की डेटशीट का अनुसरण करते हुए, हम सभी आवश्यक जानकारी जैसे फ़ंक्शन कोड, रजिस्टर का पता और रजिस्टर का आकार शब्दों में पा सकते हैं। लेकिन इसे स्पष्ट करने के लिए, आइए बताते हैं कि मोडबस कैसे काम करता है: मोडबस संदेश एक सरल संरचना का पालन करते हैं: 01 03 04 00 16 00 02 25 C7 0x01 डिवाइस का पता 0x03 फ़ंक्शन कोड है जो डिवाइस को बताता है कि क्या हम डेटा पढ़ना या लिखना चाहते हैं *, इस मामले में, बाइट काउंट 00 16 के लिए होल्डिंग रजिस्टर 0x04 पढ़ें - हम 4 बाइट्स रजिस्टर एड्रेस (00 16) भेजते हैं जो डिवाइस को बताता है कि हम क्या पढ़ना चाहते हैं 00 02- फिर रजिस्टर का आकार (00 02) शब्दों में (हर शब्द 2 बाइट लंबा है) अंतिम 4 बाइट सीआरसी कोड हैं। यह कोड पिछले बाइट्स पर गणित फ़ंक्शन से उत्पन्न होता है, यह सुनिश्चित करता है कि संदेश सही तरीके से प्राप्त हुआ है।

होम असिस्टेंट इंटीग्रेशनमीटर को होम असिस्टेंट में जोड़ना बहुत आसान है। मान लें कि आपके पास एक MQTT ब्रोकर कॉन्फ़िगर किया गया है (यहाँ गाइड है), आपको केवल कॉन्फ़िगरेशन.yaml फ़ाइल के अंतर्गत नई परिभाषाएँ जोड़ने की आवश्यकता है। सेंसर: - प्लेटफॉर्म: एमक्यूटीटी नाम: "मेन वोल्टेज" स्टेट_टॉपिक: "एनर्जी/मेन/वोल्टेज" यूनिट_ऑफ_मेजरमेंट: "वी" यहां आपको माप का नाम, पढ़ने के लिए एमक्यूटीटी विषय और मात्रा की माप इकाई डालनी होगी। फ़ाइल को सहेजें, कॉन्फ़िगरेशन की जाँच करें और होम असिस्टेंट को पुनः लोड करें, अब माप मुख्य पृष्ठ पर दिखाई देंगे।

होम सहायक खपत पैनल वर्तमान रीडिंग दिखा रहा है

होम असिस्टेंट ग्राफ़ बनाने और आपके रीडिंग से ट्रिगर होने वाली प्रक्रियाओं को स्वचालित करने का ध्यान रखेगा। यह ट्यूटोरियल समाप्त हो गया है, अब यह आप पर निर्भर है कि आप सुविधाओं को जोड़ें और इसे अपने उद्देश्यों के लिए अनुकूलित करें!

चरण 3: इकट्ठा

इकट्ठा
इकट्ठा
इकट्ठा
इकट्ठा

किया हुआ? यह RS485 कनेक्शन में पेंच करने का समय है! हम जमीन के साथ मुड़ एकल जोड़ी केबल का उपयोग करेंगे, आमतौर पर फोन लाइनों के लिए उपयोग किया जाता है। इस केबल से आप लंबी दूरी (1.2 किमी) तक संचार कर सकते हैं। हालाँकि, हम कैबिनेट से बाहर निकलने और Arduino को एक सुलभ स्थान पर रखने के लिए बस एक केबल का उपयोग करते हैं।

खोजक RS485 कनेक्शन

RS485 इंटरफ़ेस इसके टर्मिनलों को A, B और COM नाम देता है। एक सामान्य वास्तविक मानक बी के विकल्प के रूप में TX+/RX+ या D+ का उपयोग है (MARK के लिए उच्च यानी निष्क्रिय), TX-/RX- या D- A के विकल्प के रूप में (MARK के लिए कम यानी निष्क्रिय) के बाद से एमकेआर शील्ड फुल डुप्लेक्स को भी सपोर्ट करता है, आपको दो अन्य टर्मिनल, वाई और जेड दिखाई देंगे। यहां हम केबल के दूसरे छोर को पेंच करने जा रहे हैं क्योंकि हम डेटाशीट से जानते हैं कि हाफ-डुप्लेक्स संचार केवल वाई और जेड टर्मिनलों पर होता है। COM टर्मिनल को ISOGND से कनेक्ट करना होगा। चूंकि हम हाफ-डुप्लेक्स कनेक्शन का उपयोग करते हैं और चूंकि केबलिंग पीयर-टू-पीयर है, इसलिए हमें अपने सेटअप से मेल खाने के लिए MKR485 शील्ड पर स्विच सेट करना होगा: हम HALF (2 से ऑफ) और YZ (3 से टर्मिनेशन) पर सेट करते हैं। पर); पहला कोई मायने नहीं रखता। टर्मिनेशन दो डेटा टर्मिनलों को जोड़ने वाला एक प्रतिरोध है, जो हस्तक्षेपों को कम करने के लिए है।

यह बात है। अब आप कैबिनेट को बंद कर सकते हैं और सॉफ्टवेयर पक्ष पर ध्यान केंद्रित कर सकते हैं!

चरण 4: कोड

कोड
कोड

#शामिल

#शामिल करें #शामिल करें #शामिल करें // आपका वाईफाई क्रेडेंशियल कॉन्स्ट चार एसएसआईडी = "**********"; कास्ट चार पास = "**********";

वाईफाई क्लाइंट नेट; एमक्यूटीटी क्लाइंट क्लाइंट; अहस्ताक्षरित लंबी दर = ६००००; // एमएस अहस्ताक्षरित लंबे लास्टमिलिस = 0 में डिफ़ॉल्ट ताज़ा दर;

// कनेक्ट फ़ंक्शन शून्य कनेक्ट () {Serial.print ("वाईफाई की जाँच …"); जबकि (WiFi.status() != WL_CONNECTED) { Serial.print("."); देरी (1000); } सीरियल.प्रिंट ("\ n कनेक्ट हो रहा है…"); जबकि (!client.connect("device_name", "user_name", "user_pw")) {// अपने SETUP Serial.print(""); से मिलान करने के लिए बदलें; देरी (1000); } सीरियल.प्रिंट्लन ("\ n कनेक्टेड!"); ग्राहक। सदस्यता ("ऊर्जा / मुख्य / ताज़ा करें"); // विषय दूर से ताज़ा दर सेट करने के लिए } // mqtt कॉलबैक फ़ंक्शन प्राप्त करें शून्य संदेश प्राप्त (स्ट्रिंग और विषय, स्ट्रिंग और पेलोड) {Serial.println ("आने वाली:" + विषय + "-" + पेलोड); अगर (विषय == "ऊर्जा / मुख्य / ताज़ा करें") {// ताज़ा दर हैंडलर दर = payload.toInt () * 1000; Serial.println ("नई दर" + स्ट्रिंग (दर)); } }

शून्य सेटअप () {Serial.begin(११५२००); वाईफाई.बेगिन (एसएसआईडी, पास); जबकि (! सीरियल); क्लाइंट.बेगिन ("ब्रोकर_आईपी", नेट); // अपने सेटअप क्लाइंट से मिलान करने के लिए बदलें। संदेश पर (messageReceived); // मोडबस आरटीयू क्लाइंट शुरू करें अगर (!ModbusRTUClient.begin(9600)) { Serial.println ("मोडबस आरटीयू क्लाइंट शुरू करने में विफल!"); जबकि (1); } }

शून्य लूप () {क्लाइंट। लूप (); अगर (! क्लाइंट। कनेक्टेड ()) {// नेटवर्क कनेक्शन कनेक्ट करें ();) // सभी रीड कॉल करें फ्लोट वोल्ट = रीडवोल्टेज (); देरी (100); फ्लोट amp = readCurrent (); देरी (100); डबल वाट = रीडपावर (); देरी (100); फ्लोट एचजेड = रीडफ्रीक (); देरी (100); डबल Wh = readEnergy (); // संबंधित विषयों के तहत परिणाम प्रकाशित करें client.publish ("ऊर्जा/मुख्य/वोल्टेज", स्ट्रिंग (वोल्ट, 3)); client.publish ("ऊर्जा/मुख्य/वर्तमान", स्ट्रिंग (amp, 3)); client.publish ("ऊर्जा / मुख्य / शक्ति", स्ट्रिंग (वाट, 3)); client.publish ("ऊर्जा/मुख्य/आवृत्ति", स्ट्रिंग (हर्ट्ज, 3)); client.publish ("ऊर्जा/मुख्य/ऊर्जा", स्ट्रिंग (wh, 3)); सीरियल.प्रिंट (स्ट्रिंग (वोल्ट, 3)+"वी"+स्ट्रिंग(amp, 3)+"ए"+स्ट्रिंग(वाट, 3)+"डब्ल्यू"); Serial.println(String(hz, 3)+"Hz"+String(wh, 3)+"kWh"); देरी (100); } }

/* फाइंडर एनर्जी मीटर रजिस्टर पढ़ने के लिए कार्य * * कोड को समझने के लिए मोडबस प्रोटोकॉल मैनुअल की जांच करें * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf */ फ्लोट रीडवोल्टेज (){ फ्लोट वोल्ट = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x000C, 2)) {// रजिस्टर को कॉल करें Serial.print("वोल्टेज पढ़ने में विफल!"); Serial.println (ModbusRTUClient.lastError ()); // त्रुटि हैंडलर} और {uint16_t word1 = ModbusRTUClient.read (); // बफर से डेटा पढ़ें uint16_t word2 = ModbusRTUClient.read (); uint32_t मिलीवोल्ट = शब्द1 << 16 | शब्द २; // बिट गणित वोल्ट = मिलीवोल्ट/1000.0; } वापसी वोल्ट; } फ्लोट रीड करंट () {फ्लोट एम्पीयर = 0.; अगर (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) { Serial.print("वर्तमान पढ़ने में विफल!"); Serial.println (ModbusRTUClient.lastError ()); }else{ uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t मिलीएम्प = शब्द1 << 16 | शब्द २; एम्पीयर = मिलीएम्प/1000.0; } वापसी एम्पीयर; }

डबल रीडपावर () {डबल वाट = 0.; अगर (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0025, 3)) { Serial.print("पॉवर पढ़ने में विफल!"); Serial.println (ModbusRTUClient.lastError ()); }else{ uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t मिलीवाट; अगर (शब्द १ >> ७ == ०) {मिलीवाट = वर्ड १

सिफारिश की: