রাস্পবেরি পাই হোম অটোমেশন সেট আপ করুন

Set Up Raspberry Pi Home Automation



হোম অটোমেশনের জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয় হল লো-ভোল্টেজ ডিসি ব্যবহার করে উচ্চ-ভোল্টেজের এসি নিয়ন্ত্রণ করা। রাস্পবেরি পাই থেকে উচ্চ ভোল্টেজ এসি নিয়ন্ত্রণ করতে আপনার 5V রিলে সুইচ লাগবে। আপনি রাস্পবেরি পাই এর জিপিআইও পিন ব্যবহার করে রিলে সুইচ নিয়ন্ত্রণ করতে পারেন। রিলে সুইচ তখন রাস্পবেরি পাই এর মাধ্যমে এসি হোম অ্যাপ্লায়েন্স নিয়ন্ত্রণ করতে পারে।

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







জিনিস আপনি প্রয়োজন হবে

আপনি যদি আপনার রাস্পবেরি পাই হেডলেস ব্যবহার করতে চান (SSH বা VNC এর মাধ্যমে), আপনার নিম্নলিখিত বিষয়গুলির প্রয়োজন হবে:



1) রাস্পবেরি পাই 3 বা রাস্পবেরি পাই 4।
2) 5V রিলে সুইচ
3) বৈদ্যুতিক তারের।
4) 3 মহিলা থেকে মহিলা সংযোগকারী তারের।
5) এসি লাইট বাল্ব।
6) এসি লাইটবাল ধারক।
7) এসি প্লাগ
8) ওয়্যারকাটার এবং স্ট্রিপার টুল।
9) CR-V 3 স্ক্রু ড্রাইভার।
10) মাইক্রো-ইউএসবি (রাস্পবেরি পাই 3) বা ইউএসবি টাইপ-সি (রাস্পবেরি পাই 4) পাওয়ার অ্যাডাপ্টার।
11) রাস্পবেরি পাই ওএস সহ 16 জিবি বা 32 জিবি মাইক্রোএসডি কার্ড ফ্ল্যাশ হয়েছে।
12) রাস্পবেরি পাইতে নেটওয়ার্ক সংযোগ।
13) VNC রিমোট ডেস্কটপ অ্যাক্সেসের জন্য ল্যাপটপ বা ডেস্কটপ কম্পিউটার অথবা রাস্পবেরি পাইতে SSH অ্যাক্সেস।



আপনি যদি SSH বা VNC এর মাধ্যমে দূর থেকে রাস্পবেরি পাই অ্যাক্সেস করতে না চান, তাহলে আপনার নিম্নলিখিতগুলিরও প্রয়োজন হবে:





14) একটি মনিটর।
15) এইচডিএমআই বা মাইক্রো-এইচডিএমআই কেবল।
16) একটি কীবোর্ড।
17) একটি ইঁদুর।

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



আপনি যদি রাস্পবেরি পাই শিক্ষানবিশ হন এবং রাস্পবেরি পাইতে রাস্পবেরি পাই ওএস ইনস্টল করার জন্য আপনার সাহায্যের প্রয়োজন হয় তবে নিবন্ধটি দেখুন রাস্পবেরি পাই 4 এ কীভাবে রাস্পবেরি পাই ওএস ইনস্টল করবেন।

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

সমস্ত প্রয়োজনীয় সরঞ্জামগুলির চিত্র নীচে দেওয়া হয়েছে।

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

এর পরে, রাস্পবেরি পাইতে পাওয়ার ক্যাবল এবং রাস্পবেরি পাইতে পাওয়ার সংযুক্ত করুন।

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

5V রিলে পিনআউট

একটি রিলে মূলত একটি সুইচ। কিন্তু, একটি traditionalতিহ্যগত সুইচের বিপরীতে, একটি রিলে অল্প পরিমাণে ডিসি ভোল্টেজ দ্বারা নিয়ন্ত্রিত হতে পারে।

5V রিলে ব্যবহার করা খুবই সহজ। এর দুটি দিক রয়েছে: একটি দিক লো-ভোল্টেজ ডিসি (রাস্পবেরি পাই থেকে) এর মাধ্যমে রিলে নিয়ন্ত্রণ করতে ব্যবহৃত হয়, এবং অন্য দিকটি রিলে অবস্থার উপর নির্ভর করে উচ্চ ভোল্টেজ এসি (অর্থাৎ, লাইটবাল) নিয়ন্ত্রণ করতে ব্যবহৃত হয় ।


একদিকে, রিলে দুটি LEDs (একটি লাল এবং একটি সবুজ) এবং তিনটি পিন ( ইন, জিএনডি, এবং ভিসিসি )। এই তিনটি পিন রাস্পবেরি পাই থেকে রিলে নিয়ন্ত্রণ করতে ব্যবহৃত হয়।

অন্য পাশের প্রথম দুটি পিন এসি হোম অ্যাপ্লায়েন্স নিয়ন্ত্রণ করতে ব্যবহৃত হয়।

রাস্পবেরি পাইয়ের সাথে 5V রিলে সংযুক্ত করা হচ্ছে

রাস্পবেরি পাইয়ের সাথে 5V রিলে সংযোগ করতে, আপনার তিনটি মহিলা-থেকে-মহিলা সংযোগকারী তারের প্রয়োজন হবে।

সংযোগকারী তারের একপাশে প্লাগ করুন ভিতরে (হলুদ তার), GND (কালো তার), এবং ভিসিসি (লাল তারের) 5V রিলে পিন, নিচে দেখানো হয়েছে।


তারের অন্য দিক রাস্পবেরি পাই এর GPIO হেডার পিনগুলিতে যায়, যেমন নীচের ছবিতে দেখানো হয়েছে।

লাল তারের মধ্যে যেতে হবে পিন 2 (ভিসিসি) রাস্পবেরি পাই এর।
কালো তারের মধ্যে যেতে হবে পিন 6 (GND) রাস্পবেরি পাই এর।
হলুদ তারের মধ্যে যেতে হবে পিন 7 (জিপিআইও 4) রাস্পবেরি পাই এর।


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

GPIO লগইন ব্যবহারকারীর অ্যাক্সেসের অনুমতি

জিপিআইও পিনগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য, রাস্পবেরি পাই ওএসের ডিফল্ট লগইন ব্যবহারকারী পাই এ যোগ করা উচিত জিপিও গ্রুপ

আপনি যোগ করতে পারেন পাই ব্যবহারকারী জিপিও নিম্নলিখিত কমান্ড দিয়ে গ্রুপ:

$sudousermod-এজিজিপিও $(আমি কে)


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

$sudoরিবুট

একটি প্রকল্প ডিরেক্টরি তৈরি করা

সমস্ত প্রজেক্ট ফাইলগুলিকে সংগঠিত রাখাও একটি ভাল ধারণা।

প্রকল্প ফাইলগুলিকে সংগঠিত রাখতে, প্রকল্প ডিরেক্টরি তৈরি করুন /www এবং নিম্নলিখিত কমান্ড সহ প্রয়োজনীয় সাবডিরেক্টরি:

$mkdir -পিভি~/www/{টেমপ্লেট, স্ট্যাটিক}


একবার প্রজেক্ট ডাইরেক্টরি তৈরি হয়ে গেলে, প্রোজেক্ট ডাইরেক্টরিতে নিম্নরূপ নেভিগেট করুন:

$সিডি~/www

রাস্পবেরি পাই থেকে 5V রিলে পরিবর্তন করা হচ্ছে

এখন যেহেতু আপনি 5V রিলেকে রাস্পবেরি পাইতে সংযুক্ত করেছেন, আপনি পাইথন প্রোগ্রামিং ভাষা ব্যবহার করে রাস্পবেরি পাই থেকে রিলেটি স্যুইচ করবেন।

দ্রষ্টব্য: স্যুইচিং ইলেকট্রনিক্সে ব্যবহৃত একটি শব্দ। স্যুইচিং মানে একটি নির্দিষ্ট ইলেকট্রনিক ডিভাইস নিয়ন্ত্রণ করা (অর্থাৎ পাওয়ার অন/অফ)।

পাইথন প্রোগ্রামিং ভাষা ব্যবহার করে রিলে স্যুইচ করার জন্য পরীক্ষা করার জন্য, প্রকল্পের ডিরেক্টরিতে নতুন পাইথন স্ক্রিপ্ট test.py তৈরি করুন:

$ন্যানোtest.py


Test.py পাইথন স্ক্রিপ্টে কোডগুলির নিম্নলিখিত লাইনগুলি টাইপ করুন।

থেকেজিপিওজিরোআমদানিএলইডি
থেকে সময় আমদানিঘুম

যখন সত্য:
রিলে=এলইডি(4)
ছাপা('রিলে: চালু')
ঘুম(5)

রিলেবন্ধ()
ছাপা('রিলে: বন্ধ')
ঘুম(5)

একবার হয়ে গেলে, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে test.py পাইথন স্ক্রিপ্ট।


এখানে, লাইন 1 আমদানি এলইডি থেকে জিপিওজিরো লাইব্রেরি, এবং লাইন 2 আমদানি করে ঘুম থেকে ফাংশন সময় গ্রন্থাগার।


লাইন 6-14 একটি অসীম লুপের মধ্যে।


লাইন 6 একটি LED শুরু করে জিপিআইও 4 রাস্পবেরি পাই, যা এর সাথে সংযুক্ত ভিতরে রিলে এর পিন।


লাইন 8 রিলে চালু করে চালু() পদ্ধতি

লাইন 9 কনসোলে একটি বার্তা প্রিন্ট করে ছাপা() ফাংশন

লাইন 10 কোড ব্যবহার করে পরবর্তী লাইনের কোড পাঁচ সেকেন্ডের জন্য বিলম্ব করে ঘুম() ফাংশন


লাইন 12 রিলে বন্ধ করে বন্ধ () পদ্ধতি

একইভাবে, লাইন 9 কনসোলে একটি বার্তা প্রিন্ট করে ছাপা() ফাংশন এবং লাইন 10 পরবর্তী সেকেন্ডের কোড ব্যবহার করে 5 সেকেন্ডের জন্য বিলম্ব করে ঘুম() ফাংশন


পরবর্তী, চালান test.py পাইথন স্ক্রিপ্ট নিম্নরূপ:

$python3 test.py


দ্য test.py পাইথন স্ক্রিপ্ট 5V রিলে স্যুইচ করা শুরু করা উচিত। আপনার প্রতি পাঁচ সেকেন্ডে একটি ক্লিক শব্দ শোনা উচিত। যখন রিলে অবস্থা পরিবর্তন করে (চালু থেকে বন্ধ বা বন্ধ থেকে), এটি একটি ক্লিক শব্দ করে। এর মানে হল যে রিলে সঠিকভাবে কাজ করছে।


যখন রিলে অফ-স্টেটে থাকে (স্বাভাবিক ক্রিয়াকলাপ-এসি লোড সংযোগ বিচ্ছিন্ন), শুধুমাত্র জাল LED হালকা হওয়া উচিত, যেমন আপনি নীচের ছবিতে দেখতে পাচ্ছেন।


যখন রিলে অন-স্টেটে থাকে (এসি লোড সংযুক্ত থাকে), উভয় সবুজ LED এবং দ্য জাল LED হালকা হওয়া উচিত, যেমন আপনি নীচের ছবিতে দেখতে পাচ্ছেন।


একবার পরীক্ষা সম্পন্ন হলে, টিপুন + গ বন্ধ করার জন্য test.py লিপি.

এসি লাইটব্লবকে 5V রিলে সংযুক্ত করা হচ্ছে

5V রিলে এখন সঠিকভাবে কাজ করা উচিত। এখন, আপনি আপনার এসি হোম অ্যাপ্লায়েন্স (একটি লাইট বাল্ব, এই ক্ষেত্রে) 5V রিলে সংযুক্ত করবেন।

প্রথমে, তারের কাটার দিয়ে লাইটবলের সাথে সংযুক্ত কালো বৈদ্যুতিক তার কেটে ফেলুন।


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


পরবর্তী, নীচের ছবিতে দেখানো হিসাবে, প্রায় ½ ইঞ্চি বৈদ্যুতিক তারের প্রকাশ করতে বাইরের স্তরটি সরান।


তারপরে, নিচের ছবিতে দেখানো হিসাবে উন্মুক্ত তারগুলি ভাঁজ করুন।


একটি CV-3 স্ক্রু ড্রাইভার দিয়ে রিলে চিহ্নিত স্ক্রুগুলি আলগা করুন।


দুটি স্ক্রু টার্মিনালে আপনার আগে ছিঁড়ে এবং ভাঁজ করা উন্মুক্ত তারগুলি সন্নিবেশ করান এবং একটি CV-3 স্ক্রু ড্রাইভার দিয়ে স্ক্রুগুলি শক্ত করুন।

এসি লোড সংযুক্ত করার পর রিলে সুইচিং পরীক্ষা করা হচ্ছে

একবার এসি লোড 5V রিলে সংযুক্ত হয়ে গেলে, লাইটবুল প্লাগটিকে দেয়ালের সকেটে সংযুক্ত করুন।


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

$python3 test.py


দ্য test.py পাইথন স্ক্রিপ্টটি 5V রিলে স্যুইচ করা শুরু করবে, যা, পরিবর্তে, পাঁচ সেকেন্ডের ব্যবধানে উচ্চ ভোল্টেজের এসি লাইটব্লবটি স্যুইচ করবে। এসি লাইটব্লবটি পাঁচ সেকেন্ডের জন্য থাকা উচিত, তারপর পাঁচ সেকেন্ডের জন্য বন্ধ থাকা উচিত, ইত্যাদি।

নিচের ছবিতে লাইট বাল্ব বন্ধ।


নিচের ছবিতে লাইট বাল্ব চালু আছে।


আপনি দেখতে পাচ্ছেন, আমরা রিলে পরিবর্তন করতে পারি এবং পাইথন প্রোগ্রামিং ভাষা ব্যবহার করে উচ্চ ভোল্টেজের এসি লাইটবাল নিয়ন্ত্রণ করতে পারি। সুতরাং, টিপুন + গ বন্ধ করার জন্য test.py লিপি.

আসুন এখন পরবর্তী বিভাগে যান।

হোম অটোমেশন ওয়েব অ্যাপ লেখা

এই বিভাগে, আমি আপনাকে দেখাব কিভাবে পাইথন প্রোগ্রামিং ভাষা ব্যবহার করে একটি API- ভিত্তিক ওয়েব অ্যাপ লিখতে হয়। আপনি একটি ওয়েব ব্রাউজার থেকে রিলে এবং AC হোম যন্ত্র (গুলি) বা বৈদ্যুতিক যন্ত্র (গুলি) নিয়ন্ত্রণ করতে ওয়েব অ্যাপ ব্যবহার করতে পারেন।

বিঃদ্রঃ: এই বিভাগে দেখানো সমস্ত কোড আমার GitHub সংগ্রহস্থলে পাওয়া যায় shovon8/raspberry-pi-home-automation । আপনি যদি চান, আপনি আমার গিটহাব সংগ্রহস্থল ক্লোন করতে পারেন এবং সমস্ত কোড এড়িয়ে যেতে পারেন।

নিম্নরূপ প্রকল্প ডিরেক্টরিতে server.py পাইথন স্ক্রিপ্ট তৈরি করুন:

$ন্যানোserver.py


কোডের নিম্নলিখিত লাইন টাইপ করুন server.py পাইথন স্ক্রিপ্ট।

থেকেফ্লাস্কআমদানিফ্লাস্ক,jsonify,url_for,render_template
থেকেজিপিওজিরোআমদানিএলইডি
থেকেuuidআমদানিuuid4
কক্ষ= {}
কক্ষ['রুম 1'] = [{
'আইডি': uuid4(),
'নাম':'আলো 1',
'আইকন':'ফা ফা-লাইটবুল',
'অবস্থা':মিথ্যা,
'রিলেপিন':4,
'রিলে ইনস্ট্যান্স':মিথ্যা
}, {
'আইডি': uuid4(),
'নাম':'ফ্যান 1',
'আইকন':'ফা ফা-ফ্যান',
'অবস্থা':মিথ্যা,
'রিলেপিন':6,
'রিলে ইনস্ট্যান্স':মিথ্যা
}]
কক্ষ['বাথরুম 1'] = [{
'আইডি': uuid4(),
'নাম':'আলো 1',
'আইকন':'ফা ফা-লাইটবুল',
'অবস্থা':মিথ্যা,
'রিলেপিন':5,
'রিলে ইনস্ট্যান্স':মিথ্যা
}]
অ্যাপ=ফ্লাস্ক(__ নাম__)
অ্যাপকনফিগ['SEND_FILE_MAX_AGE_DEFAULT'] = 0
অ্যাপরুট('/')
ডিফবাড়ি():
প্রত্যাবর্তনrender_template('./index.html',কক্ষ=কক্ষ)
ডিফtoggle_appliance_status(আইডি):
জন্যঘরভিতরেকক্ষ:
জন্যযন্ত্রপাতিভিতরেকক্ষ[ঘর]:
যদি পৃ(যন্ত্রপাতি['আইডি']) == আইডি:
যদিযন্ত্রপাতি['রিলে ইনস্ট্যান্স']:
যন্ত্রপাতি['রিলে ইনস্ট্যান্স']বন্ধ()
যন্ত্রপাতি['রিলে ইনস্ট্যান্স'] = মিথ্যা
অন্য:
যন্ত্রপাতি['রিলে ইনস্ট্যান্স'] =এলইডি(যন্ত্রপাতি['রিলেপিন'])
যন্ত্রপাতি['রিলে ইনস্ট্যান্স']চালু()
যন্ত্রপাতি['অবস্থা'] = নাযন্ত্রপাতি['অবস্থা']
প্রত্যাবর্তন সত্য
প্রত্যাবর্তন মিথ্যা
অ্যাপরুট('/যন্ত্র/টগল/')
ডিফappliance_toggle(আইডি):
প্রত্যাবর্তনjsonify({'অবস্থা': toggle_appliance_status(আইডি)})

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


এখানে, লাইন 1-3 তাদের প্রয়োজনীয় লাইব্রেরি থেকে সমস্ত প্রয়োজনীয় উপাদান আমদানি করে।


লাইন 5 একটি খালি তৈরি করে কক্ষ অভিধান। এই অভিধানে, আমরা সমস্ত এসি যন্ত্রের বিবরণ সংরক্ষণ করব যা আমরা ওয়েব অ্যাপ থেকে নিয়ন্ত্রণ করতে চাই।


দ্য কক্ষ বিবরণ 7-29 লাইনে সংরক্ষণ করা হয়।


আসুন আমরা একটি কক্ষের তথ্য কাঠামো নিয়ে আলোচনা করি।

এখানে, রুমের নাম হবে রুম 1। সুতরাং, রুম 1 এর চাবি কক্ষ অভিধান।


দ্য রুম 1 কী মান হিসাবে একটি অ্যারে ধারণ করে। অ্যারের উপাদানগুলির সংখ্যা সেই রুমে আপনার এসি হোম যন্ত্রপাতির সংখ্যার সমান যা আপনি ওয়েব অ্যাপ থেকেও নিয়ন্ত্রণ করতে চান। এই ক্ষেত্রে, আমাদের দুটি এসি হোম অ্যাপ্লায়েন্স রয়েছে যা আমরা নিয়ন্ত্রণ করতে চাই: আলো ঘ এবং ফ্যান ঘ


প্রতিটি হোম অ্যাপ্লায়েন্স সংজ্ঞা আছে একটি আইডি । দ্য আইডি একটি এলোমেলোভাবে উত্পন্ন UUID। এপিআই ব্যবহার করে আমরা কোন ঘরটি নিয়ন্ত্রণ করতে চাই তা চিহ্নিত করতে এটি ব্যবহার করা হয়।

একটি হোম অ্যাপ্লায়েন্সেও নিচের সব আছে:

  • নাম (আলো 1 এক্ষেত্রে)
  • আইকন (ফন্ট অসাধারণ আইকন ক্লাস, যেহেতু আমরা আইকনগুলির জন্য ফন্ট অসাধারণ ব্যবহার করব)
  • অবস্থা (সত্য যদি চালু এবং মিথ্যা যদি বন্ধ )
  • রিলে পিন (জিপিআইও পিন নম্বর এসি হোম যন্ত্রের সাথে সংযুক্ত রিলে নিয়ন্ত্রণ করতে ব্যবহৃত হয়)
  • রিলে ইনস্ট্যান্স (প্রারম্ভিক এলইডি এর বস্তু জিপিওজিরো লাইব্রেরি সংশ্লিষ্ট GPIO পিন নিয়ন্ত্রণের জন্য দায়ী - রিলে পিন )


লাইন 31 একটি ফ্লাস্ক পাইথন ওয়েব সার্ভার আরম্ভ করে।

লাইন 32 ফ্লাস্ক ওয়েব সার্ভার কনফিগার করে।


লাইন 34-36 পাঠান index.html থেকে ফাইল টেমপ্লেট/ ডিরেক্টরি যখন আপনি হোম অটোমেশন ওয়েব অ্যাপ পরিদর্শন করেন।

ফ্লাস্ক ব্যবহার করে জিনজা 2 রেন্ডার করার জন্য টেমপ্লেটিং ভাষা index.html ফাইল সুতরাং, আমি পাস করেছি কক্ষ অভিধান index.html ফাইল জিনজা 2 ব্যবহার করে হোমপেজ রেন্ডার করবে কক্ষ তথ্য


কাজ toggle_appliance_status () -5-৫২ লাইনে হোম অ্যাপ্লায়েন্স বন্ধ থাকলে এটি চালু করতে এবং যদি অ্যাপ্লায়েন্স ব্যবহার করা হয় তাহলে হোম অ্যাপ্লায়েন্স বন্ধ করতে ব্যবহৃত হয় আইডি

এটা ফিরে আসে সত্য যদি টগল অপারেশন সফল হয়। যদি কোনও ত্রুটি থাকে তবে এটি ফিরে আসবে মিথ্যা


55-57 লাইনগুলি ব্যবহার করে একটি হোম অ্যাপ্লায়েন্স টগল করতে ব্যবহার করা হয় /যন্ত্র/টগল/ ওয়েব সার্ভারের API এন্ডপয়েন্ট। এখানে, আইডি হোম অ্যাপ্লায়েন্সের আইডি।


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

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

কোডের নিম্নলিখিত লাইন টাইপ করুন index.html লিপি.


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

{ % রুমে রুমের জন্য %}
< ডিভ শ্রেণী='রুম'>
< h2 >{{রুম}}</ h2 >
< ডিভ শ্রেণী='যন্ত্রপাতি'>
রুমে [রুম] যন্ত্রপাতির জন্য %
< ডিভ শ্রেণী='যন্ত্রপাতি' আইডি='{{appliance [' id ']}}'> ='সক্রিয়'>
< আমি শ্রেণী='{{appliance [' icon ']}}'></ আমি >
< স্প্যান >{{যন্ত্র ['name']}}</ স্প্যান >
</ ডিভ >
{ % endfor %}
</ ডিভ >
</ ডিভ >
{ % endfor %}

</ ডিভ >

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

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


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

$ন্যানোস্থির/style.css


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

- আমদানি url('https://fonts.googleapis.com/css2?family=BenchNine: [email protected]; 400; 700 & display = swap');

* {
মার্জিন: 0;
প্যাডিং: 0;
ফন্ট-পরিবার: 'বেঞ্চনাইন', ব্যতিত সেরিফ;
}

#বিষয়বস্তু >h1{
পটভূমি:রৈখিক-গ্রেডিয়েন্ট(প্রতিঠিক, আরজিবি(112, 24, 163), আরজিবি(86, 127, 240));
রঙ: #fff;
পাঠ্য-সারিবদ্ধ: কেন্দ্র;
প্যাডিং: .5em 0;
}

ডিভ.রুম {
মার্জিন: .5em;
সীমানা: 2px কঠিন আরজিবি(112, 24, 163);
সীমানা-ব্যাসার্ধ: 5px;
}

ডিভ.রুমh2{
/* পটভূমি: আরজিবি (9, 76, 121); */
পটভূমি:রৈখিক-গ্রেডিয়েন্ট(প্রতিঠিক, আরজিবি(112, 24, 163), আরজিবি(86, 127, 240));
প্যাডিং: 0 0 0 .5em;
রঙ: #fff;
}

ডিভ। যন্ত্রপাতি {
মার্জিন: .5em .5em 0 0;
প্রদর্শন:ফ্লেক্স;
ফ্লেক্স মোড়ানো:মোড়ানো;
}

ডিভ.যন্ত্রপাতি {
সীমানা: 2px কঠিন আরজিবি(112, 24, 163);
সীমানা-ব্যাসার্ধ: 5px;
প্রস্থ: 110px;
উচ্চতা: 120px;
পাঠ্য-সারিবদ্ধ: কেন্দ্র;
মার্জিন: 0 0 .5em .5em;
প্রদর্শন:ফ্লেক্স;
ফ্লেক্স-দিক:কলাম;
}

ডিভ.যন্ত্রপাতিআমি.এফএ {
অক্ষরের আকার: 4em;
ফ্লেক্স-বৃদ্ধি: ;
প্যাডিং শীর্ষ: 0.3 এম;
রঙ: আরজিবি(204, পঞ্চাশ, পঞ্চাশ);
}

div.appliance[ডেটা-সক্রিয়='সক্রিয়']আমি.এফএ {
রঙ: আরজিবি(32, 177, ৫১);
}

ডিভ.যন্ত্রপাতিস্প্যান{
প্রদর্শন: ব্লক;
ফন্ট-ওজন: সাহসী;
পটভূমি: আরজিবি(112, 24, 163);
রঙ: #fff;
}

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


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

$ন্যানোস্থির/app.js


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

জানলা.addEventListener('বোঝা',প্রধান);

ফাংশনপ্রধান() {
ফাংশনটগল অ্যাপ্লায়েন্স স্টেট(এবং) {
কোথায়আইডি=এবং.পথ[]আইডি;

কোথায়http= নতুনXMLHttpRequest();

http।onreadystatechange = ফাংশন() {
যদি(এইরেডি স্টেট === 4 && এইঅবস্থা === 200) {
যদি(JSON।বিশ্লেষণ(এইপ্রতিক্রিয়া পাঠ্য)অবস্থা === সত্য) {
যদি(এবং.পথ[]hasAttribute আছে('ডেটা-অ্যাক্টিভ')) {
এবং.পথ[]অপসারণ('ডেটা-অ্যাক্টিভ')
} অন্য {
এবং.পথ[]setAttribute('ডেটা-অ্যাক্টিভ', 'সক্রিয়')
}
}
}
}

http।খোলা('পাওয়া','/যন্ত্রপাতি/টগল/${আইডি}', সত্য);
http।পাঠান();
}


কোথায়যন্ত্রপাতি=দলিল।getElementsByClassName('যন্ত্রপাতি');
জন্য(আমি=0;আমি<যন্ত্রপাতিদৈর্ঘ্য;আমি++) {
যন্ত্রপাতি[আমি]addEventListener('ক্লিক',টগল অ্যাপ্লায়েন্স স্টেট);
}
}

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


এখানে, লাইন 1 রান করে প্রধান () ওয়েব পেজ লোড করা শেষ হলে কাজ করুন।

মধ্যে index.html ফাইল, প্রতিটি হোম যন্ত্রপাতি একটি মধ্যে ঘেরা হয় যন্ত্রপাতি শ্রেণী 26-29 লাইনগুলি ওয়েব পেজ থেকে প্রতিটি হোম যন্ত্রপাতি নির্বাচন করতে এবং সংযুক্ত করতে ব্যবহৃত হয় ক্লিক যন্ত্রের জন্য ইভেন্ট। যখন কেউ ওয়েব পেজ থেকে হোম অ্যাপ্লায়েন্সে ক্লিক করে, টগল অ্যাপ্লায়েন্স স্টেট () ফাংশন চলবে।


4-23 লাইনে, টগল অ্যাপ্লায়েন্স স্টেট () ফাংশনটি অনুরোধ করার জন্য ব্যবহৃত হয় /যন্ত্র/টগল/ ক্লিক করা হোম যন্ত্রের অবস্থা পরিবর্তন করতে ওয়েব সার্ভারের শেষ বিন্দু। AJAX এর মাধ্যমে ব্যাকগ্রাউন্ডে অনুরোধ করা হয়েছে। একবার সাড়া পেলে ওয়েব পেজ সেই অনুযায়ী আপডেট করা হয়।


এ নেভিগেট করুন স্থির/ আপনার প্রোজেক্ট ডিরেক্টরিতে ডিরেক্টরিটি নিম্নরূপ:

$সিডিস্থির/


নিচের কমান্ড দিয়ে অসাধারণ ফন্ট ডাউনলোড করুন:

$wgethttps://use.fontawesome.com/রিলিজ/v5.15.1/fontawesome-free-5.15.1-web.zip


একবার ফন্ট অসাধারণ ডাউনলোড হয়ে গেলে, আপনার নতুন জিপ ফাইলটি খুঁজে পাওয়া উচিত fontawesome-free-5.15.1-web.zip মধ্যে স্থির/ ডিরেক্টরি।

$ls -এলএইচ


আনজিপ করুন fontawesome-free-5.15.1-web.zip নিম্নলিখিত কমান্ড দিয়ে ফাইল করুন:

$আনজিপfontawesome-free-5.15.1-web.zip


দ্য fontawesome-free-5.15.1-web.zip ফাইলটি এখন আনজিপ করা উচিত।


নতুন ডিরেক্টরি fontawesome-free-5.15.1-web/ স্ট্যাটিক/ ডিরেক্টরিতে তৈরি করা উচিত, যেমন আপনি নীচের স্ক্রিনশটে দেখতে পারেন।

$ls -এলএইচ

ডিরেক্টরিটির নাম পরিবর্তন করুন fontawesome-free-5.15.1-web/ প্রতি অসাধারণ/ নিম্নলিখিত কমান্ড দিয়ে:

$mv -ভিfontawesome-free-5.15.1-web fontawesome


এখন, আপনার আর দরকার নেই fontawesome-free-5.15.1-web.zip ফাইল সুতরাং, সরান fontawesome-free-5.15.1-web.zip নিম্নলিখিত কমান্ড দিয়ে ফাইল করুন:

$আরএম -ভিfontawesome-free-5.15.1-web.zip


দ্য স্থির/ নীচের স্ক্রিনশটে দেখানো হিসাবে ডিরেক্টরি কাঠামো দেখতে হবে।

$ls -এলএইচ


প্রকল্প ডিরেক্টরিতে ফিরে যান /www নিম্নরূপ:

$সিডি..

হোম অটোমেশন ওয়েব অ্যাপ পরীক্ষা করা হচ্ছে

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

$FLASK_APP= server.py ফ্লাস্ক রান


ওয়েব অ্যাপটি আপনার রাস্পবেরি পাই এর 5000 পোর্টে পাওয়া উচিত।


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

নিচের ছবিতে নির্দেশিত লাইটব্লব আইকনে ক্লিক করুন।


এসি লাইট বাল্ব এখন চালু করা উচিত। আইকনের রঙটিও সবুজ রঙে পরিবর্তিত হওয়া উচিত, ইঙ্গিত করে যে লাইট বাল্ব চালু আছে।


সুতরাং, হোম অটোমেশন ওয়েব অ্যাপ কাজ করছে। টিপুন + গ ওয়েব সার্ভার বন্ধ করার জন্য।

হোম অটোমেশন ওয়েব অ্যাপের জন্য সিস্টেমড পরিষেবা তৈরি করা

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

প্রথমে, তৈরি করুন raspi-home-automation.service আপনার প্রকল্প ডিরেক্টরিতে ফাইলটি নিম্নরূপ:

$ন্যানোraspi-home-automation.service

Raspi-home-automation.service ফাইলে নিচের লাইনগুলো টাইপ করুন।

[ইউনিট]
বর্ণনা= রাস্পবেরি পাই হোম অটোমেশন ওয়েব সার্ভিস
পরে= network. Target
[সেবা]
ওয়ার্কিং ডিরেক্টরি=/বাড়ি/পাই/www
পরিবেশ=FLASK_APP= server.py
পরিবেশ=FLASK_ENV= উৎপাদন
ExecStart=/ইউএসআর/আমি/ফ্লাস্ক রান-হোস্ট= 0.0.0.0
স্ট্যান্ডার্ড আউটপুট= উত্তরাধিকার
মান ত্রুটি= উত্তরাধিকার
আবার শুরু= সবসময়
ব্যবহারকারী= পাই
[ইনস্টল করুন]
ওয়ান্টেডবি= মাল্টি-ইউজার. টার্গেট

একবার হয়ে গেলে, টিপুন + এক্স অনুসরণ করে এবং এবং সংরক্ষণ করতে raspi-home-automation.service ফাইল


কপি করুন raspi-home-automation.service ফাইল /etc/systemd/system/ নিম্নলিখিত কমান্ড সহ ডিরেক্টরি:

$sudo cp -ভিraspi-home-automation.service/ইত্যাদি/পদ্ধতি/পদ্ধতি/


পরিবর্তনগুলি কার্যকর হওয়ার জন্য systemd ডেমনগুলি পুনরায় লোড করুন:

$sudosystemctl ডেমন-পুনরায় লোড


যুক্ত করুন রাস্পি-হোম-অটোমেশন নিম্নলিখিত কমান্ড সহ রাস্পবেরি পাই ওএসের সিস্টেম স্টার্টআপের পরিষেবা:

$sudosystemctlসক্ষম করুনraspi-home-automation.service


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

$sudoরিবুট


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

$sudosystemctl অবস্থা raspi-home-automation.service

অন্যান্য ডিভাইস থেকে হোম অটোমেশন ওয়েব অ্যাপ অ্যাক্সেস করা

আপনার হোম নেটওয়ার্কের অন্যান্য ডিভাইস থেকে হোম অটোমেশন ওয়েব অ্যাপ অ্যাক্সেস করতে, আপনাকে আপনার রাস্পবেরি পাই ডিভাইসের আইপি ঠিকানা জানতে হবে।

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


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

$হোস্টনাম -আমি


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

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


ওয়াল পাওয়ার আউটলেটে লাইট বাল্ব প্লাগ লাগাতে ভুলবেন না।


লাইট বাল্বটি ডিফল্টভাবে বন্ধ করা উচিত।


আপনি যদি হোম অটোমেশন ওয়েব অ্যাপ থেকে লাইটব্লব আইকনটি ট্যাপ করেন, তাহলে লাইটব্লব আইকনের রঙ সবুজতে পরিবর্তিত হওয়া উচিত, যা ইঙ্গিত করে যে লাইটব্লব চালু আছে।


আপনি নিচের ছবিতে দেখতে পাচ্ছেন, লাইট বাল্ব চালু আছে।

উপসংহার

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