Chapter 4: E-mail notifier with Raspberry pi | পর্ব ৪ঃ ই-মেইল নোটিফায়ার
ধরা যাক আপনি কোনো কাজে ব্যস্ত। এদিকে গুরুত্বপূর্ণ একটা ই-মেইলও আসার কথা। বারবার আপনাকে মেইল চেক করতে হচ্ছে। কিংবা বাড়িতে আপনজন কেউ অসুস্থ। আপনি অফিসেও যেতে পারেননি। বারবার ই-মেইল চেক করতে না পারায় জরুরি মেইলের উত্তর দিতে বেশ দেরি হয়ে যাচ্ছে।
এইসব পরিস্থিতিতে একটা ই-মেইল নোটিফায়ার থাকলে কেমন হয়? যেটি একনজর দেখলেই জানা যাবে কোনো মেইল এসেছে কী আসেনি? হ্যাঁ, এরকমই একটি ই-মেইল নোটিফায়ার আমরা তৈরী করব রাসবেরি পাই দিয়ে।
কার্যপ্রনালীঃ
ই-মেইল নোটিফায়ারে রাসবেরি পাইয়ের সাথে কানেক্টেট থাকছে দুটি এলইডি। একটি লাল, একটি সবুজ। যখন আপনার ইনবক্সে কোনো Unread ইমেইল থাকবে তখন সবুজ এলইডি জ্বলবে, যখন কোনো Unread ইমেইল থাকবে না তখন লাল এলইডি জ্বলবে। অর্থ্যাৎ, নতুন ইমেইল এসেছে কী আসেনি তা আপনি এই সেটআপের কোন এলইডি জ্বলছে তা একবার দেখেই বুঝে যাবেন।
প্রয়োজনীয় যন্ত্রপাতিঃ
এই টিউটোরিয়াল শুরু করার আগে আপনাকে অবশ্যই রাসবেরি পাই পরিচিতি নামক টিউটোরিয়ালটি পড়ে আসতে হবে। একটি রাসবেরি পাইকে সচল করতে কী কী প্রয়োজন তা উপরোল্লেখিত টিউটোরিয়ালে ইতোমধ্যে আলোচনা করা হয়েছে। এগুলো ছাড়াও আমাদের এই টিউটোরিয়ালের জন্য যা যা লাগবে সেগুলো হল-
প্রয়োজনীয় যন্ত্রপাতি | পরিমান |
Breadboard | 1 |
100 ohm resistor | 1 |
Male to Female jumpers | 3 |
Red LED | 1 |
Green LED | 1 |
সার্কিটঃ
রাসবেরি পাই এবং দুটি এলইডির মধ্যে নিচের কানেকশনটি সম্পন্ন করি।
Raspberry pi | Components |
GPIO 18 | Positive side of Green LED through a 100K resistor. |
GPIO 15 | Positive side of Red LED through a 100K resistor. |
GND | GND |
প্রোগ্রামঃ
এই প্রজেক্টের কোড বেশি বড় না, কিন্তু কোড লেখার আগে বেশকিছু প্রস্তুতি আছে। প্রথমে আমাদের ‘pip’ ইনস্টল করতে হবে। পিআইপি হচ্ছে পাইথনের সফটওয়্যার ইনস্টল এবং ম্যানেজ করার জন্য প্রয়োজনীয় একটি প্যাকেজ ম্যানেজমেন্ট সিস্টেম। পিআইপি যদি অলরেডি ইন্সটল করা না থাকে তাহলে রাসবেরি পাইয়ের কমান্ড প্রম্পটে গিয়ে নিচের কোডটি লিখে ইন্সটল করে নিন।
sudo apt-get install python-pip
উপরের মেসেজটি আসলে Y চাপুন।
এরপর আমরা IMAPClient নামক পাইথন লাইব্রেরি ইন্সটল করব। এই লাইব্রেরির মাধ্যমেই ইমেইল সার্ভিসের সাথে রাসবেরি পাইয়ের সংযোগ স্থাপিত হবে। IMAPClient ইন্সটল করতে নিচের কোডটি লিখুন।
sudo pip install imapclient
এবার IDLE 3 তে নিচের কোডটি লিখি। e-mail id এর জায়গায় আপনার জিমেইল আইডির @ চিহ্নের আগের অংশ এবং password এর জায়গায় পাসওয়ার্ড লিখুন।
import RPi.GPIO as GPIO, imaplib, time
DEBUG = 1
USERNAME = "e-mail id" # just the part before the @ sign, add yours here
PASSWORD = "password"
NEWMAIL_OFFSET = 0
MAIL_CHECK_FREQ = 60 # check mail every 60 seconds
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GREEN_LED = 18
RED_LED = 15
GPIO.setup(GREEN_LED, GPIO.OUT)
GPIO.setup(RED_LED, GPIO.OUT)
M = imaplib.IMAP4_SSL('imap.gmail.com','993')
sessionValid = True
try:
M.login(USERNAME, PASSWORD)
print ("LOGIN SUCCESSFULL")
except Exception as e:
print (e)
print ("LOGIN FAILED!!! ")
sessionValid= False
while sessionValid:
M.select()
newmails = len(M.search(None, 'UnSeen')[1][0].split()) # from http://stackoverflow.com/a/3984850
if newmails > NEWMAIL_OFFSET:
GPIO.output(GREEN_LED, True)
GPIO.output(RED_LED, False)
print ("New mail")
else:
GPIO.output(GREEN_LED, False)
GPIO.output(RED_LED, True)
print ("No new mail")
time.sleep(MAIL_CHECK_FREQ)
প্রোগ্রাম রান করার পর ইনবক্সে নতুন ই-মেইল আসলে বা Unread ই-মেইল থাকলে সবুজ এলইডি জ্বলবে। সব মেসেজ পড়া হয়ে গেলে লাল এলইডি জ্বলে থাকবে।
মনিটরেও লিখিত আকারে নতুন মেসেজ সংক্রান্ত তথ্য দেখা যাবে।