আপনার নিজের রাস্পবেরি পাই ওয়েদার স্টেশন তৈরি করুন

Build Your Own Raspberry Pi Weather Station



রাস্পবেরি পাই সেন্স হাট একটি অ্যাড-অন বোর্ড যা রাস্পবেরি পাই একক-বোর্ড কম্পিউটারের সাথে ব্যবহার করা যেতে পারে। রাস্পবেরি পাই সেন্স হ্যাটটিতে 8 × 8 এলইডি ডিসপ্লে এবং 5-বোতাম জয়স্টিক রয়েছে এবং এটি নিম্নলিখিত সেন্সর দিয়ে সজ্জিত:

  1. জাইরোস্কোপ
  2. অ্যাকসিলরোমিটার
  3. ম্যাগনেটোমিটার
  4. তাপমাত্রা
  5. আবহমানসংক্রান্ত চাপ
  6. আর্দ্রতা

এই নিবন্ধে, আমি আপনাকে দেখাব কিভাবে একটি পাইথন API ভিত্তিক আবহাওয়া স্টেশন ওয়েব অ্যাপ্লিকেশন তৈরি করে তাপমাত্রা , আবহমানসংক্রান্ত চাপ , এবং আর্দ্রতা রাস্পবেরি পাই সেন্স হাটের সেন্সর। এই নিবন্ধটি অনুসরণ করার জন্য, আপনার নিম্নলিখিতগুলির প্রয়োজন হবে:







  1. নেটওয়ার্ক সংযোগ সহ একটি রাস্পবেরি পাই 3 বা রাস্পবেরি পাই 4।
  2. একটি রাস্পবেরি পাই সেন্স হাট মডিউল।
  3. একটি মাইক্রো-ইউএসবি (রাস্পবেরি পাই 3) বা ইউএসবি টাইপ-সি (রাস্পবেরি পাই 4) পাওয়ার অ্যাডাপ্টার।
  4. রাস্পবেরি পাই ওএস সহ একটি 16 জিবি বা 32 জিবি মাইক্রোএসডি কার্ড।
  5. VNC রিমোট ডেস্কটপ অ্যাক্সেস বা রাস্পবেরি পাইতে SSH অ্যাক্সেসের জন্য একটি ল্যাপটপ বা ডেস্কটপ কম্পিউটার।

বিঃদ্রঃ: এই নিবন্ধে, আমরা রাস্পবেরি পাই এর হেডলেস সেটআপ ব্যবহার করে ভিএনসি বা এসএসএইচ এর মাধ্যমে দূর থেকে রাস্পবেরি পাইয়ের সাথে সংযোগ স্থাপন করব। যদি আপনি SSH বা VNC এর মাধ্যমে আপনার রাস্পবেরি পাই দূর থেকে অ্যাক্সেস করতে না চান, তাহলে আপনাকে আপনার রাস্পবেরি পাইতে একটি মনিটর, একটি কীবোর্ড এবং একটি মাউস সংযুক্ত করতে হবে।



কিভাবে একটি মাইক্রোএসডি কার্ডে রাস্পবেরি পাই ওএস ইমেজ ফ্ল্যাশ করতে হয় তা জানতে, কিভাবে রাস্পবেরি পাই ইমেজার ইনস্টল এবং ব্যবহার করবেন তা উল্লেখ করুন। আপনার রাস্পবেরি পাইতে রাস্পবেরি পাই ওএস ইনস্টল করার জন্য সাহায্যের প্রয়োজন হলে পড়ুন রাস্পবেরি পাই 4 এ কীভাবে রাস্পবেরি পাই ওএস ইনস্টল করবেন । রাস্পবেরি পাই এর হেডলেস সেটআপের জন্য যদি আপনার সাহায্যের প্রয়োজন হয়, তাহলে বাহ্যিক মনিটর ছাড়া রাস্পবেরি পাই 4 তে রাস্পবেরি পাই ওএস কিভাবে ইনস্টল এবং কনফিগার করবেন তা দেখুন।



রাস্পবেরি পাই সেন্স হাটকে রাস্পবেরি পাইয়ের সাথে সংযুক্ত করা হচ্ছে

রাস্পবেরি পাই সেন্স হাট কিট রাস্পবেরি পাই সেন্স হ্যাট অ্যাড-অন বোর্ড, 40-পিন পুরুষ-থেকে-মহিলা হেডার এবং কিছু স্ক্রু এবং স্পেসার নিয়ে আসে।





আপনি রাস্পবেরি পাইতে সেন্স হ্যাট বোর্ড সংযুক্ত করার আগে, আপনাকে 40-পিন হেডারটি সেন্স হাটের সাথে সংযুক্ত করতে হবে। 40-পিন পুরুষ-মহিলা হেডারের পুরুষ পিনগুলিকে সেন্স হাটের সাথে সংযুক্ত করুন যেমনটি নীচের ছবিতে দেখানো হয়েছে।



রাস্পবেরি পাই একক-বোর্ড কম্পিউটারে 4 টি ছিদ্র রয়েছে যা অ্যাড-অন বোর্ড বা কেস সংযুক্ত করতে ব্যবহার করা যেতে পারে। অ্যাড-অন বোর্ড সংযুক্ত করতে, রাস্পবেরি পাই এর পিছন থেকে স্ক্রু ertোকান, যেমন নীচের ছবিতে দেখানো হয়েছে।

তারপরে, স্ক্রুতে একটি স্পেসার সংযুক্ত করুন।

একবার আপনি চারটি স্ক্রু এবং স্পেসার যুক্ত করলে, আপনার রাস্পবেরি পাইটি নীচের ছবিতে দেখানো মতো হওয়া উচিত।

রাস্পবেরি পাই সেন্স টুপিটি রাস্পবেরি পাই এর 40-পিন জিপিআইও পুরুষ হেডারের সাথে সংযুক্ত করুন, যেমন নীচের ছবিতে দেখানো হয়েছে।

বিঃদ্রঃ: রাস্পবেরি পাই জিপিআইওর পিনগুলি বাঁকানো এড়াতে রাস্পবেরি পাই 40-পিন জিপিআইও শিরোনাম থেকে রাস্পবেরি পাই সেন্স হাট সংযোগ বিচ্ছিন্ন করার সময় সতর্ক থাকুন।

চারটি অবশিষ্ট স্ক্রু দিয়ে, রাস্পবেরি পাই সেন্স হাটটি বেঁধে নিন, যেমন নীচের ছবিতে দেখানো হয়েছে।

রাস্পবেরি পাইতে শক্তি

এখন যেহেতু রাস্পবেরি পাই সেন্স হাট রাস্পবেরি পাই এর সাথে সংযুক্ত, রাস্পবেরি পাই ওএস সহ মাইক্রোএসডি কার্ডটি রাস্পবেরি পাই এর মাইক্রোএসডি কার্ড স্লটে সন্নিবেশ করান, রাস্পবেরি পাইয়ের সাথে পাওয়ার কেবল সংযুক্ত করুন এবং এটি চালু করুন।

রাস্পবেরি পাই সেন্স হাট পাইথন লাইব্রেরি ইনস্টল করা

রাস্পবেরি পাইতে রাস্পবেরি পাই সেন্স টুপি ব্যবহার করতে, ইন্দ্রিয়-টুপি রাস্পবেরি পাই ওএসে পাইথন লাইব্রেরি ইনস্টল করতে হবে। দ্য ইন্দ্রিয়-টুপি রাস্পবেরি পাই ওএস এর অফিসিয়াল প্যাকেজ ভান্ডারে লাইব্রেরি পাওয়া যায়।

রাস্পবেরি পাই ইনস্টল করতে ইন্দ্রিয়-টুপি রাস্পবেরি পাই ওএস -এ পাইথন লাইব্রেরি, প্রথমে নিম্নলিখিত কমান্ড দিয়ে APT প্যাকেজ রিপোজিটরি ক্যাশে আপডেট করুন:

$ 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 LEDs এর রঙ লাল করে। একবার হয়ে গেলে, টিপুন + এক্স অনুসরণ করে এবং এবং

আপনি চালাতে পারেন test.py নিম্নলিখিত কমান্ড সহ পাইথন স্ক্রিপ্ট:

$ python3 test.py

নীচের ছবিতে দেখানো 8 × 8 LED ম্যাট্রিক্স লাল রঙে উজ্জ্বল হওয়া উচিত।

সেন্স হাটের এলইডি বন্ধ করতে, চালান পরিষ্কার() কোন রঙ মান ছাড়া পদ্ধতি test.py পাইথন স্ক্রিপ্ট, যেমন নীচের স্ক্রিনশটে দেখানো হয়েছে এবং চালান test.py আবার পাইথন স্ক্রিপ্ট।

সেন্স হ্যাট এর LEDs এখন বন্ধ করা উচিত, যেমন নীচের ছবিতে দেখানো হয়েছে।

যদি সেন্স হাট সঠিকভাবে কাজ করে, তাহলে পরবর্তী বিভাগে যান।

Sense Hat থেকে আবহাওয়ার তথ্য পাওয়া

ব্যবহার করে আপনি খুব সহজেই সেন্স হ্যাট থেকে সেন্সর ডেটা পেতে পারেন ইন্দ্রিয়-টুপি পাইথন লাইব্রেরি। সেন্স হ্যাট থেকে সেন্সর ডেটা পুনরুদ্ধার করতে, আপনি একটি নতুন পাইথন স্ক্রিপ্ট তৈরি করতে পারেন read_sensor_data.py নিম্নরূপ:

$ nano read_sensor_data.py

এ নিম্নলিখিত কোডটি প্রবেশ করান read_sensor_data.py পাইথন ফাইল।

থেকেইন্দ্রিয়_হাতআমদানিসেন্সহ্যাট
থেকে সময় আমদানিঘুম
অনুভূতি=সেন্সহ্যাট()
অনুভূতি.পরিষ্কার()
যখন সত্য:
tempC=অনুভূতি.তাপমাত্রা পান()
tempF=tempC *(9/5)+32
চাপ=অনুভূতি.চাপ_()
আর্দ্রতা=অনুভূতি.আর্দ্রতা পান()

ছাপা(তাপমাত্রা: %.2f ° C/ %। 2f ° Fn'%(tempC,tempF))
ছাপা(চাপ: %.2f mbn'%(চাপ))
ছাপা('আর্দ্রতা:%.2f %%nn'%(আর্দ্রতা))
ঘুম(5)

একবার হয়ে গেলে, টিপুন + এক্স অনুসরণ করে এবং এবং

উপরের কোডে, লাইন 1 এবং 2 সমস্ত প্রয়োজনীয় লাইব্রেরি আমদানি করে, লাইন 4 একটি তৈরি করে সেন্সহ্যাট অবজেক্ট, এবং লাইন 5 ব্যবহার করে সেন্স হ্যাট এর সমস্ত এলইডি বন্ধ করে দেয় পরিষ্কার() পদ্ধতি যখন লাইন 7 এ লুপ একটি অসীম লুপ যা 8-16 লাইনে কোডটি চিরতরে চালাবে।

লাইন 8 এ, get_temperature () সেন্স হাটের আর্দ্রতা সেন্সর থেকে তাপমাত্রার তথ্য (ডিগ্রি সেলসিয়াসে) পড়ার জন্য পদ্ধতিটি ব্যবহার করা হয়। লাইন 9 এ, তাপমাত্রার তথ্য ডিগ্রি সেলসিয়াস থেকে ডিগ্রি ফারেনহাইটে রূপান্তরিত হয়। লাইন 10 এ, get_pressure () সেন্স হাটের প্রেসার সেন্সর থেকে বায়ুচাপের তথ্য (মিলিবারে) পড়ার জন্য পদ্ধতি ব্যবহার করা হয়। লাইন 11 এ, আর্দ্রতা পান () সেন্স হাটের আর্দ্রতা সেন্সর থেকে আর্দ্রতা ডেটা ( %এ) পড়ার জন্য পদ্ধতি ব্যবহার করা হয়।

সেন্সর ডেটা কনসোলে প্রিন্ট করতে 13-15 লাইন ব্যবহার করা হয় এবং সেন্সর ডেটা আবার পড়ার আগে 5 সেকেন্ড অপেক্ষা করার জন্য লাইন 16 ব্যবহার করা হয়।

আপনি চালাতে পারেন read_sensor_data.py পাইথন স্ক্রিপ্ট নিম্নরূপ:

$ python3 read_sensor_data.py

একবার স্ক্রিপ্ট চালানো হলে, সেন্সর ডেটা কনসোলে প্রিন্ট করা হবে।

এখন আমরা সেন্স হ্যাট থেকে সেন্সর ডেটা পড়তে পারি, টিপুন + প্রোগ্রাম বন্ধ করার জন্য।

একটি ওয়েদার স্টেশন ওয়েব অ্যাপ তৈরি করা

এই বিভাগে, আমরা আপনাকে দেখাব কিভাবে একটি আবহাওয়া 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'] = 0
অনুভূতি=সেন্সহ্যাট()
অনুভূতি.পরিষ্কার()
সঙ্গেঅ্যাপtest_request_context():
url_for('স্থির',ফাইলের নাম='style.css')
url_for('স্থির',ফাইলের নাম='app.js')
অ্যাপরুট('/আগুন')
ডিফআগুন():
tempC=অনুভূতি.তাপমাত্রা পান()
tempF=tempC *(9/5)+32
চাপ=অনুভূতি.চাপ_()
চাপ=চাপ *0.0145038
চাপ পি=চাপ *100
আর্দ্রতা=অনুভূতি.আর্দ্রতা পান()

প্রত্যাবর্তনjsonify({
'তাপমাত্রা':{ 'সি': tempC, 'এফ': tempF},
'চাপ':{ 'এমবি': চাপ, 'এইচপিএ': চাপ,
'পিএসআই': চাপ, 'পি': চাপ পি},
'আর্দ্রতা': আর্দ্রতা
})
অ্যাপরুট('/')
ডিফবাড়ি():
প্রত্যাবর্তনrender_template('./home.html')

তারপর, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে server.py পাইথন স্ক্রিপ্ট।

উপরের কোডে, লাইন 1-5 সমস্ত প্রয়োজনীয় লাইব্রেরি আমদানি করে, লাইন 7 একটি ফ্লাস্ক অ্যাপ তৈরি করে, লাইন 11 একটি সেন্সহ্যাট বস্তু তৈরি করে এবং লাইন 12 সেন্স হ্যাট এর সমস্ত এলইডি বন্ধ করে দেয়। লাইন 8 ফ্লাস্ক অ্যাপের জন্য ওয়েব ক্যাশিং নিষ্ক্রিয় করে। এই অ্যাপটি লাইটওয়েট হওয়ায় ক্যাশিং এর কোন প্রয়োজন নেই। আপনি যদি অ্যাপটি সংশোধন করতে চান, তাহলে ওয়েব ক্যাশিং নিষ্ক্রিয় থাকলে পরীক্ষা করা অনেক সহজ হয়ে যাবে।

লাইন 18-31 সেন্স হ্যাট থেকে সেন্সর ডেটা পড়ে এবং HTTP GET অনুরোধে JSON ফর্ম্যাটে API ডেটা ফেরত দেয় /আগুন ওয়েব সার্ভারের শেষ বিন্দু। লাইন 37-39 এ আবহাওয়া ওয়েব অ্যাপের হোমপেজ ফিরিয়ে দেয় / ওয়েব সার্ভারের শেষ বিন্দু। হোমপেজ থেকে রেন্ডার করা হয় home.html ফাইল, যা টেমপ্লেট/ প্রকল্পের ডিরেক্টরি ডিরেক্টরি।

14-16 লাইনগুলি অ্যাক্সেসের অনুমতি দিতে ব্যবহৃত হয় style.css এবং app.js স্ট্যাটিক ফাইল। এই ফাইলগুলোতে থাকা উচিত স্থির/ প্রকল্পের ডিরেক্টরি ডিরেক্টরি। দ্য style.css ফাইলটি স্টাইল করতে ব্যবহৃত হয় home.html হোমপেজ, এবং app.js ফাইলটি এপিআই ডেটা অনুরোধ করার জন্য ব্যবহার করা হয় /আগুন এন্ডপয়েন্ট এবং আবহাওয়ার তথ্য আপডেট করুন home.html পৃষ্ঠা প্রতি 5 সেকেন্ড।

তৈরি করুন স্থির/ এবং টেমপ্লেট/ প্রকল্প ডিরেক্টরিতে ডিরেক্টরিটি নিম্নরূপ:

$ mkdir -v {স্ট্যাটিক, টেমপ্লেট}

একটা তৈরি কর home.html ফাইল টেমপ্লেট/ নিম্নরূপ ডিরেক্টরি:

$ ন্যানো টেমপ্লেট/home.html

এ নিম্নলিখিত কোডটি প্রবেশ করান home.html ফাইল


< html >
< মাথা >
< মেটা নাম='ভিউপোর্ট' বিষয়বস্তু='প্রস্থ = ডিভাইস-প্রস্থ, প্রাথমিক স্কেল = 1.0'>
< শিরোনাম >রাস্পবেরি পাই ওয়েদার স্টেশন</ শিরোনাম >
< লিঙ্ক rel='স্টাইলশীট' টাইপ='টেক্সট/সিএসএস'
href='{{url_for (' static ', filename =' style.css ')}}'/>
</ মাথা >
< শরীর >
< ডিভ আইডি='বিষয়বস্তু'>
< h1 >রাস্পবেরি পাই ওয়েদার স্টেশন</ h1 >

< ডিভ শ্রেণী='তথ্য-সামগ্রী'>
< h2 >তাপমাত্রা</ h2 >
< ডিভ শ্রেণী='ডেটা-সারি'>
< ডিভ শ্রেণী='ডেটা সেল' আইডি='tempC'>
...
</ ডিভ >
< ডিভ শ্রেণী='ডেটা সেল' আইডি='tempF'>
...
</ ডিভ >
</ ডিভ >
</ ডিভ >

< ডিভ শ্রেণী='তথ্য-সামগ্রী'>
< h2 >চাপ</ h2 >
< ডিভ শ্রেণী='ডেটা-সারি'>
< ডিভ শ্রেণী='ডেটা সেল' আইডি='প্রেসার এমবি'>
...
</ ডিভ >
< ডিভ শ্রেণী='ডেটা সেল' আইডি='চাপপসি'>
...
</ ডিভ >
</ ডিভ >
< ডিভ শ্রেণী='ডেটা-সারি'>
< ডিভ শ্রেণী='ডেটা সেল' আইডি='চাপ এইচপিএ'>
...
</ ডিভ >
< ডিভ শ্রেণী='ডেটা সেল' আইডি='চাপ পি'>
...
</ ডিভ >
</ ডিভ >
</ ডিভ >

< ডিভ শ্রেণী='তথ্য-সামগ্রী'>
< h2 >আর্দ্রতা</ h2 >
< ডিভ শ্রেণী='ডেটা-সারি'>
< ডিভ শ্রেণী='ডেটা সেল' আইডি='আর্দ্রতা'>
...
</ ডিভ >
</ ডিভ >
</ ডিভ >
</ ডিভ >

< লিপি টাইপ='পাঠ্য/জাভাস্ক্রিপ্ট' src='{{url_for (' static ', filename =' app.js ')}}'></ লিপি >
</ শরীর >
</ html >

তারপর, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে home.html ফাইল

একটা তৈরি কর style.css ফাইল স্থির/ নিম্নরূপ ডিরেক্টরি:

$ nano স্ট্যাটিক/style.css

এ নিম্নলিখিত কোডগুলি প্রবেশ করান style.css ফাইল

- আমদানি url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
* {
প্যাডিং: 0;
মার্জিন: 0;
ফন্ট-পরিবার: 'রোবট', ব্যতিত সেরিফ;
}
শরীর{
পটভূমি: # 737373;
}
h1{
প্রদর্শন: ব্লক;
রঙ: #79DC7B;
পাঠ্য-সারিবদ্ধ: কেন্দ্র;
ফন্ট-ওজন: 400;
পটভূমি: # 000;
প্যাডিং: 0.5em 0;
}
h2{
প্রদর্শন: ব্লক;
পটভূমি: # 000;
রঙ: #fff;
পাঠ্য-সারিবদ্ধ: কেন্দ্র;
ফন্ট-ওজন: 400;
অক্ষরের আকার: 1em;
}
.data- বিষয়বস্তু {
মার্জিন: 10px;
সীমানা: 2px কঠিন কালো;
সীমানা-ব্যাসার্ধ: 5px;
পেছনের রঙ: #79DC7B;
}
ডাটা-সারি {
প্রদর্শন:ফ্লেক্স;
ফ্লেক্স-দিক:সারি;
}
ডাটা-সেল {
প্রস্থ: 100%;
উচ্চতা: 80px;
প্রদর্শন:ফ্লেক্স;
সারিবদ্ধ আইটেম: কেন্দ্র;
ন্যায্যতা-বিষয়বস্তু: কেন্দ্র;
ফন্ট-ওজন: সাহসী;
অক্ষরের আকার: 1.5em;
রঙ: # 006902;
}
ডাটা-সেল:ঘোরা {
পটভূমি: # FFE891;
রঙ: # AA8600;
কার্সার: নির্দেশক;
}

তারপর, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে style.css ফাইল

তৈরি একটি app.js ফাইল স্থির/ নিম্নরূপ ডিরেক্টরি:

$ ন্যানো স্ট্যাটিক/app.js

এ নিম্নলিখিত কোডটি প্রবেশ করান app.js ফাইল

জানলা.addEventListener('বোঝা',প্রধান);
ফাংশনপ্রধান() {
ফাংশনgetAPIData() {
কোথায়http= নতুনXMLHttpRequest();

http।onreadystatechange = ফাংশন() {
যদি(এইরেডি স্টেট === 4 && এইঅবস্থা === 200) {
হালনাগাদ(JSON।বিশ্লেষণ(এইপ্রতিক্রিয়া পাঠ্য));
}
}

http।খোলা('পাওয়া', '/আগুন', সত্য);
http।পাঠান();
}


ফাংশনহালনাগাদ(apiData) {
কোথায়tempC=দলিল।getElementById('tempC');
কোথায়tempF=দলিল।getElementById('tempF');
কোথায়চাপ এমবি=দলিল।getElementById('প্রেসার এমবি');
কোথায়চাপ=দলিল।getElementById('চাপপসি');
কোথায়চাপ এইচপিএ=দলিল।getElementById('চাপ এইচপিএ');
কোথায়চাপ পি=দলিল।getElementById('চাপ পি');
কোথায়আর্দ্রতা=দলিল।getElementById('আর্দ্রতা');

tempCঅভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।তাপমাত্রা)to স্থির(2) + '° C';
tempFঅভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।তাপমাত্রা)to স্থির(2) + '° F';

চাপ এমবি।অভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।চাপএমবি)to স্থির(2) + 'এমবি';
চাপঅভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।চাপসাই)to স্থির(2) + 'পিএসআই';
চাপ এইচপিএ।অভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।চাপhPa)to স্থির(2) + 'এইচপিএ';
চাপ পি।অভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।চাপপি)to স্থির(2) + 'পি';

আর্দ্রতাঅভ্যন্তরীণ HTML =পার্সফ্লোট(apiData।আর্দ্রতা)to স্থির(2) + '%';
}


ফাংশনঅ্যাপ() {
জানলা.setInterval(ফাংশন() {
getAPIData();
}, 5000);
}

অ্যাপ();
}

তারপর, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে app.js ফাইল

এখানে, লাইন 1 রান করে প্রধান () ওয়েব পেজ লোড করা শেষ হলে কাজ করুন। মধ্যে প্রধান () ফাংশন, getAPIData () ফাংশন AJAX ব্যবহার করে আবহাওয়া API ডেটা সংগ্রহ করে এবং কল করে হালনাগাদ() ফাংশন (লাইন 10) একবার ডেটা সফলভাবে আনা হয়েছে। দ্য হালনাগাদ() API ডেটা ব্যবহার করে ফাংশন ওয়েব পেজ এলিমেন্ট আপডেট করে।

লাইন 20 এ, document.getElementById () আইডি দিয়ে ওয়েব পেজ এলিমেন্টের রেফারেন্স পেতে মেথড ব্যবহার করা হয় tempC । আইডি আছে এমন ওয়েব পেজ এলিমেন্টের বিষয়বস্তু প্রতিস্থাপন করতে লাইন 28 ব্যবহার করা হয় tempC এপিআই থেকে তাপমাত্রা (সেলসিয়াসে) সহ। একই ভাবে, সমস্ত ওয়েব উপাদানের বিষয়বস্তু (লাইন 21-26) তাদের নিজ নিজ API ডেটা দিয়ে প্রতিস্থাপিত হয়।

মধ্যে অ্যাপ () ফাংশন, getAPIData () আবহাওয়া অ্যাপে আবহাওয়ার তথ্য আপ টু ডেট রাখতে প্রতি 5 সেকেন্ড (5000 মিলিসেকেন্ড) বলা হয়। অবশেষে, লাইন 46 এ, অ্যাপ () ফাংশন কার্যকর করা হয়।

ওয়েব অ্যাপটি পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি প্রবেশ করান:

$ FLASK_APP = server.py flask run --host = 0.0.0.0

আবহাওয়া অ্যাপ্লিকেশন 5000 পোর্টে (ডিফল্টরূপে) চালানো উচিত।

আবহাওয়া API কাজ করছে কিনা তা পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি চালান:

$ কার্ল -এস http: // localhost: 5000/api | json_pp

আপনি দেখতে পাচ্ছেন, কনসোলে আবহাওয়া API ডেটা প্রিন্ট করা হয়েছে। অতএব, API কাজ করছে।

আবহাওয়া অ্যাপটি পরীক্ষা করতে ভিজিট করুন http: // localhost: 5000 একটি Chromium ওয়েব ব্রাউজার থেকে। ওয়েদার অ্যাপটি ওয়েব ব্রাউজারে লোড করা উচিত, কিন্তু প্রথমে কোন আবহাওয়ার তথ্য প্রদর্শন করা উচিত নয়।

কয়েক সেকেন্ডের পরে, আবহাওয়া অ্যাপ্লিকেশনটি API থেকে আবহাওয়ার ডেটা আনা শেষ করে এটি প্রদর্শন করবে।

যে কোন সময়ে, আপনি টিপতে পারেন + ওয়েব সার্ভার বন্ধ করতে।

ওয়েদার ওয়েব অ্যাপের জন্য সিস্টেমড সার্ভিস তৈরি করা হচ্ছে

এই বিভাগে, আমরা আপনাকে দেখাব কিভাবে আবহাওয়া অ্যাপের জন্য একটি সিস্টেমড সার্ভিস ফাইল তৈরি করতে হয় যাতে এটি বুট করার পর স্বয়ংক্রিয়ভাবে শুরু হয়ে যায়।

প্রথমে একটি তৈরি করুন weather-station.service আপনার প্রকল্প ডিরেক্টরিতে ফাইলটি নিম্নরূপ:

$ nano weather-station.service

কোডের নিম্নলিখিত লাইনগুলি লিখুন weather-station.service ফাইল

[ইউনিট]
বিবরণ = রাস্পবেরি পাই সেন্স হাট ব্যবহার করে রাস্পবেরি পাই ওয়েদার স্টেশন ওয়েব অ্যাপ
পরে = network. Target

[পরিষেবা]
WorkingDirectory =/home/pi/work
পরিবেশ = FLASK_APP = server.py
পরিবেশ = FLASK_ENV = উৎপাদন
ExecStart =/usr/bin/flask run --host = 0.0.0.0
স্ট্যান্ডার্ড আউটপুট = উত্তরাধিকার
StandardError = উত্তরাধিকার
রিস্টার্ট = সবসময়
ব্যবহারকারী = পাই

[ইনস্টল করুন]
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 ডেমন-রিলোড

দ্য আবহাওয়া স্টেশন সিস্টেমড পরিষেবাটি এই মুহূর্তে নিষ্ক্রিয় হওয়া উচিত, যেমন নীচের স্ক্রিনশটে দেখানো হয়েছে।

$ sudo systemctl অবস্থা weather-station.service

শুরু করুন আবহাওয়া স্টেশন নিম্নলিখিত কমান্ড দিয়ে সেবা:

$ sudo systemctl শুরু weather-station.service

আপনি দেখতে পারেন, আবহাওয়া স্টেশন পরিষেবা এখন চলছে।

$ sudo systemctl অবস্থা weather-station.service

এখন যে আবহাওয়া স্টেশন পরিষেবা কাজ করছে, আপনি নিম্নলিখিত কমান্ড দিয়ে রাস্পবেরি পাই ওএস এর সিস্টেম স্টার্টআপে এটি যুক্ত করতে পারেন:

$ sudo systemctl আবহাওয়া- station.service সক্ষম করুন

নিম্নলিখিত কমান্ড দিয়ে আপনার রাস্পবেরি পাই পুনরায় বুট করুন:

$ sudo রিবুট

একবার আপনার রাস্পবেরি পাই বুট হয়ে গেলে, আবহাওয়া স্টেশন পরিষেবাটি চালানো উচিত, যেমন নীচের স্ক্রিনশটে দেখানো হয়েছে।

$ sudo systemctl অবস্থা weather-station.service

অন্যান্য ডিভাইস থেকে আবহাওয়া অ্যাপ অ্যাক্সেস করা

আপনার হোম নেটওয়ার্কের অন্যান্য ডিভাইস থেকে আবহাওয়া অ্যাপ অ্যাক্সেস করতে, আপনাকে আপনার রাস্পবেরি পাই এর আইপি ঠিকানা জানতে হবে। আপনি আপনার হোম রাউটারের ওয়েব ম্যানেজমেন্ট ইন্টারফেস থেকে আপনার রাস্পবেরি পাই 4 এর আইপি ঠিকানা খুঁজে পেতে পারেন। আমাদের ক্ষেত্রে, আইপি ঠিকানা 192.168.0.103, তবে এই ঠিকানাটি আপনার জন্য আলাদা হবে, তাই পরবর্তী সব ধাপে এই ঠিকানাটি আপনার সাথে প্রতিস্থাপন করতে ভুলবেন না।

আপনার যদি রাস্পবেরি পাই কনসোলে অ্যাক্সেস থাকে তবে আপনি আইপি ঠিকানাটি খুঁজে পেতে নিম্নলিখিত কমান্ডটি চালাতে পারেন।

$ hostname -I

একবার আপনি আপনার রাস্পবেরি পাই এর আইপি ঠিকানা জানতে পারলে, আপনি এটি আপনার হোম নেটওয়ার্কের যেকোনো ডিভাইস থেকে অ্যাক্সেস করতে পারেন। নীচের স্ক্রিনশটে দেখানো হয়েছে, আমরা একটি অ্যান্ড্রয়েড স্মার্টফোন থেকে আবহাওয়া অ্যাপ ব্যবহার করেছি।

উপসংহার

এই নিবন্ধে, আমরা আপনাকে দেখিয়েছি কিভাবে রাস্পবেরি পাই সেন্স হাট ব্যবহার করে রাস্পবেরি পাই ওয়েদার স্টেশন তৈরি করতে হয়। আমরা ব্যবহার করেছি ইন্দ্রিয়-টুপি রাস্পবেরি পাই সেন্স হাট থেকে আবহাওয়ার তথ্য বের করার জন্য পাইথন লাইব্রেরি। তারপরে, আমরা একটি আবহাওয়া API এবং একটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে ফ্লাস্ক পাইথন মাইক্রো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করেছি। ওয়েব অ্যাপটি আবহাওয়ার এপিআই থেকে প্রতি 5 সেকেন্ডে আবহাওয়ার ডেটা পায় যাতে ওয়েব অ্যাপটি সর্বশেষ আবহাওয়ার তথ্য দিয়ে আপডেট থাকে।