اپنا راسبیری پائی ویدر اسٹیشن بنائیں۔

Build Your Own Raspberry Pi Weather Station



Raspberry Pi Sense Hat ایک اضافی بورڈ ہے جسے Raspberry Pi سنگل بورڈ کمپیوٹرز کے ساتھ استعمال کیا جا سکتا ہے۔ راسبیری پائی سینس ہیٹ میں 8 × 8 ایل ای ڈی ڈسپلے اور 5 بٹن جوائس اسٹک ہے ، اور یہ درج ذیل سینسروں سے لیس ہے۔

  1. گائروسکوپ
  2. ایکسلرومیٹر
  3. میگنیٹومیٹر
  4. درجہ حرارت
  5. بیرومیٹرک پریشر۔
  6. نمی

اس آرٹیکل میں ، میں آپ کو دکھانے جا رہا ہوں کہ کس طرح ازگر API کا استعمال کرتے ہوئے موسمی اسٹیشن ویب ایپلیکیشن بنائی جائے۔ درجہ حرارت ، بیرومیٹرک پریشر ، اور نمی راسبیری پائی سینس ہیٹ کے سینسر۔ اس مضمون کے ساتھ ساتھ چلنے کے لیے ، آپ کو درج ذیل کی ضرورت ہوگی۔







  1. نیٹ ورک کنیکٹوٹی کے ساتھ ایک راسبیری پائی 3 یا راسبیری پائی 4۔
  2. ایک راسبیری پائی سینس ہیٹ ماڈیول۔
  3. مائیکرو USB (Raspberry Pi 3) یا USB Type-C (Raspberry Pi 4) پاور اڈاپٹر۔
  4. راسبیری پائی او ایس کے ساتھ 16 جی بی یا 32 جی بی مائیکرو ایس ڈی کارڈ۔
  5. VNC ریموٹ ڈیسک ٹاپ رسائی یا Raspberry Pi تک SSH رسائی کے لیے ایک لیپ ٹاپ یا ڈیسک ٹاپ کمپیوٹر۔

نوٹ: اس آرٹیکل میں ، ہم راسبیری پائی کے ہیڈ لیس سیٹ اپ کا استعمال کرتے ہوئے VNC یا SSH کے ذریعے راسبیری پائی سے دور سے جڑیں گے۔ اگر آپ SSH یا VNC کے ذریعے اپنے راسبیری پائی تک دور تک رسائی حاصل نہیں کرنا چاہتے ہیں تو آپ کو اپنے مانسٹر ، کی بورڈ اور ماؤس کو اپنے راسبیری پائی سے جوڑنے کی ضرورت ہوگی۔



راسبیری پائی او ایس امیج کو مائیکرو ایس ڈی کارڈ پر فلیش کرنے کا طریقہ سیکھنے کے لیے ، براہ کرم راسبیری پائی امیجر کو انسٹال اور استعمال کرنے کا طریقہ دیکھیں۔ اگر آپ کو اپنے راسبیری پائی پر راسبیری پائی او ایس انسٹال کرنے میں مدد کی ضرورت ہو تو پڑھیں۔ Raspberry Pi 4 پر Raspberry Pi OS کیسے انسٹال کریں۔ . اگر آپ کو راسبیری پائی کے ہیڈ لیس سیٹ اپ میں مدد کی ضرورت ہو تو ، راسبیری پائی 4 پر بیرونی مانیٹر کے بغیر راسبیری پائی OS کو انسٹال اور کنفیگر کرنے کا طریقہ چیک کریں۔



Raspberry Pi Sense Hat کو Raspberry Pi سے مربوط کرنا۔

Raspberry Pi Sense Hat کٹ Raspberry Pi Sense Hat add-on board ، ایک 40 پن مرد سے خاتون ہیڈر ، اور کچھ پیچ اور اسپیکرز کے ساتھ آتی ہے۔





اس سے پہلے کہ آپ سینس ہیٹ بورڈ کو راسبیری پائی سے جوڑ سکیں ، آپ کو 40 پن ہیڈر کو سینس ہیٹ سے جوڑنا ہوگا۔ 40 پن مرد اور خواتین کے ہیڈر کے مرد پنوں کو سینس ہیٹ سے مربوط کریں جیسا کہ ذیل کی تصاویر میں دکھایا گیا ہے۔



راسبیری پائی سنگل بورڈ کمپیوٹرز میں 4 سوراخ ہوتے ہیں جو ایڈ بورڈز یا کیس کو جوڑنے کے لیے استعمال کیے جا سکتے ہیں۔ ایڈ بورڈ کو جوڑنے کے لیے ، راسبیری پائی کے پیچھے سے پیچ داخل کریں ، جیسا کہ ذیل کی تصاویر میں دکھایا گیا ہے۔

پھر ، ایک اسپیسر کو سکرو سے جوڑیں۔

ایک بار جب آپ چاروں پیچ اور اسپیکرز شامل کرلیں ، آپ کا راسبیری پائی اس طرح نظر آنا چاہئے جو نیچے دی گئی تصویر میں دکھایا گیا ہے۔

Raspberry Pi Sense Hat کو Raspberry Pi کے 40 پن GPIO مرد ہیڈر سے مربوط کریں ، جیسا کہ ذیل کی تصاویر میں دکھایا گیا ہے۔

نوٹ: Raspberry Pi Sense Hat کو Raspberry Pi 40-pin GPIO ہیڈر سے منقطع کرتے وقت محتاط رہیں تاکہ Raspberry Pi GPIO کے پنوں کو موڑنے سے بچ سکیں۔

چار باقی پیچ کے ساتھ ، راسبیری پائی سینس ہیٹ کو جکڑیں ، جیسا کہ ذیل کی تصاویر میں دکھایا گیا ہے۔

راسبیری پائی پر طاقت

اب چونکہ راسبیری پائی سینس ہیٹ راسبیری پائی سے منسلک ہے ، راسبیری پائی او ایس کے ساتھ مائیکرو ایس ڈی کارڈ کو راسبیری پائی کے مائیکرو ایس ڈی کارڈ سلاٹ میں داخل کریں ، پاور کیبل کو راسبیری پائی سے جوڑیں ، اور اسے آن کریں۔

Raspberry Pi Sense Hat Python Library کو انسٹال کرنا۔

Raspberry Pi پر Raspberry Pi Sense Hat استعمال کرنے کے لیے ، سینس ٹوپی راسبیری پائی او ایس پر ازگر لائبریری انسٹال ہونی چاہیے۔ کی سینس ٹوپی راسبیری پائی او ایس کے آفیشل پیکیج ذخیرے میں لائبریری دستیاب ہے۔

راسبیری پائی انسٹال کرنے کے لئے۔ سینس ٹوپی راسبیری پائی او ایس پر ازگر لائبریری ، پہلے درج ذیل کمانڈ کے ساتھ اے پی ٹی پیکیج ریپوزٹری کیشے کو اپ ڈیٹ کریں۔

$ sudo apt اپ ڈیٹ۔

پھر ، درج ذیل کمانڈ چلائیں:

$ sudo apt install -sense -hat -y۔

فلاسک مائیکرو ویب فریم ورک ازگر لائبریری انسٹال کرنا۔

ہم اپنی موسمی ایپلی کیشن بنانے کے لیے فلاسک ازگر کا فریم ورک استعمال کریں گے۔ آپ راسبیری پائی او ایس کے آفیشل پیکیج ذخیرے سے فلاسک درج ذیل کمانڈ کے ساتھ انسٹال کر سکتے ہیں۔

$ sudo apt python3 -flask -y انسٹال کریں۔

پروجیکٹ ڈائرکٹری بنانا

اپنی پروجیکٹ فائلوں کو ترتیب دینے کے لیے پروجیکٹ ڈائرکٹری بنانا اچھا خیال ہے۔ پروجیکٹ ڈائرکٹری بنانے کے لیے۔ ~/کام ، درج ذیل کمانڈ استعمال کریں:

$ mkdir ~/کام۔

ایک بار جب پروجیکٹ ڈائرکٹری بن جاتی ہے ، پروجیکٹ ڈائرکٹری پر اس طرح جائیں:

$ cd ~/کام۔

راسبیری پائی سینس ہیٹ کی جانچ۔

یہ جانچنے کے لیے کہ آیا راسبیری پائی سینس ہیٹ کام کر رہی ہے ، ہم ایک سادہ ٹیسٹ ازگر اسکرپٹ لکھ سکتے ہیں۔ آپ ایک نیا ازگر اسکرپٹ بنا سکتے ہیں جسے کہا جاتا ہے۔ test.py کے ساتہ نینو ٹیکسٹ ایڈیٹر مندرجہ ذیل ہے:

$ nano test.py

میں درج ذیل کوڈ درج کریں۔ test.py فائل. لائن 1 درآمد سینس ہیٹ۔ سے سینس_ہیٹ ماڈیول ، لائن 3 ایک بناتا ہے۔ سینس ہیٹ۔ آبجیکٹ اور میں ایک حوالہ ذخیرہ کرتا ہے۔ احساس متغیر ، اور 5–6 لائنیں تمام 8 × 8 ایل ای ڈی کا رنگ سرخ کرتی ہیں۔ ایک بار جب آپ کام کرچکے ہیں ، دبائیں۔ + ایکس اس کے بعد اور اور .

آپ چلا سکتے ہیں۔ test.py ازگر کی اسکرپٹ درج ذیل کمانڈ کے ساتھ:

$ python3 test.py

8 × 8 ایل ای ڈی میٹرکس کو سرخ رنگ میں چمکنا چاہیے جیسا کہ نیچے دی گئی تصویر میں دکھایا گیا ہے۔

سینس ہیٹ کی ایل ای ڈی کو آف کرنے کے لیے ، چلائیں۔ صاف () میں بغیر کسی رنگ کی قیمت کے طریقہ کار۔ test.py ازگر اسکرپٹ ، جیسا کہ نیچے اسکرین شاٹ میں دکھایا گیا ہے ، اور چلائیں۔ test.py ازگر کا سکرپٹ دوبارہ۔

سینس ہیٹ کی ایل ای ڈی کو اب بند کر دینا چاہیے ، جیسا کہ نیچے دی گئی تصویر میں دکھایا گیا ہے۔

اگر سینس ہیٹ صحیح طریقے سے کام کر رہا ہے تو پھر اگلے سیکشن پر جائیں۔

سینس ہیٹ سے موسم کا ڈیٹا حاصل کرنا۔

آپ سینس ہیٹ سے سینسر ڈیٹا بہت آسانی سے حاصل کر سکتے ہیں سینس ٹوپی ازگر لائبریری۔ سینس ہیٹ سے سینسر ڈیٹا بازیافت کرنے کے لیے ، آپ ایک نیا ازگر اسکرپٹ بنا سکتے ہیں۔ read_sensor_data.py حسب ذیل:

$ nano read_sensor_data.py

میں درج ذیل کوڈ درج کریں۔ read_sensor_data.py ازگر کی فائل۔

سےسینس_ہیٹدرآمدسینس ہیٹ۔
سے وقت درآمدنیند
احساس=سینس ہیٹ۔()
احساس.صاف()
جبکہ سچ ہے۔:
tempC=احساس.درجہ حرارت حاصل کریں۔()
tempF=tempC *(/)+32۔
دباؤ=احساس.دباؤ حاصل کریں۔()
نمی=احساس.نمی حاصل کریں()

پرنٹ کریں(درجہ حرارت:٪ .2f ° C/٪. 2f ° Fn'٪(tempC،tempF))
پرنٹ کریں(دباؤ:٪ .2f mbn'٪(دباؤ))
پرنٹ کریں(نمی:٪ .2f ٪٪nn'٪(نمی))
نیند()

ایک بار جب آپ کام کرچکے ہیں ، دبائیں۔ + ایکس اس کے بعد اور اور .

مندرجہ بالا کوڈ میں ، لائن 1 اور 2 تمام مطلوبہ لائبریریوں کو درآمد کرتی ہے ، لائن 4 تخلیق کرتی ہے a سینس ہیٹ۔ آبجیکٹ ، اور لائن 5 سینس ہیٹ کے تمام ایل ای ڈی کو بند کر دیتا ہے صاف () طریقہ لائن 7 میں جبکہ لوپ ایک لامحدود لوپ ہے جو کوڈ کو 8–16 لائنوں میں ہمیشہ کے لیے چلائے گا۔

لائن 8 میں ، درجہ حرارت حاصل کریں () سینس ہیٹ کے نمی سینسر سے درجہ حرارت کا ڈیٹا (ڈگری سینٹی گریڈ میں) پڑھنے کے لیے طریقہ استعمال کیا جاتا ہے۔ لائن 9 میں ، درجہ حرارت کے اعداد و شمار کو ڈگری سیلسیس سے ڈگری فارن ہائیٹ میں تبدیل کیا جاتا ہے۔ لائن 10 میں ، get_pressure () سینس ہیٹ کے پریشر سینسر سے ہوا کے دباؤ کا ڈیٹا (ملی بار میں) پڑھنے کے لیے طریقہ استعمال کیا جاتا ہے۔ لائن 11 میں ، نمی حاصل کریں () سینس ہیٹ کے نمی سینسر سے نمی کا ڈیٹا (٪ میں) پڑھنے کے لیے طریقہ استعمال کیا جاتا ہے۔

لائنز 13–15 کو سینسر ڈیٹا کو کنسول پر پرنٹ کرنے کے لیے استعمال کیا جاتا ہے ، اور لائن 16 کو سینسر ڈیٹا کو دوبارہ پڑھنے سے پہلے 5 سیکنڈ تک انتظار کرنے کے لیے استعمال کیا جاتا ہے۔

آپ چلا سکتے ہیں۔ read_sensor_data.py ازگر کا اسکرپٹ مندرجہ ذیل ہے:

$ python3 read_sensor_data.py

ایک بار اسکرپٹ چلنے کے بعد ، سینسر ڈیٹا کو کنسول پر پرنٹ کیا جائے گا۔

اب کہ ہم سینس ہیٹ سے سینسر ڈیٹا پڑھ سکتے ہیں ، دبائیں۔ + ج۔ پروگرام کو روکنے کے لیے۔

ویدر سٹیشن ویب ایپ بنانا

اس سیکشن میں ، ہم آپ کو دکھائیں گے کہ موسم کا API اور موسم کی ایپلی کیشن بنانے کے لیے ازگر فلاسک ویب فریم ورک کا استعمال کیسے کریں۔ موسم کی ایپلی کیشن موسم کے ڈیٹا API تک رسائی حاصل کرے گی اور موسم کا ڈیٹا حقیقی وقت میں دکھائے گی۔ اس سیکشن میں زیر بحث تمام کوڈ GitHub پر دستیاب ہے۔ shovon8 / raspberry-pi-sense-hat-weather-app .

سب سے پہلے ، ایک بنائیں۔ server.py پروجیکٹ ڈائرکٹری میں ازگر اسکرپٹ مندرجہ ذیل ہے:

$ nano server.py

میں درج ذیل کوڈ درج کریں۔ server.py ازگر کی فائل۔

سےفلاسکدرآمدفلاسک
سےفلاسکدرآمدjsonify
سےفلاسکدرآمدrender_template
سےفلاسکدرآمدurl_for
سےسینس_ہیٹدرآمدسینس ہیٹ۔
ایپ=فلاسک(__ نام__)
ایپتشکیل['SEND_FILE_MAX_AGE_DEFAULT'] =
احساس=سینس ہیٹ۔()
احساس.صاف()
کے ساتھایپtest_request_context():
url_for('جامد'،فائل کا نام='style.css')
url_for('جامد'،فائل کا نام='app.js')
۔ایپراسته('/آگ')
دفاعآگ():
tempC=احساس.درجہ حرارت حاصل کریں۔()
tempF=tempC *(/)+32۔
دباؤ=احساس.دباؤ حاصل کریں۔()
پریشر پی ایس آئی=دباؤ *0.0145038۔
پریشر پی=دباؤ *100۔
نمی=احساس.نمی حاصل کریں()

واپسیjsonify({
'درجہ حرارت':{ 'سی': tempC، 'ایف': tempF}،
'دباؤ':{ 'ایم بی': دباؤ، 'ایچ پی اے': دباؤ،
'پی ایس آئی': پریشر پی ایس آئی۔، 'پی': پریشر پی۔}،
'نمی': نمی
})
۔ایپراسته('/')
دفاعگھر():
واپسیrender_template('./home.html')

پھر ، دبائیں۔ + ایکس اس کے بعد اور اور بچانے کے لیے server.py ازگر کا سکرپٹ۔

مندرجہ بالا کوڈ میں ، لائن 1–5 تمام مطلوبہ لائبریریوں کو درآمد کرتی ہے ، لائن 7 فلاسک ایپ بناتی ہے ، لائن 11 سینس ہیٹ آبجیکٹ بناتی ہے ، اور لائن 12 سینس ہیٹ کے تمام ایل ای ڈی کو بند کردیتی ہے۔ لائن 8 فلاسک ایپ کے لیے ویب کیچنگ کو غیر فعال کر دیتی ہے۔ چونکہ یہ ایپ ہلکا پھلکا ہے ، اس لیے کیشنگ کی ضرورت نہیں ہے۔ اگر آپ ایپ میں ترمیم کرنا چاہتے ہیں ، تو ویب کیچنگ کو غیر فعال کرنے سے جانچ بہت آسان ہوجائے گی۔

لائنز 18–31 سینس ہیٹ سے سینسر ڈیٹا پڑھتی ہیں اور API ڈیٹا کو JSON فارمیٹ میں HTTP GET درخواست پر واپس کرتی ہیں /آگ ویب سرور کا اختتامی نقطہ۔ لائنز 37-39 موسم ویب ایپ کا ہوم پیج واپس کرتی ہیں۔ / ویب سرور کا اختتامی نقطہ۔ ہوم پیج سے پیش کیا گیا ہے۔ home.html فائل ، جس میں ہونا چاہئے ٹیمپلیٹس/ پروجیکٹ ڈائرکٹری کی ڈائریکٹری.

لائنز 14–16 تک رسائی کی اجازت کے لیے استعمال ہوتی ہیں۔ style.css اور app.js جامد فائلیں یہ فائلیں میں ہونی چاہئیں۔ جامد/ پروجیکٹ ڈائرکٹری کی ڈائریکٹری. کی style.css فائل کو سٹائل کرنے کے لیے استعمال کیا جاتا ہے۔ home.html ہوم پیج ، اور app.js فائل سے API ڈیٹا کی درخواست کے لیے استعمال کیا جاتا ہے۔ /آگ اختتامی نقطہ اور پر موسم کا ڈیٹا اپ ڈیٹ کریں۔ home.html ہر 5 سیکنڈ میں صفحہ

بنائیں۔ جامد/ اور ٹیمپلیٹس/ پروجیکٹ ڈائریکٹری میں ڈائریکٹری مندرجہ ذیل ہے:

$ mkdir -v {جامد ، ٹیمپلیٹس}

بنائیے ایک home.html فائل میں ٹیمپلیٹس/ مندرجہ ذیل ڈائریکٹری:

$ نینو ٹیمپلیٹس/home.html۔

میں درج ذیل کوڈ درج کریں۔ home.html فائل.


< html >
< سر >
< میٹا نام='ویو پورٹ' مواد='width = device-width، initial-scale = 1.0'>
< عنوان >راسبیری پائی ویدر اسٹیشن۔</ عنوان >
< لنک rel='سٹائل شیٹ' قسم='ٹیکسٹ/سی ایس ایس'
href='{{url_for (' static '، filename =' style.css ')}}'/>
</ سر >
< جسم >
< div آئی ڈی='مواد'>
< h1 >راسبیری پائی ویدر اسٹیشن۔</ h1 >

< div کلاس='ڈیٹا مواد'>
< h2 >درجہ حرارت</ h2 >
< div کلاس='ڈیٹا صف'>
< div کلاس='ڈیٹا سیل' آئی ڈی='tempC'>
...
</ div >
< div کلاس='ڈیٹا سیل' آئی ڈی='tempF'>
...
</ div >
</ div >
</ div >

< div کلاس='ڈیٹا مواد'>
< h2 >دباؤ</ h2 >
< div کلاس='ڈیٹا صف'>
< div کلاس='ڈیٹا سیل' آئی ڈی='پریشر ایم بی'>
...
</ div >
< div کلاس='ڈیٹا سیل' آئی ڈی='پریشر پی ایس آئی'>
...
</ div >
</ div >
< div کلاس='ڈیٹا صف'>
< div کلاس='ڈیٹا سیل' آئی ڈی='پریشر ایچ پی اے'>
...
</ div >
< div کلاس='ڈیٹا سیل' آئی ڈی='پریشر پی'>
...
</ div >
</ div >
</ div >

< div کلاس='ڈیٹا مواد'>
< h2 >نمی</ h2 >
< div کلاس='ڈیٹا صف'>
< div کلاس='ڈیٹا سیل' آئی ڈی='نمی'>
...
</ div >
</ div >
</ div >
</ div >

< سکرپٹ قسم='ٹیکسٹ/جاوا اسکرپٹ' src='{{url_for (' جامد '، فائل نام =' app.js ')}}'></ سکرپٹ >
</ جسم >
</ html >

پھر ، دبائیں۔ + ایکس اس کے بعد اور اور بچانے کے لیے home.html فائل.

بنائیے ایک style.css فائل میں جامد/ مندرجہ ذیل ڈائریکٹری:

$ nano جامد/style.css۔

میں درج ذیل کوڈ درج کریں۔ style.css فائل.

port امپورٹ url('https://fonts.googleapis.com/css2؟family=Roboto&display=swap')؛
* {
بھرتی: ؛
مارجن: ؛
فونٹ فیملی: 'روبوٹ'، سینز سیرف؛
}
جسم{
پس منظر: # 737373۔؛
}
h1{
ڈسپلے: بلاک؛
رنگ: #79 ڈی سی 7 بی۔؛
متن کی صف بندی: مرکز؛
فونٹ وزن: 400۔؛
پس منظر: # 000۔؛
بھرتی: 0.5em ؛
}
h2{
ڈسپلے: بلاک؛
پس منظر: # 000۔؛
رنگ: #fff؛
متن کی صف بندی: مرکز؛
فونٹ وزن: 400۔؛
حرف کا سائز: 1em؛
}
.data- مواد {
مارجن: 10px؛
سرحد: 2px ٹھوس سیاہ؛
سرحد کا رداس: 5px؛
پس منظر کا رنگ: #79 ڈی سی 7 بی۔؛
}
.data-row {
ڈسپلے:فلیکس؛
فلیکس سمت:قطار؛
}
ڈیٹا سیل {
چوڑائی: 100٪؛
اونچائی: 80px؛
ڈسپلے:فلیکس؛
صف بندی کی اشیاء: مرکز؛
جواز-مواد: مرکز؛
فونٹ وزن: جرات مندانہ؛
حرف کا سائز: 1.5em؛
رنگ: # 006902۔؛
}
ڈیٹا سیل:گھومنا {
پس منظر: # ایف ایف ای 891۔؛
رنگ: # AA8600۔؛
کرسر: اشارہ؛
}

پھر ، دبائیں۔ + ایکس اس کے بعد اور اور بچانے کے لیے style.css فائل.

ایک بنائیں۔ app.js فائل میں جامد/ مندرجہ ذیل ڈائریکٹری:

$ nano جامد/app.js۔

میں درج ذیل کوڈ درج کریں۔ app.js فائل.

کھڑکیaddEventListener('بوجھ'،مرکزی)؛
فنکشنمرکزی() {
فنکشنgetAPIData() {
کہاںhttp= نئیXMLHttpRequest()؛

http.onreadystatechange = فنکشن() {
اگر(یہ.ریڈی سٹیٹ === && یہ.حالت === 200۔) {
اپ ڈیٹ(JSONتجزیہ(یہ.جوابی متن))؛
}
}

http.کھلا('حاصل'، '/آگ'، سچ)؛
http.بھیجیں()؛
}


فنکشناپ ڈیٹ(apiData) {
کہاںtempC=دستاویزgetElementById('tempC')؛
کہاںtempF=دستاویزgetElementById('tempF')؛
کہاںپریشر ایم بی=دستاویزgetElementById('پریشر ایم بی')؛
کہاںپریشر پی ایس آئی=دستاویزgetElementById('پریشر پی ایس آئی')؛
کہاںدباؤ ایچ پی اے=دستاویزgetElementById('پریشر ایچ پی اے')؛
کہاںپریشر پی=دستاویزgetElementById('پریشر پی')؛
کہاںنمی=دستاویزgetElementById('نمی')؛

tempCاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.درجہ حرارت.ج۔).فکسڈ() + '° C'؛
tempFاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.درجہ حرارت.ایف).فکسڈ() + '° F'؛

پریشر ایم بیاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.دباؤ.mb).فکسڈ() + 'ایم بی'؛
پریشر پی ایس آئیاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.دباؤ.پی ایس آئی).فکسڈ() + 'پی ایس آئی'؛
دباؤ ایچ پی اےاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.دباؤ.ایچ پی اے).فکسڈ() + 'ایچ پی اے'؛
پریشر پیاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.دباؤ.پی۔).فکسڈ() + 'پی'؛

نمیاندرونی ایچ ٹی ایم ایل =پارس فلوٹ(apiData.نمی).فکسڈ() + '٪'؛
}


فنکشنایپ() {
کھڑکیsetInterval(فنکشن() {
getAPIData()؛
}، 5000۔)؛
}

ایپ()؛
}

پھر ، دبائیں۔ + ایکس اس کے بعد اور اور بچانے کے لیے app.js فائل.

یہاں ، لائن 1 چلاتی ہے۔ مرکزی() کام کریں جب ویب پیج لوڈنگ ختم ہوجائے۔ میں مرکزی() فنکشن ، getAPIData () فنکشن AJAX کا استعمال کرتے ہوئے موسم API ڈیٹا حاصل کرتا ہے اور کال کرتا ہے۔ اپ ڈیٹ() فنکشن (لائن 10 میں) ایک بار ڈیٹا کامیابی کے ساتھ ملنے کے بعد۔ کی اپ ڈیٹ() فنکشن API ڈیٹا کا استعمال کرتے ہوئے ویب پیج عنصر کو اپ ڈیٹ کرتا ہے۔

لائن 20 میں ، document.getElementById () آئی ڈی کے ساتھ ویب پیج عنصر کا حوالہ حاصل کرنے کے لیے طریقہ استعمال کیا جاتا ہے۔ tempC . لائن 28 ویب پیج عنصر کے مواد کو تبدیل کرنے کے لیے استعمال ہوتی ہے جس میں آئی ڈی ہے۔ tempC درجہ حرارت کے ساتھ (سیلسیس میں) API سے۔ اسی طرح ، تمام ویب عناصر (لائنز 21–26) کے مندرجات کو ان کے متعلقہ API ڈیٹا سے تبدیل کیا جاتا ہے۔

میں ایپ () فنکشن ، getAPIData () ہر 5 سیکنڈ (5000 ملی سیکنڈ) کہا جاتا ہے تاکہ موسم کا ڈیٹا موسم ایپ میں تازہ ترین رہے۔ آخر میں ، لائن 46 میں ، ایپ () فنکشن پر عمل کیا جاتا ہے

ویب ایپ کو جانچنے کے لیے درج ذیل کمانڈ درج کریں:

$ FLASK_APP = server.py فلاسک رن -ہوسٹ = 0.0.0.0۔

موسم ایپ پورٹ 5000 پر بطور ڈیفالٹ چلنی چاہیے۔

یہ جانچنے کے لیے کہ ویدر API کام کر رہا ہے ، درج ذیل کمانڈ کو چلائیں:

$ curl -s http: // localhost: 5000/api۔ | json_pp

جیسا کہ آپ دیکھ سکتے ہیں ، موسم API ڈیٹا کنسول پر پرنٹ کیا جاتا ہے۔ لہذا ، API کام کر رہا ہے۔

ویدر ایپ کو جانچنے کے لیے وزٹ کریں۔ http: // localhost: 5000۔ Chromium ویب براؤزر سے۔ ویدر ایپ کو ویب براؤزر پر لوڈ کیا جانا چاہیے ، لیکن پہلے موسم کا کوئی ڈیٹا ظاہر نہیں ہونا چاہیے۔

کچھ سیکنڈ کے بعد ، موسم ایپ کو API سے موسم کا ڈیٹا لانا ختم کرنا چاہیے اور اسے ظاہر کرنا چاہیے۔

کسی بھی وقت ، آپ دبائیں۔ + ج۔ ویب سرور کو روکنے کے لیے۔

ویدر ویب ایپ کے لیے سسٹمڈ سروس بنانا۔

اس سیکشن میں ، ہم آپ کو دکھائیں گے کہ موسم ایپ کے لیے سسٹم ڈی سروس فائل کیسے بنائی جائے تاکہ یہ خود بخود بوٹنگ کے بعد شروع ہو جائے۔

سب سے پہلے ، ایک بنائیں۔ weather-station.service اپنی پروجیکٹ ڈائرکٹری میں فائل درج ذیل ہے:

$ nano weather-station.service

میں کوڈ کی درج ذیل لائنیں درج کریں۔ weather-station.service فائل.

[یونٹ]
تفصیل = Raspberry Pi Weather Station Web App Raspberry Pi Sense Hat کا استعمال کرتے ہوئے۔
کے بعد = network. target

[سروس]
ورکنگ ڈائریکٹری =/گھر/پی آئی/کام۔
ماحول = FLASK_APP = server.py
ماحولیات = FLASK_ENV = پیداوار۔
ExecStart =/usr/bin/flask run --host = 0.0.0.0۔
StandardOutput = وراثت۔
StandardError = وراثت۔
دوبارہ شروع کریں = ہمیشہ۔
صارف = pi

[انسٹال کریں]
WantedBy = multi-user.target۔

پھر ، دبائیں۔ + ایکس اس کے بعد اور اور بچانے کے لیے weather-station.service فائل.

کاپی کریں۔ weather-station.service فائل کو /etc/systemd/system/ مندرجہ ذیل کمانڈ کے ساتھ ڈائریکٹری:

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

مندرجہ ذیل کے طور پر تبدیلیوں کو لاگو کرنے کے لیے systemd ڈیمون کو دوبارہ لوڈ کریں:

$ sudo systemctl ڈیمون-دوبارہ لوڈ۔

کی موسمی اسٹیشن systemd سروس اس وقت غیر فعال ہونی چاہیے ، جیسا کہ نیچے اسکرین شاٹ میں دکھایا گیا ہے۔

$ sudo systemctl status weather-station.service

شروع کریں موسمی اسٹیشن مندرجہ ذیل کمانڈ کے ساتھ خدمت کریں:

$ sudo systemctl start weather-station.service

جیسا کہ آپ دیکھ سکتے ہیں ، موسمی اسٹیشن سروس اب چل رہی ہے.

$ sudo systemctl status weather-station.service

اب کہ موسمی اسٹیشن سروس کام کر رہی ہے ، آپ اسے Raspberry Pi OS کے سسٹم سٹارٹ اپ میں درج ذیل کمانڈ کے ساتھ شامل کر سکتے ہیں۔

$ sudo systemctl weather-station.service کو فعال کرتا ہے۔

اپنے راسبیری پائی کو مندرجہ ذیل کمانڈ سے دوبارہ شروع کریں:

$ sudo ریبوٹ۔

ایک بار جب آپ کا راسبیری پائی بوٹ ہوجائے تو ، موسمی اسٹیشن سروس چلنی چاہیے ، جیسا کہ نیچے اسکرین شاٹ میں دکھایا گیا ہے۔

$ sudo systemctl status weather-station.service

دیگر آلات سے ویدر ایپ تک رسائی۔

اپنے ہوم نیٹ ورک کے دیگر آلات سے موسم ایپ تک رسائی حاصل کرنے کے لیے ، آپ کو اپنے راسبیری پائی کا آئی پی ایڈریس جاننے کی ضرورت ہے۔ آپ اپنے راسبیری پائی 4 کا آئی پی ایڈریس اپنے گھر کے روٹر کے ویب مینجمنٹ انٹرفیس سے تلاش کرسکتے ہیں۔ ہمارے معاملے میں ، IP ایڈریس 192.168.0.103 ہے ، لیکن یہ ایڈریس آپ کے لیے مختلف ہوگا ، اس لیے اس ایڈریس کو اپنے بعد کے تمام مراحل میں تبدیل کرنا یقینی بنائیں۔

اگر آپ کو راسبیری پائی کنسول تک رسائی حاصل ہے تو ، آپ آئی پی ایڈریس کو تلاش کرنے کے لئے درج ذیل کمانڈ چلا سکتے ہیں۔

$ hostname -I۔

ایک بار جب آپ اپنے راسبیری پائی کا آئی پی ایڈریس جان لیں ، آپ اسے اپنے ہوم نیٹ ورک کے کسی بھی ڈیوائس سے حاصل کرسکتے ہیں۔ جیسا کہ نیچے اسکرین شاٹ میں دکھایا گیا ہے ، ہم نے اینڈرائیڈ اسمارٹ فون سے موسم ایپ تک رسائی حاصل کرلی ہے۔

نتیجہ

اس آرٹیکل میں ، ہم نے آپ کو دکھایا کہ راسبیری پائی سینس ہیٹ کو راسبیری پائی ویدر اسٹیشن بنانے کے لیے کیسے استعمال کیا جائے۔ ہم نے استعمال کیا۔ سینس ٹوپی راسبیری پائی سینس ہیٹ سے موسم کا ڈیٹا نکالنے کے لیے ازگر کی لائبریری۔ پھر ، ہم نے موسم کا API اور ویب ایپلی کیشن بنانے کے لیے فلاسک ازگر مائیکرو ویب فریم ورک کا استعمال کیا۔ ویب ایپ ہر 5 سیکنڈ میں موسمی API سے موسم کا ڈیٹا حاصل کرتی ہے تاکہ ویب ایپ کو تازہ ترین موسمی اعداد و شمار کے ساتھ تازہ رکھیں۔