अपना खुद का रास्पबेरी पाई मौसम स्टेशन बनाएं

Build Your Own Raspberry Pi Weather Station



रास्पबेरी पाई सेंस हैट एक ऐड-ऑन बोर्ड है जिसका उपयोग रास्पबेरी पाई सिंगल-बोर्ड कंप्यूटर के साथ किया जा सकता है। रास्पबेरी पाई सेंस हैट में 8×8 एलईडी डिस्प्ले और 5-बटन जॉयस्टिक है, और यह निम्नलिखित सेंसर से सुसज्जित है:

  1. जाइरोस्कोप
  2. accelerometer
  3. मैग्नेटोमीटर
  4. तापमान
  5. बैरोमीटर का दबाव
  6. नमी

इस लेख में, मैं आपको यह दिखाने जा रहा हूं कि का उपयोग करके पायथन एपीआई आधारित मौसम स्टेशन वेब एप्लिकेशन कैसे बनाया जाए तापमान , बैरोमीटर का दबाव , तथा नमी रास्पबेरी पाई सेंस हैट के सेंसर। इस लेख का अनुसरण करने के लिए, आपको निम्नलिखित की आवश्यकता होगी:







  1. रास्पबेरी पाई 3 या रास्पबेरी पाई 4 नेटवर्क कनेक्टिविटी के साथ।
  2. एक रास्पबेरी पाई सेंस हैट मॉड्यूल।
  3. एक माइक्रो-यूएसबी (रास्पबेरी पाई 3) या यूएसबी टाइप-सी (रास्पबेरी पाई 4) पावर एडॉप्टर।
  4. रास्पबेरी पाई ओएस के साथ 16 जीबी या 32 जीबी का माइक्रोएसडी कार्ड।
  5. वीएनसी रिमोट डेस्कटॉप एक्सेस या रास्पबेरी पाई के लिए एसएसएच एक्सेस के लिए एक लैपटॉप या डेस्कटॉप कंप्यूटर।

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



रास्पबेरी पाई ओएस छवि को माइक्रोएसडी कार्ड पर फ्लैश करने का तरीका जानने के लिए, कृपया देखें कि रास्पबेरी पाई इमेजर कैसे स्थापित करें और उसका उपयोग करें। यदि आपको अपने रास्पबेरी पाई पर रास्पबेरी पाई ओएस स्थापित करने में सहायता की आवश्यकता है, तो पढ़ें रास्पबेरी पाई 4 पर रास्पबेरी पाई ओएस कैसे स्थापित करें? . यदि आपको रास्पबेरी पाई के हेडलेस सेटअप में सहायता की आवश्यकता है, तो देखें कि बाहरी मॉनिटर के बिना रास्पबेरी पाई 4 पर रास्पबेरी पाई ओएस कैसे स्थापित और कॉन्फ़िगर करें।



रास्पबेरी पाई सेंस हैट को रास्पबेरी पाई से जोड़ना

रास्पबेरी पाई सेंस हैट किट रास्पबेरी पाई सेंस हैट ऐड-ऑन बोर्ड, एक 40-पिन पुरुष-से-महिला हेडर, और कुछ स्क्रू और स्पेसर के साथ आता है।





इससे पहले कि आप सेंस हैट बोर्ड को रास्पबेरी पाई से जोड़ सकें, आपको 40-पिन हेडर को सेंस हैट से जोड़ना होगा। 40-पिन पुरुष-महिला हेडर के पुरुष पिन को सेंस हैट से कनेक्ट करें जैसा कि नीचे की छवियों में दिखाया गया है।



रास्पबेरी पाई सिंगल-बोर्ड कंप्यूटर में 4 छेद होते हैं जिनका उपयोग ऐड-ऑन बोर्ड या केस संलग्न करने के लिए किया जा सकता है। ऐड-ऑन बोर्ड संलग्न करने के लिए, रास्पबेरी पाई के पीछे से स्क्रू डालें, जैसा कि नीचे की छवियों में दिखाया गया है।

फिर, एक स्पेसर को स्क्रू से कनेक्ट करें।

एक बार जब आप सभी चार स्क्रू और स्पेसर जोड़ लेते हैं, तो आपका रास्पबेरी पाई नीचे की छवि में दिखाए गए जैसा दिखना चाहिए।

रास्पबेरी पाई सेंस हैट को रास्पबेरी पाई के 40-पिन GPIO पुरुष हेडर से कनेक्ट करें, जैसा कि नीचे की छवियों में दिखाया गया है।

ध्यान दें: रास्पबेरी पाई जीपीआईओ के पिन झुकने से बचने के लिए रास्पबेरी पाई 40-पिन जीपीआईओ हेडर से रास्पबेरी पाई सेंस हैट को डिस्कनेक्ट करते समय सावधान रहें।

शेष चार स्क्रू के साथ, रास्पबेरी पाई सेंस हैट को जकड़ें, जैसा कि नीचे की छवियों में दिखाया गया है।

रास्पबेरी पाई पर पावरिंग

अब जब रास्पबेरी पाई सेंस हैट रास्पबेरी पाई से जुड़ा है, तो रास्पबेरी पाई के माइक्रोएसडी कार्ड स्लॉट में रास्पबेरी पाई ओएस के साथ माइक्रोएसडी कार्ड डालें, पावर केबल को रास्पबेरी पाई से कनेक्ट करें, और इसे चालू करें।

रास्पबेरी पाई सेंस हैट पायथन लाइब्रेरी स्थापित करना

रास्पबेरी पाई पर रास्पबेरी पाई सेंस हैट का उपयोग करने के लिए, सेंस-हैट रास्पबेरी पाई ओएस पर पायथन पुस्तकालय स्थापित होना चाहिए। NS सेंस-हैट लाइब्रेरी रास्पबेरी पाई ओएस के आधिकारिक पैकेज रिपॉजिटरी में उपलब्ध है।

रास्पबेरी पाई स्थापित करने के लिए सेंस-हैट रास्पबेरी पाई ओएस पर पायथन पुस्तकालय, पहले निम्नलिखित कमांड के साथ एपीटी पैकेज रिपॉजिटरी कैश को अपडेट करें:

$ sudo उपयुक्त अद्यतन

फिर, निम्न आदेश चलाएँ:

$ sudo apt इंस्टाल सेंस-हैट -y

फ्लास्क माइक्रो वेब फ्रेमवर्क पायथन लाइब्रेरी स्थापित करना

हम अपना मौसम एप्लिकेशन बनाने के लिए फ्लास्क पायथन फ्रेमवर्क का उपयोग करेंगे। आप निम्न आदेश के साथ रास्पबेरी पाई ओएस के आधिकारिक पैकेज रिपॉजिटरी से फ्लास्क स्थापित कर सकते हैं:

$ sudo apt install python3-flask -y

एक परियोजना निर्देशिका बनाना

अपनी प्रोजेक्ट फ़ाइलों को व्यवस्थित करने के लिए प्रोजेक्ट निर्देशिका बनाना एक अच्छा विचार है। प्रोजेक्ट डायरेक्टरी बनाने के लिए ~/काम , निम्न आदेश का प्रयोग करें:

$ एमकेडीआईआर ~/काम

प्रोजेक्ट डायरेक्टरी बनने के बाद, प्रोजेक्ट डायरेक्टरी में निम्नानुसार नेविगेट करें:

$ सीडी ~/काम

रास्पबेरी पाई सेंस हैट का परीक्षण

यह जांचने के लिए कि क्या रास्पबेरी पाई सेंस हैट काम कर रहा है, हम एक साधारण परीक्षण पायथन लिपि लिख सकते हैं। आप एक नई पायथन लिपि बना सकते हैं जिसे कहा जाता है test.py उसके साथ नैनो पाठ संपादक इस प्रकार है:

$ नैनो टेस्ट.py

में निम्न कोड दर्ज करें test.py फ़ाइल। लाइन 1 आयात सेंसहैट से सेंस_हैट मॉड्यूल, लाइन 3 एक बनाता है सेंसहैट ऑब्जेक्ट और में एक संदर्भ संग्रहीत करता है समझ चर, और रेखाएँ ५-६ सभी 8×8 एलईडी के रंग को लाल रंग में सेट करती हैं। एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा .

आप चला सकते हैं test.py निम्नलिखित आदेश के साथ पायथन लिपि:

$python3 test.py

जैसा कि नीचे की छवि में दिखाया गया है, 8×8 एलईडी मैट्रिक्स लाल रंग में चमकना चाहिए।

सेंस हैट के एल ई डी को बंद करने के लिए, चलाएँ स्पष्ट() बिना किसी रंग मूल्य के विधि test.py पायथन लिपि, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है, और चलाएँ test.py फिर से पायथन लिपि।

सेंस हैट के एलईडी को अब बंद कर देना चाहिए, जैसा कि नीचे की छवि में दिखाया गया है।

यदि सेंस हैट ठीक से काम कर रहा है, तो अगले भाग पर जाएँ।

Sense Hat . से मौसम डेटा प्राप्त करना

आप सेंस हैट से सेंसर डेटा का उपयोग करके बहुत आसानी से प्राप्त कर सकते हैं सेंस-हैट पायथन पुस्तकालय। सेंस हैट से सेंसर डेटा प्राप्त करने के लिए, आप एक नई पायथन स्क्रिप्ट बना सकते हैं read_sensor_data.py निम्नलिखित नुसार:

$ नैनो read_sensor_data.py

में निम्न कोड दर्ज करें read_sensor_data.py पायथन फ़ाइल।

सेसेंस_हैटआयातसेंसहैट
से समय आयातनींद
समझ=सेंसहैट()
समझ।स्पष्ट()
जबकि सत्य:
अस्थायी सी=समझ।get_temperature()
अस्थायी=अस्थायी *(9/5)+32
दबाव=समझ।get_दबाव()
नमी=समझ।get_humidity()

प्रिंट('तापमान:% .2f°C/%.2f°Fएन'%(अस्थायी सी,अस्थायी))
प्रिंट('दबाव:% .2f एमबीएन'%(दबाव))
प्रिंट('आर्द्रता:% .2f%%एनएन'%(नमी))
नींद(5)

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा .

उपरोक्त कोड में, पंक्ति 1 और 2 सभी आवश्यक पुस्तकालयों को आयात करते हैं, पंक्ति 4 एक बनाता है सेंसहैट ऑब्जेक्ट, और लाइन 5 सेंस हैट के सभी एल ई डी का उपयोग करके बंद कर देता है स्पष्ट() तरीका। लाइन ७ में जबकि लूप एक अनंत लूप है जो कोड को ८-१६ पंक्तियों में हमेशा के लिए चलाएगा।

पंक्ति 8 में, get_temperature () सेंस हैट के ह्यूमिडिटी सेंसर से तापमान डेटा (डिग्री सेल्सियस में) को पढ़ने के लिए विधि का उपयोग किया जाता है। लाइन 9 में, तापमान डेटा को डिग्री सेल्सियस से डिग्री फ़ारेनहाइट में परिवर्तित किया जाता है। पंक्ति 10 में, गेट_प्रेशर () सेंस हैट के प्रेशर सेंसर से वायुदाब डेटा (मिलीबार में) को पढ़ने के लिए विधि का उपयोग किया जाता है। पंक्ति 11 में, get_humidity () सेंस हैट के ह्यूमिडिटी सेंसर से ह्यूमिडिटी डेटा (% में) को पढ़ने के लिए इस मेथड का इस्तेमाल किया जाता है।

सेंसर डेटा को कंसोल पर प्रिंट करने के लिए लाइन 13-15 का उपयोग किया जाता है, और लाइन 16 का उपयोग सेंसर डेटा को फिर से पढ़ने से पहले 5 सेकंड तक प्रतीक्षा करने के लिए किया जाता है।

आप चला सकते हैं read_sensor_data.py पायथन लिपि इस प्रकार है:

$ python3 read_sensor_data.py

एक बार स्क्रिप्ट चलाने के बाद, सेंसर डेटा कंसोल पर प्रिंट हो जाएगा।

अब जब हम सेंस हैट से सेंसर डेटा पढ़ सकते हैं, तो दबाएं + सी कार्यक्रम को रोकने के लिए।

एक मौसम स्टेशन वेब ऐप बनाना

इस खंड में, हम आपको दिखाएंगे कि मौसम एपीआई और मौसम एप्लिकेशन बनाने के लिए पायथन फ्लास्क वेब फ्रेमवर्क का उपयोग कैसे करें। मौसम एप्लिकेशन मौसम डेटा एपीआई तक पहुंच जाएगा और वास्तविक समय में मौसम डेटा दिखाएगा। इस खंड में चर्चा किए गए सभी कोड GitHub पर उपलब्ध हैं shovon8 / रास्पबेरी-पी-सेंस-हैट-वेदर-ऐप .

सबसे पहले, एक बनाएं सर्वर.py परियोजना निर्देशिका में पायथन लिपि इस प्रकार है:

$ नैनो सर्वर.py

में निम्न कोड दर्ज करें सर्वर.py पायथन फ़ाइल।

सेफ्लास्कआयातफ्लास्क
सेफ्लास्कआयातjsonify
सेफ्लास्कआयातरेंडर_टेम्पलेट
सेफ्लास्कआयातurl_for
सेसेंस_हैटआयातसेंसहैट
अनुप्रयोग=फ्लास्क(__नाम__)
अनुप्रयोग।कॉन्फ़िग['SEND_FILE_MAX_AGE_DEFAULT'] = 0
समझ=सेंसहैट()
समझ।स्पष्ट()
साथअनुप्रयोग।test_request_context():
url_for('स्थिर',फ़ाइल का नाम='style.css')
url_for('स्थिर',फ़ाइल का नाम='एप्लिकेशन.जेएस')
@अनुप्रयोग।मार्ग('/आग')
डीईएफ़आग():
अस्थायी सी=समझ।get_temperature()
अस्थायी=अस्थायी *(9/5)+32
दबाव=समझ।get_दबाव()
दबाव=दबाव *0.0145038
दबाव पी=दबाव *100
नमी=समझ।get_humidity()

वापसीjsonify({
'तापमान':{ 'सी': अस्थायी सी, 'एफ': अस्थायी एफ},
'दबाव':{ 'एमबी': दबाव, 'एचपीए': दबाव,
'साई': दबाव साई, 'पी': दबाव पी},
'नमी': नमी
})
@अनुप्रयोग।मार्ग('/')
डीईएफ़घर():
वापसीरेंडर_टेम्पलेट('./home.html')

फिर दबायें + एक्स के बाद तथा तथा बचाने के लिए सर्वर.py पायथन लिपि।

उपरोक्त कोड में, पंक्ति 1-5 सभी आवश्यक पुस्तकालयों को आयात करती है, पंक्ति 7 एक फ्लास्क ऐप बनाती है, पंक्ति 11 एक SenseHat ऑब्जेक्ट बनाती है, और पंक्ति 12 Sense Hat के सभी LED को बंद कर देती है। लाइन 8 फ्लास्क ऐप के लिए वेब कैशिंग को अक्षम करता है। चूंकि यह ऐप हल्का है, इसलिए कैशिंग की कोई आवश्यकता नहीं है। यदि आप ऐप को संशोधित करना चाहते हैं, तो वेब कैशिंग अक्षम होने से परीक्षण बहुत आसान हो जाएगा।

लाइन्स १८-३१ सेंस हैट से सेंसर डेटा को पढ़ती है और HTTP GET अनुरोध पर JSON फॉर्मेट में API डेटा लौटाती है। /आग वेब सर्वर का समापन बिंदु। लाइन्स ३७-३९ पर वेदर वेब ऐप होमपेज लौटाते हैं / वेब सर्वर का समापन बिंदु। मुखपृष्ठ से प्रदान किया गया है होम.एचटीएमएल फ़ाइल, जो में होनी चाहिए टेम्पलेट/ परियोजना निर्देशिका की निर्देशिका।

लाइन 14-16 का उपयोग तक पहुंच की अनुमति देने के लिए किया जाता है स्टाइल.सीएसएस तथा app.js स्थिर फ़ाइलें। इन फाइलों में होना चाहिए स्थिर/ परियोजना निर्देशिका की निर्देशिका। NS स्टाइल.सीएसएस फ़ाइल को स्टाइल करने के लिए प्रयोग किया जाता है होम.एचटीएमएल होमपेज, और app.js फ़ाइल का उपयोग एपीआई डेटा का अनुरोध करने के लिए किया जाता है /आग समापन बिंदु और मौसम डेटा को अपडेट करें होम.एचटीएमएल हर 5 सेकंड में पेज।

बनाएँ स्थिर/ तथा टेम्पलेट/ परियोजना निर्देशिका में निर्देशिका इस प्रकार है:

$ mkdir -v {स्थिर, टेम्पलेट}

बनाओ होम.एचटीएमएल में फ़ाइल टेम्पलेट/ निर्देशिका इस प्रकार है:

$ नैनो टेम्प्लेट/home.html

में निम्न कोड दर्ज करें होम.एचटीएमएल फ़ाइल।


< एचटीएमएल >
< सिर >
< मेटा नाम='व्यूपोर्ट' विषय='चौड़ाई = उपकरण-चौड़ाई, प्रारंभिक-पैमाना = 1.0'>
< शीर्षक >रास्पबेरी पाई मौसम स्टेशन</ शीर्षक >
< संपर्क रेले='शैली पत्रक' प्रकार='पाठ/सीएसएस'
href='{{ url_for('static', file) }}'/>
</ सिर >
< तन >
< डिव पहचान='विषय'>
< एच 1 >रास्पबेरी पाई मौसम स्टेशन</ एच 1 >

< डिव कक्षा='डेटा-सामग्री'>
< एच 2 >तापमान</ एच 2 >
< डिव कक्षा='डेटा-पंक्ति'>
< डिव कक्षा='डेटा-सेल' पहचान='अस्थायी'>
...
</ डिव >
< डिव कक्षा='डेटा-सेल' पहचान='अस्थायी'>
...
</ डिव >
</ डिव >
</ डिव >

< डिव कक्षा='डेटा-सामग्री'>
< एच 2 >दबाव</ एच 2 >
< डिव कक्षा='डेटा-पंक्ति'>
< डिव कक्षा='डेटा-सेल' पहचान='दबाव एमबी'>
...
</ डिव >
< डिव कक्षा='डेटा-सेल' पहचान='दबाव साई'>
...
</ डिव >
</ डिव >
< डिव कक्षा='डेटा-पंक्ति'>
< डिव कक्षा='डेटा-सेल' पहचान='दबाव एचपीए'>
...
</ डिव >
< डिव कक्षा='डेटा-सेल' पहचान='दबाव पी'>
...
</ डिव >
</ डिव >
</ डिव >

< डिव कक्षा='डेटा-सामग्री'>
< एच 2 >नमी</ एच 2 >
< डिव कक्षा='डेटा-पंक्ति'>
< डिव कक्षा='डेटा-सेल' पहचान='नमी'>
...
</ डिव >
</ डिव >
</ डिव >
</ डिव >

< लिपि प्रकार='पाठ/जावास्क्रिप्ट' एसआरसी='{{ url_for('static', file) }}'></ लिपि >
</ तन >
</ एचटीएमएल >

फिर दबायें + एक्स के बाद तथा तथा बचाने के लिए होम.एचटीएमएल फ़ाइल।

बनाओ स्टाइल.सीएसएस में फ़ाइल स्थिर/ निर्देशिका इस प्रकार है:

$ नैनो स्थैतिक/style.css

में निम्नलिखित कोड दर्ज करें स्टाइल.सीएसएस फ़ाइल।

@आयात यूआरएल('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
* {
गद्दी: 0;
हाशिया: 0;
फ़ॉन्ट परिवार: 'रोबोट', सान्स सेरिफ़;
}
तन{
पृष्ठभूमि: # 737373;
}
एच 1{
प्रदर्शन: खंड मैथा;
रंग: #79DC7B;
पाठ संरेखित: केंद्र;
फ़ॉन्ट वजन: 400;
पृष्ठभूमि: # 000;
गद्दी: 0.5em 0;
}
एच 2{
प्रदर्शन: खंड मैथा;
पृष्ठभूमि: # 000;
रंग: #fff;
पाठ संरेखित: केंद्र;
फ़ॉन्ट वजन: 400;
फ़ॉन्ट आकार: 1em;
}
डेटा-सामग्री {
हाशिया: 10px;
बॉर्डर: 2px ठोस काला;
बॉर्डर-त्रिज्या: ५पीएक्स;
पीछे का रंग: #79DC7B;
}
.डेटा-पंक्ति {
प्रदर्शन:फ्लेक्स;
फ्लेक्स-दिशा:पंक्ति;
}
.डेटा-सेल {
चौड़ाई: १००%;
ऊंचाई: 80px;
प्रदर्शन:फ्लेक्स;
संरेखित-आइटम: केंद्र;
औचित्य-सामग्री: केंद्र;
फ़ॉन्ट वजन: बोल्ड;
फ़ॉन्ट आकार: 1.5em;
रंग: # 006902;
}
.डेटा-सेल:मंडराना {
पृष्ठभूमि: # एफएफई891;
रंग: # एए८६००;
कर्सर: सूचक;
}

फिर दबायें + एक्स के बाद तथा तथा बचाने के लिए स्टाइल.सीएसएस फ़ाइल।

बनाओ app.js में फ़ाइल स्थिर/ निर्देशिका इस प्रकार है:

$ नैनो स्थैतिक/app.js

में निम्न कोड दर्ज करें app.js फ़ाइल।

खिड़की।AddEventListener('भार',मुख्य);
समारोहमुख्य() {
समारोहगेटएपीआईडेटा() {
कहांएचटीटीपी= नयाXMLHttpRequest();

एचटीटीपी।ऑनरेडीस्टेटचेंज = समारोह() {
अगर(यह.तैयार राज्य === 4 && यह.स्थिति === 200) {
अपडेट करें(JSON.पार्स(यह.प्रतिक्रिया पाठ));
}
}

एचटीटीपी।खोलना('पाना', '/आग', सच);
एचटीटीपी।भेजना();
}


समारोहअपडेट करें(एपीडाटा) {
कहांअस्थायी सी=दस्तावेज़।getElementById('अस्थायी');
कहांअस्थायी=दस्तावेज़।getElementById('अस्थायी');
कहांदबावएमबी=दस्तावेज़।getElementById('दबाव एमबी');
कहांदबाव=दस्तावेज़।getElementById('दबाव साई');
कहांदबावHpa=दस्तावेज़।getElementById('दबाव एचपीए');
कहांदबाव पी=दस्तावेज़।getElementById('दबाव पी');
कहांनमी=दस्तावेज़।getElementById('नमी');

अस्थायी सी.आंतरिक HTML =पार्स फ्लोट(एपीडाटा।तापमान.सी).तय करने के लिए(2) + 'डिग्री सेल्सियस';
अस्थायी एफ.आंतरिक HTML =पार्स फ्लोट(एपीडाटा।तापमान.एफ).तय करने के लिए(2) + 'डिग्री फारेनहाइट';

दबावएमबी.आंतरिक HTML =पार्स फ्लोट(एपीडाटा।दबाव.एमबी).तय करने के लिए(2) + 'एमबी';
दबाव साईआंतरिक HTML =पार्स फ्लोट(एपीडाटा।दबाव.साई).तय करने के लिए(2) + 'साई';
दबाव एचपीएआंतरिक HTML =पार्स फ्लोट(एपीडाटा।दबाव.एचपीए).तय करने के लिए(2) + 'एचपीए';
दबाव पी.आंतरिक HTML =पार्स फ्लोट(एपीडाटा।दबाव.पी).तय करने के लिए(2) + ' पी';

नमी।आंतरिक HTML =पार्स फ्लोट(एपीडाटा।नमी).तय करने के लिए(2) + '%';
}


समारोहअनुप्रयोग() {
खिड़की।सेटइंटरवल(समारोह() {
गेटएपीआईडेटा();
}, 5000);
}

अनुप्रयोग();
}

फिर दबायें + एक्स के बाद तथा तथा बचाने के लिए app.js फ़ाइल।

यहाँ, पंक्ति 1 चलती है मुख्य() वेब पेज लोड होने के बाद काम करता है। में मुख्य() समारोह, गेटएपीआईडेटा () फ़ंक्शन AJAX का उपयोग करके मौसम API डेटा प्राप्त करता है और कॉल करता है अपडेट करें() फ़ंक्शन (पंक्ति 10 में) एक बार डेटा सफलतापूर्वक प्राप्त हो जाने के बाद। NS अपडेट करें() फ़ंक्शन एपीआई डेटा का उपयोग करके वेब पेज तत्व को अपडेट करता है।

पंक्ति 20 में, document.getElementById () आईडी के साथ वेब पेज तत्व का संदर्भ प्राप्त करने के लिए विधि का उपयोग किया जाता है अस्थायी सी . लाइन 28 का उपयोग वेब पेज तत्व की सामग्री को बदलने के लिए किया जाता है जिसमें आईडी है अस्थायी सी एपीआई से तापमान (सेल्सियस में) के साथ। इसी तरह, सभी वेब तत्वों (लाइन 21–26) की सामग्री को उनके संबंधित एपीआई डेटा से बदल दिया जाता है।

में अनुप्रयोग() समारोह, गेटएपीआईडेटा () मौसम ऐप में मौसम डेटा को अद्यतित रखने के लिए हर 5 सेकंड (5000 मिलीसेकंड) को कॉल किया जाता है। अंत में, पंक्ति ४६ में, अनुप्रयोग() फ़ंक्शन निष्पादित किया जाता है।

वेब ऐप का परीक्षण करने के लिए, निम्न आदेश दर्ज करें:

$ FLASK_APP=server.py फ्लास्क रन --होस्ट=0.0.0.0

वेदर ऐप को पोर्ट 5000 (डिफ़ॉल्ट रूप से) पर चलाना चाहिए।

यह जांचने के लिए कि क्या वेदर एपीआई काम कर रहा है, निम्नलिखित कमांड चलाएँ:

$ कर्ल -एस http://लोकलहोस्ट:5000/एपीआई | json_pp

जैसा कि आप देख सकते हैं, मौसम एपीआई डेटा कंसोल पर मुद्रित होता है। इसलिए, एपीआई काम कर रहा है।

मौसम ऐप का परीक्षण करने के लिए, पर जाएँ http://लोकलहोस्ट:5000 क्रोमियम वेब ब्राउज़र से। वेदर ऐप को वेब ब्राउजर पर लोड किया जाना चाहिए, लेकिन पहले कोई भी मौसम डेटा प्रदर्शित नहीं होना चाहिए।

कुछ सेकंड के बाद, मौसम ऐप को एपीआई से मौसम डेटा प्राप्त करना समाप्त कर देना चाहिए और इसे प्रदर्शित करना चाहिए।

किसी भी समय, आप दबा सकते हैं + सी वेब सर्वर को रोकने के लिए।

वेदर वेब ऐप के लिए सिस्टमड सर्विस बनाना

इस खंड में, हम आपको दिखाएंगे कि मौसम ऐप के लिए एक सिस्टमड सेवा फ़ाइल कैसे बनाई जाए ताकि यह बूट होने पर स्वचालित रूप से शुरू हो जाए।

सबसे पहले, एक बनाएं मौसम-स्टेशन.सेवा अपनी परियोजना निर्देशिका में इस प्रकार फ़ाइल करें:

$ नैनो Weather-station.service

कोड की निम्नलिखित पंक्तियों को दर्ज करें मौसम-स्टेशन.सेवा फ़ाइल।

[इकाई]
विवरण = रास्पबेरी पाई मौसम स्टेशन वेब ऐप रास्पबेरी पाई सेंस हैट का उपयोग कर रहा है
बाद=नेटवर्क.लक्ष्य

[सेवा]
वर्किंग डायरेक्टरी = / होम / पीआई / वर्क
पर्यावरण=FLASK_APP=server.py
पर्यावरण = FLASK_ENV = उत्पादन
ExecStart=/usr/bin/flask run --host=0.0.0.0
StandardOutput=विरासत
StandardError=विरासत
पुनः प्रारंभ = हमेशा
उपयोगकर्ता = पीआई

[इंस्टॉल]
वांटेडबाय=मल्टी-यूजर.टारगेट

फिर दबायें + एक्स के बाद तथा तथा बचाने के लिए मौसम-स्टेशन.सेवा फ़ाइल।

कॉपी करें मौसम-स्टेशन.सेवा के लिए फ़ाइल /etc/systemd/system/ निम्न आदेश के साथ निर्देशिका:

$ sudo cp -v Weather-station.service /etc/systemd/system/

परिवर्तनों को प्रभावी करने के लिए सिस्टमड डेमॉन को फिर से लोड करें:

$ sudo systemctl डेमॉन-रीलोड

NS मौसम केंद्र systemd सेवा फिलहाल निष्क्रिय होनी चाहिए, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है।

$ sudo systemctl स्थिति weather-station.service

शुरू करें मौसम केंद्र निम्न आदेश के साथ सेवा:

$ sudo systemctl start weather-station.service

जैसा कि आप देख सकते हैं, मौसम केंद्र सेवा अब चल रही है।

$ sudo systemctl स्थिति weather-station.service

अब वह मौसम केंद्र service काम कर रही है, आप इसे निम्न आदेश के साथ रास्पबेरी पाई ओएस के सिस्टम स्टार्टअप में जोड़ सकते हैं:

$ sudo systemctl Weather-station.service सक्षम करें

निम्नलिखित कमांड के साथ अपने रास्पबेरी पाई को रिबूट करें:

$ सूडो रिबूट

एक बार जब आपका रास्पबेरी पाई बूट हो जाता है, मौसम केंद्र सेवा चलनी चाहिए, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है।

$ sudo systemctl स्थिति weather-station.service

अन्य उपकरणों से मौसम ऐप तक पहुंचना

अपने होम नेटवर्क में अन्य उपकरणों से मौसम ऐप तक पहुंचने के लिए, आपको अपने रास्पबेरी पाई का आईपी पता जानना होगा। आप अपने रास्पबेरी पाई 4 का आईपी पता अपने होम राउटर के वेब प्रबंधन इंटरफेस से पा सकते हैं। हमारे मामले में, आईपी पता 192.168.0.103 है, लेकिन यह पता आपके लिए अलग होगा, इसलिए बाद के सभी चरणों में इस पते को अपने पते से बदलना सुनिश्चित करें।

यदि आपके पास रास्पबेरी पाई कंसोल तक पहुंच है, तो आप आईपी पते को भी खोजने के लिए निम्न आदेश चला सकते हैं।

$ होस्टनाम -I

एक बार जब आप अपने रास्पबेरी पाई का आईपी पता जान लेते हैं, तो आप इसे अपने होम नेटवर्क में किसी भी डिवाइस से एक्सेस कर सकते हैं। जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है, हमने एंड्रॉइड स्मार्टफोन से वेदर ऐप को एक्सेस किया है।

निष्कर्ष

इस लेख में, हमने आपको दिखाया कि रास्पबेरी पाई मौसम स्टेशन बनाने के लिए रास्पबेरी पाई सेंस हैट का उपयोग कैसे करें। हमने इस्तेमाल किया सेंस-हैट रास्पबेरी पाई सेंस हैट से मौसम डेटा निकालने के लिए पायथन लाइब्रेरी। फिर, हमने एक मौसम एपीआई और एक वेब एप्लिकेशन बनाने के लिए फ्लास्क पायथन माइक्रो वेब फ्रेमवर्क का उपयोग किया। वेब ऐप को नवीनतम मौसम डेटा के साथ वेब ऐप को अपडेट रखने के लिए हर 5 सेकंड में मौसम एपीआई से मौसम डेटा प्राप्त होता है।