কম্পিউটার টিউটোরিয়াল

রাসবেরি পাই দিয়ে জিমেইল নোটিফিকেশন লাইট বানান

এই কুইক ও ইজি রাসবেরি পাই প্রজেক্টে আপনি শিখবেন কীভাবে জিমেইল ইমেল নোটিফিকেশন লাইট বানাতে হয়। আপনার আনরিড ইমেল থাকলে একটি পাইথন স্ক্রিপ্ট LED অন করবে। এই প্রজেক্টে খুব কম পার্টস লাগে, এবং এক ঘণ্টার কম সময়ে সম্পন্ন করা যায়! আপনি LED যেভাবে চান সেভাবে সাজাতে পারেন, যেন Minecraft রেডস্টোন ব্লক, বা অন্যান্য ৩D প্রিন্টেড ক্লিয়ার প্লাস্টিক অবজেক্ট। ফলাফল:

প্রয়োজনীয় সামগ্রী

  • ১ x রাসবেরি পাই
  • ১ x ব্রেডবোর্ড
  • ১ x ২২০ ওম রেজিস্টর
  • ১ x ৫মিমি LED
  • ১ x জিমেইল একাউন্ট
  • মেইল টু ফিমেল হুক-আপ ওয়ার্স

এই প্রজেক্টে যেকোনো রাসবেরি পাই কাজ করবে - Pi Zero-ও! শুধু একটি GPIO পিন দরকার, এবং এটি 특별히 CPU ইনটেনসিভ নয়। আপনার পাই স্টার্টার কিট থাকলে প্রজেক্ট সম্পন্ন করার জন্য যথেষ্ট পার্টস আছে।

বিল্ড প্লান

রাসবেরি পাই দিয়ে জিমেইল নোটিফিকেশন লাইট বানান

এটি খুব সিম্পল প্রজেক্ট। একটি Light Emitting Diode (LED) Pi-এর GPIO (General Purpose Input Output) পিনের সাথে সংযুক্ত। একটি খুব সিম্পল পাইথন স্ক্রিপ্ট নিয়মিত রান করবে আনরিড ইমেল চেক করতে এবং LED অন/অফ করবে।

হার্ডওয়্যার সংযোগ

রাসবেরি পাই দিয়ে জিমেইল নোটিফিকেশন লাইট বানান

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

পাই সেটআপ

রাসবেরি পাই দিয়ে জিমেইল নোটিফিকেশন লাইট বানান

আপনার পাই-তে অপারেটিং সিস্টেম (OS) ইনস্টল্ড থাকলে আর অনেক সেটআপ দরকার নেই (নিশ্চিত নন কী দরকার? ইন্সটল করার পদ্ধতি জানুন এখানে)। পাই-তে একটি নতুন টার্মিনাল খুলুন (Top left > menu > Accessories > Terminal) (এই শর্টকাটগুলো আপনাকে কোডিং নিনজা বানাবে)। পাইথন স্ক্রিপ্ট স্টোর করার জন্য একটি নতুন ফোল্ডার তৈরি করন। নিচের কমান্ড দিন:

pwd

এটি "Print Working Directory" 의미, আপনি কোন ফোল্ডারে আছেন তা দেখাবে (ডিফল্টভাবে "/home/pi")। ডকুমেন্টস ফোল্ডারে নেভিগেট করুন এবং "gmail_python" নামে একটি নতুন ডিরেক্টরি তৈরি করুন:

cd Documents/
sudo mkdir gmail_python

"mkdir" কমান্ড 의미 "Make Directory"। এর পরে যা আসবে সেটি ডিরেক্টরির নাম হিসেবে ব্যবহার হবে। এখন আপনার ডিরেক্টরি দেখতে পাবেন:

ls

ভুল হলে ডিরেক্টরি সহজে মুছে ফেলা যায়:

sudo rm -r gmail_python

এখন নতুন ডিরেক্টরিতে নেভিগেট করুন:

cd gmail_python/

নতুন পাইথন স্ক্রিপ্ট তৈরি করুন:

sudo nano check_messages.py

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

মজা পাশাপাশি, দুটির তুলনামূলক ব্রেকডাউন জানতে এই লিংক দেখুন।

Nano থেকে বের হওয়ার জন্য CTRL + X চাপুন।

পাইথন সেটআপ

রাসবেরি পাই দিয়ে জিমেইল নোটিফিকেশন লাইট বানান

পাই সেটআপ হলে কোড লিখার পালা। এই প্রজেক্টে Charlie Guo-এর Excellent Gmail Python Library দরকার। GitHub থেকে লাইব্রেরি ডাউনলোড করুন এবং এক্সট্র্যাক্ট করুন। ভিতরে "gmail" নামে একটি ফোল্ডার থাকবে। এই পুরো ফোল্ডার "/home/pi/Documents/gmail_python"-এ কপি করুন।

কম্যাণ্ড লাইনে ফিরে আপনার স্ক্রিপ্ট আবার খুলুন (আপ কি চাপলে পূর্বের কমান্ডগুলো স্ক্রোল হবে):

sudo nano check_messages.py

লক্ষ্য করুন এটি সেই কমান্ড যা ফাইল তৈরি করতে ব্যবহার করা হয়েছিল - যদি ফাইল এক্সিস্ট করে তবে খুলবে, নয়তো তৈরি হবে। পাইথন কোড:

import gmail, RPi.GPIO as GPIO, time # import modules
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output
g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')
unread_messages = g.inbox().mail(unread=True)
total_messages = 0
for message in unread_messages:
total_messages += 1
if total_messages > 0:
# there are unread emails, turn light on
GPIO.output(14, True)
else:
# there are no unread emails, turn light off
GPIO.output(14, False)

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

কোড ব্রেকডাউন: প্রথমে কিছু মডিউল ইম্পোর্ট। পাইথনে মডিউল ছোট কোড পিস যেগুলো নির্দিষ্ট উদ্দেশ্যে লেখা (Arduino IDE-র লাইব্রেরির মত)। RPi.GPIO পাই-স্পেসিফিক মডিউল GPIO এক্সেসের জন্য, gmail আগে ডাউনলোড করা মডিউল, time পাইথন বিল্ট-ইন টাইমিং ফাংশনস। "GPIO.setmode" এবং "GPIO.setup" দিয়ে পাই-কে বলা হয় পিন ১৪ আউটপুট, এবং "Broadcom Pin Numbering" (BCM সম্পর্কে আরও জানুন) ব্যবহার করতে চাই।

এই লাইন আপনার জিমেইল একাউন্টের সাথে কানেক্ট করে। এটি "g" নামে একটি অবজেক্ট তৈরি করে এবং আগে ইম্পোর্ট করা gmail মডিউলের login মেথড কল করে। আপনার জিমেইল ইমেল ও পাসওয়ার্ড দিতে ভুলবেন না।

g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')

এখন সকল আনরিড মেসেজ রিট্রিভ করুন এবং "unread_messages" ভেরিয়েবলে স্টোর করুন:

unread_messages = g.inbox().mail(unread=True)

লক্ষ্য করুন "unread=True" প্যারামিটার হিসেবে পাস করা হয়েছে - আপনি এটাকে চেঞ্জ করে সেন্ডার বা সাবজেক্ট বেসড মেসেজ রিট্রিভ করতে পারেন। API ডকুমেন্টেশন দেখুন আরও জানতে।

পরবর্তী, একটি for লুপ ব্যবহার করে প্রতিটি মেসেজের ওপর লুপ:

for message in unread_messages:
total_messages += 1

For লুপ খুব উপকারী। এটি একটি কোড ব্লক বারবার রিপিট করে, প্রায়শই কিছুটা ভিন্ন ভ্যালু দিয়ে। এই লুপ unread_messages-র প্রতিটি মেসেজের ওপর যায় এবং "total_messages" ভেরিয়েবল ইনক্রিমেন্ট করে।

শেষে, সিম্পল "if" স্টেটমেন্ট ব্যবহার করা হয়েছে। আনরিড মেসেজ থাকলে LED অন, নাইলে অফ।

মনে রাখবেন পাইথন কেস-সেনসিটিভ এবং হোয়াইটস্পেস ব্যবহার করে। কোড রান করতে সমস্যা হলে এই ওয়েবসাইট ট্রাই করুন। আপনার পাইথন পেস্ট করুন এবং "validate above python code" বাটন চাপুন। এটিম edad কোন এরর আছে সেটি বলে দেবে।

টার্মিনালে সইচ করুন এবং আপনার স্ক্রিপ্ট রান করুন:

python check_messages.py

এই কমান্ড আপনার স্ক্রিপ্ট রান করবে। ম্যানুয়ালি ইনবক্সের কিছু ইমেল আনরিড করে স্ক্রিপ্ট আবার রান করুন - LED অন/অফ হয়ে ইনবক্স রিফ্লেক্ট করবে।

ক্রন সেটআপ

স্ক্রিপ্ট কাজ করলে এটাকে অটোমেট করার পালা। সবচেয়ে সহজ পথ হলো ক্রন জব। ক্রন জব টাস্ক ও স্ক্রিপ্ট শিডিউল করতে ব্যবহার হয়, যেমন অটোমেটেড ব্যাকআপ। Crontab খুলুন (শিডিউলড টাস্কের লিস্ট):

crontab -e

যদি কোনো শিডিউলড টাস্ক না থাকে, ফাইলটি খালি থাকবে (ডকুমেন্টেশন বা কমেন্ট থাকতে পারে "#" দিয়ে শুরু হয়ে)। যদি ইতিমধ্যে এন্ট্রি থাকে, তবে নতুন কমান্ড নতুন লাইনে দিন:

* * * * * python ~/pi/Documents/gmail_python/check_messages.py

পাঁচটি "স্টার" ("* * * * *") নির্দেশ করে টাস্ক কতক্ষণ পরপর রান হবে (এখানে খুব ফ্যান্সি করা যায়, যেমন: প্রতিটি দ্বিতীয় বুধবার দুপুর ২টা)। এই পাঁচটি স্টার মানে টাস্ক প্রতি মিনিটে রান হবে। এটি ছোটতম ইন্টারভাল (ক্রনজব শিডিউলিং সম্পর্কে আরও জানুন)। পরপর, "python" শিডিউলারকে বলে স্ক্রিপ্ট পাইথন ফাইল হিসেবে এক্সিকিউট করতে। শেষে, "~/pi/Documents/gmail_python/check_messages.py" আপনার স্ক্রিপ্টের অ্যাবসোলিউট ফাইল পাথ - রিলেটিভ পাথ কাজ করবে না।

এখন আপনার নিজস্ব জিমেইল নোটিফিকেশন লাইট রেডি! এটি সহজে মডিফাই করা যাবে ভিন্ন রিকোয়ারমেন্ট বা ফিল্টার বেসড মেসেজ খুঁজতে (ফিল্টার ব্যবহার জানুন এখানে), বা ভিন্ন কোড এক্সিকিউট করতে - যেন আপনি একটি টুইটার বট বানান যা ইমেল বেসড টুইট করে (পাই টুইটার বট বানানোর পদ্ধতি জানুন)।

আপনি যেভাবেই আপনার নোটিফিকেশন বক্স কোড করুন, কমেন্টে জানান কেমন গেলো!

  1. জিমেইলকে গুগল ইনবক্সের মতো দেখানোর ও কাজ করানোর উপায়

  2. জিমেইলর জন্য ৫টি কার্যকর ক্রোম এক্সটেনশন যা আপনাকে আরও প্রোডাক্টিভ করবে

  3. জিমেইলে কন্ট্যাক্ট গ্রুপ (লেবেল) তৈরি করা

  4. LED সেটআপ এবং ব্লিংক করার জন্য প্রোগ্রাম: শুরুতে শিখার গাইড