विषयसूची:

रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ: 7 कदम
रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ: 7 कदम

वीडियो: रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ: 7 कदम

वीडियो: रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ: 7 कदम
वीडियो: Temperature monitoring using Raspberry Pi | Raspberry Pi for Beginners in Hindi #10 2024, नवंबर
Anonim
रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ
रास्पबेरी पाई नियंत्रित कमरे के तापमान की निगरानी Gnuplot छवि आउटपुट और ईमेल अलर्ट क्षमता के साथ

जहां मैं काम करता हूं, वहां एक बहुत ही महत्वपूर्ण कमरा है जिसमें बहुत सारे कंप्यूटर हैं। इन प्रणालियों के प्रदर्शन को अनुकूलित करने के लिए इस कमरे के परिवेश का तापमान बहुत ठंडा होना चाहिए। मुझे एक निगरानी प्रणाली के साथ आने के लिए कहा गया था जिसमें कुछ लोगों को कुछ प्रकार के अलर्ट भेजने की क्षमता है जो उन्हें सूचित करेंगे कि उस कमरे में एयर कंडीशनिंग में कुछ गड़बड़ है। इस निर्माण के लिए हार्डवेयर, मैंने रास्पबेरी पाई का उपयोग किया और एक USB तापमान और आर्द्रता सेंसर। निगरानी के लिए, मैंने तीन तापमान ग्राफ़ प्लॉट करने और उन ग्राफ़ की छवि बनाने के लिए Gnuplot का उपयोग किया। फिर मैंने एक समर्पित HTML पृष्ठ बनाया जिसे रास्पबेरी पाई पर होस्ट किया जाएगा ताकि वर्तमान परिस्थितियों, उन gnuplot आउटपुट छवियों को हमारे नेटवर्क के भीतर एक वेब पेज से मॉनिटर किया जा सके। अलर्ट करने के लिए मैंने जीमेल के साथ जाने का विकल्प चुना। मुझे लिनक्स उपयोगकर्ता पत्रिका में कुछ उदाहरण कोड मिला था। (एक बार जब आप आवश्यक पोर्ट असाइनमेंट जान लेते हैं तो आप किसी भी मेल सर्वर का उपयोग कर सकते हैं।) इसके लिए मैंने इन अलर्ट के लिए एक समर्पित जीमेल ईमेल अकाउंट बनाया है। साथ ही एक अतिरिक्त सुविधा के रूप में, जब कोई अलर्ट ट्रिगर किया गया है, तो मैं ईमेल में एक ग्राफ़ संलग्न करता हूं ताकि ईमेल प्राप्त करने वाले व्यक्ति को यह पता चल सके कि अलर्ट के कारण कितनी भारी वृद्धि हुई है।

चरण 1: हार्डवेयर सेटअप

हार्डवेयर सेटअप
हार्डवेयर सेटअप

हार्डवेयर स्थापित करने के लिए बहुत कुछ नहीं है। रास्पबेरी पाई रास्पियन चला रही है और यूएसबी तापमान सेंसर सीधे यूएसबी पोर्ट में से एक में प्लग करता है। इस सेंसर की बिजली की खपत न्यूनतम है और परिणामस्वरूप मैंने इसे सीधे रास्पबेरी पाई से संचालित किया। हालाँकि, USB संचालित उपकरणों के लिए थोड़ी अधिक बिजली की खपत के साथ, मैं उन्हें एक संचालित USB हब के माध्यम से बिजली देने की सलाह दूंगा, न कि सीधे रास्पबेरी पाई के USB पोर्ट से। एक बार तापमान सेंसर संचालित होने के बाद, यह एक सीरियल स्ट्रिंग प्रदान करता है जिसमें तापमान होता है और वर्तमान परिस्थितियों की आर्द्रता रीडिंग। तापमान = 20.9 डिग्री सेल्सियस आर्द्रता = 62.7% ओस बिंदु = 13.0 डिग्री सीए पायथन लिपि इस स्ट्रिंग को पार्स करती है और तापमान और आर्द्रता मानों को हर पांच मिनट में तीन टेक्स्ट फाइलों में संग्रहीत करती है; एक दैनिक, 24 घंटे और 48 घंटे की टेक्स्ट फ़ाइलें (अंतरों पर बाद में HTML अनुभाग में चर्चा की जाएगी)। इन फ़ाइलों से, Gnuplot ग्राफ़ और बाद में प्रत्येक फ़ाइल में सेट किए गए डेटा की छवियों को उत्पन्न करेगा। इससे पहले कि मैं अजगर लिपि पर चर्चा करूं, मैं रास्पबेरी पाई तैयार करने के बारे में बात करूंगा। चूंकि निगरानी ऑनलाइन की जानी है, इसलिए एक वेब सर्वर स्थापित करने की आवश्यकता है। मैंने रास्पबेरी पाई पर अपने समय में उनमें से कुछ की कोशिश की है, लेकिन हालांकि यह थोड़ा बड़ा है, मैं अपाचे को पसंद करता हूं। अपने रास्पबेरी पाई पर अपाचे को स्थापित करने के लिए आप बस टाइप करें: sudo apt-get install apache2 यह आपको स्थापित होने से पहले एक संकेत देगा, हाँ के लिए "y" दबाएं और अपाचे आपके रास्पबेरी पाई के आधार पर कुछ मिनटों में स्थापित हो जाएगा। हो गया है, आपको दो पायथन प्लग-इन स्थापित करने होंगे: पायथन-सीरियल और पायथन-ग्नुप्लॉट प्लग। (हालांकि मैंने महसूस किया है कि हाल ही में रास्पियन बिल्ड में पायथन-सीरियल प्लग-इन मानक है, लेकिन सिर्फ सुरक्षित रहने के लिए।) जो आप टाइप करते हैं उसे स्थापित करने के लिए: sudo apt-get install python-serial python-gnuplotएक बार फिर संकेतों को स्वीकार करने के बाद, ये प्लग -इन्स स्थापित किया जाएगा। और इसके साथ ही हार्डवेयर सेटअप पूरा हो गया है।

चरण 2: सॉफ़्टवेयर सेटअप - ईमेल सेटअप और प्राप्तकर्ता

ईमेल पता बनाएँ इससे पहले कि हम सॉफ़्टवेयर में बहुत आगे निकल जाएँ, अब एक अच्छा समय होगा कि आप अपना ईमेल अलर्ट भेजने के लिए एक Gmail खाता बनाएँ। (यह उदाहरण जीमेल का उपयोग करता है लेकिन एसएमटीपी पोर्ट सेटिंग्स को जानने के बाद किसी भी मेल सर्वर का उपयोग किया जा सकता है) पायथन कोड बहुत सीधे आगे है लेकिन आवश्यक आयात महत्वपूर्ण हैं। उनके बिना कुछ भी काम नहीं करेगा। समय से आयात * आयात समय आयात सीरियल आयात smtplib आयात Gnuplot आयात ओएस आयात sysअंत में, मेलिंग सूची। बेशक हमें ईमेल के प्राप्तकर्ताओं को जोड़ना होगा। प्रत्येक ईमेल पता एक चर में सहेजा जाता है।from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' पासवर्ड = 'custom_email_password'

चरण 3: सॉफ्टवेयर सेटअप - सीरियल सेटअप और पार्सिंग

आगे हम सीरियल सेटअप को देखते हैं। यह सेंसर से सीरियल आउटपुट से मेल खाने वाले पैरामीटर सेट करने की बात है। सेंसर 9600 8 एन 1 पर एक सीरियल स्ट्रिंग आउटपुट करता है जो एक मानक प्रारूप है। स्ट्रिंग प्राप्त होने के बाद इस स्ट्रिंग को पायथन में पार्स करने के कई तरीके हैं और संभवतः अधिक विश्वसनीय रूप से। जिस तरह से मैं इसे करता हूं वह धारावाहिक स्ट्रिंग में "अस्थायी" वर्णों को देखना है। एक बार स्थित हो जाने पर यह अगले 46 धारावाहिक पात्रों को एक स्ट्रिंग में पढ़ने की बात है। एकत्रित स्ट्रिंग को अब एक सरणी में तत्वों की तरह संबोधित किया जा सकता है। वांछित डेटा को स्ट्रिंग से पार्स किया जाता है और तीन फाइलों में इसके संबंधित समय के साथ सहेजा जाता है।

चरण 4: सॉफ्टवेयर सेटअप - Gnuplot

सॉफ्टवेयर सेटअप - Gnuplot
सॉफ्टवेयर सेटअप - Gnuplot
सॉफ्टवेयर सेटअप - Gnuplot
सॉफ्टवेयर सेटअप - Gnuplot
सॉफ्टवेयर सेटअप - Gnuplot
सॉफ्टवेयर सेटअप - Gnuplot

Gnuplot एक कमांड लाइन ग्राफिकल टूल है। एक बार जब आप मूल बातें समझ लेते हैं तो यह डेटा सेट के ग्राफिकल डिस्प्ले के लिए एक बहुत शक्तिशाली टूल हो सकता है। Gnuplot सीधे स्वरूपित टेक्स्ट फ़ाइल से प्लॉट कर सकता है और हमारे पास पार्सिंग चरण से पहले एक होता है। एक बार जब हम gnuplot को इंगित करते हैं कि फ़ाइल में डेटा कहाँ स्थित है तो हम वांछित मानों को प्लॉट कर सकते हैं। मैं एक्स अक्ष पर समय और वाई अक्ष पर हमारे तापमान का उपयोग करने जा रहा हूं। मेरे अनुभव से समय को प्लॉट करना सबसे कठिन है क्योंकि आपको टेक्स्ट फ़ाइल के प्रारूप से मेल खाने के लिए gnuplot में समय प्रारूप प्राप्त करना होगा। सभी रेखांकन विकल्प पूर्ण होने के बाद और आपकी पसंद के अनुसार, Gnuplot तब इस ग्राफ की एक छवि बना सकता है। यह वह छवि होगी जिसका उपयोग हम बाद में अपने वेब पेज पर करेंगे। मैंने एक-p.webp

चरण 5: सॉफ्टवेयर सेटअप - थ्रेसहोल्ड सेटिंग और ईमेलिंग

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

सादगी के लिए, मैं मेलिंग सूची में अलग-अलग ईमेल भेज रहा हूं। चूंकि मेलिंग सूची छोटी है, इसलिए मैंने कभी भी कई प्राप्तकर्ताओं को एक ईमेल भेजने की जहमत नहीं उठाई। यहां एक बात ध्यान देने योग्य है, चूंकि मैं इस स्क्रिप्ट को हर 5 मिनट में क्रॉन जॉब के रूप में चला रहा हूं, इसलिए थ्रेसहोल्ड ट्रिगर होने के बाद आप हर 5 मिनट में ईमेल नहीं भेजना चाहते हैं। इससे निजात पाने के लिए, मैं एक फाइल में अलर्ट की तारीख और समय लिखता हूं और कोई भी ईमेल भेजने से पहले इस फाइल की जांच करता हूं कि सिस्टम पहले से अलर्ट स्थिति में है या नहीं। एक बार अलर्ट स्थिति में, यह पहले ट्रिगर के बाद हर घंटे केवल एक ईमेल भेजेगा, जब तक कि सिस्टम चालू और अलर्ट स्थिति में है। इस प्रकार जीमेल आपके ईमेल को कम समय में बहुत अधिक ईमेल भेजने से नहीं रोकता है।

चरण 6: सॉफ़्टवेयर सेटअप - HTML

पूरे सिस्टम की निगरानी एक वेब पेज के माध्यम से की जाती है और इसके लिए एक बहुत ही बुनियादी HTML स्क्रिप्ट की आवश्यकता होती है। जिन छवियों को ग्नुपलॉट ने बनाया है, मैं बस छवि के समान आयामों का उपयोग करता हूं। मेरा मानना है कि मैं इन छवियों के लिए लगभग 3 आकारों से गुज़रा, जिन्होंने मेरी स्क्रीन पर सबसे अच्छा फिट दिया। इससे पहले कि हम html स्क्रिप्ट बनाएं, आइए इसके लिए एक फोल्डर बनाएं। डिफ़ॉल्ट रूप से वेब होस्टिंग फ़ोल्डर /var/www/ पर स्थित होता है। हालाँकि यह रास्पबेरी पाई 'केवल उद्देश्य इस कमरे की निगरानी करना और ईमेल अलर्ट जारी करना है, अच्छे हाउस कीपिंग के लिए मैंने /var/www/ फ़ोल्डर में एक अलग फ़ोल्डर बनाया है। चूंकि यह फ़ोल्डर रूट उपयोगकर्ता का है, इसलिए आपको फ़ोल्डर बनाने के लिए sudo का उपयोग करना होगा यह स्थान है। sudo mkdir /var/www/temperatureइस उदाहरण में मैंने फ़ोल्डर के नाम के रूप में तापमान का उपयोग किया है, लेकिन आप यहां किसी भी नाम का उपयोग कर सकते हैं, लेकिन याद रखें कि इस पृष्ठ को देखने के लिए पता बार में इसे दर्ज करना होगा। यह पथ पायथन लिपि के भीतर एक चर में संग्रहीत है। यहां तक कि होस्टिंग स्थान को बदलना होगा या किसी अन्य सिस्टम के लिए स्क्रिप्ट को संशोधित करना होगा, इसे बस इस एक स्थान से बदला जा सकता है। अब हम इस फ़ोल्डर में अपनी एचटीएमएल स्क्रिप्ट बना सकते हैं, याद रखें कि आप किसी भी आदेश के सामने सुडो का उपयोग करना याद रखें। यहां निष्पादित करना चाहते हैं। मैं आपको html स्क्रिप्ट "index.html" का नामकरण करने की सलाह दूंगा क्योंकि यह इस पृष्ठ को खोजने का प्रयास करते समय इसे सरल बना देगा। महत्वपूर्ण बात यह सुनिश्चित करना है कि छवि का आकार Gnuplot से छवि आकार के समान है। इस पृष्ठ को देखने के लिए, आपको बस रास्पबेरी पाई का आईपी पता दर्ज करना होगा और उसके बाद /तापमान (या जिसे आपने अपने फ़ोल्डर का नाम दिया है) मेरे पास विभिन्न चीजों की निगरानी के लिए कई सिस्टम हैं और वे सभी अपने परिणामों के कुछ ग्राफिकल आउटपुट का उत्पादन करते हैं। इसलिए मैंने एक ऐसा पृष्ठ बनाया जिसमें इन सभी पृष्ठों के लिंक हैं, इसलिए जब भी मैं इन पृष्ठों तक पहुंचना चाहता हूं, तो मुझे हर बार पता दर्ज करने के बारे में चिंता करने की आवश्यकता नहीं है।

चरण 7: मैं जीवित हूँ…।

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

क्रोनजॉब लिस्टिंग का उपयोग इस प्रकार करना:

सिफारिश की: