কম্পিউটার

একটি রাস্পবেরি পাই জিমেইল নোটিফিকেশন লাইট তৈরি করুন

এই দ্রুত এবং সহজ রাস্পবেরি পাই প্রকল্পে, আপনি শিখবেন কিভাবে একটি Gmail ইমেল বিজ্ঞপ্তি আলো তৈরি করতে হয়। আপনার যদি কোনো অপঠিত ইমেল থাকে, একটি পাইথন স্ক্রিপ্ট LED চালু করে। এই প্রকল্পের খুব কম অংশ প্রয়োজন, এবং এক ঘন্টার মধ্যে সম্পন্ন করা যেতে পারে! আপনি অবশ্যই আপনার এলইডি আপনার পছন্দ মতো সাজাতে পারেন, যেমন একটি মাইনক্রাফ্ট রেডস্টোন ব্লক বা পরিষ্কার প্লাস্টিকে মুদ্রিত অন্য বস্তু 3D। এখানে শেষ ফলাফল:

আপনার যা প্রয়োজন

  • 1 x রাস্পবেরি পাই
  • 1 x ব্রেডবোর্ড
  • 1 x 220 ওহম রোধ
  • 1 x 5mm LED
  • 1 x জিমেইল অ্যাকাউন্ট
  • পুরুষ থেকে মহিলা হুক আপ তারগুলি

যেকোন রাস্পবেরি পাই এই প্রকল্পের জন্য কাজ করবে -- এমনকি পাই জিরো! শুধুমাত্র একটি GPIO পিন প্রয়োজন, এবং এটি বিশেষ করে CPU নিবিড় নয়। যদি আপনার কাছে একটি পাই স্টার্টার কিট থাকে তবে এটি সম্পূর্ণ করার জন্য আপনার কাছে যথেষ্ট যন্ত্রাংশ রয়েছে৷

পরিকল্পনা তৈরি করুন

একটি রাস্পবেরি পাই জিমেইল নোটিফিকেশন লাইট তৈরি করুন

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

হার্ডওয়্যার

একটি রাস্পবেরি পাই জিমেইল নোটিফিকেশন লাইট তৈরি করুন

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

পাই সেটআপ

একটি রাস্পবেরি পাই জিমেইল নোটিফিকেশন লাইট তৈরি করুন

আপনার Pi প্রদান করার জন্য একটি অপারেটিং সিস্টেম (OS) ইনস্টল করা আছে সেখানে অনেক সেটআপের প্রয়োজন নেই (আপনার কী প্রয়োজন তা নিশ্চিত নন? কীভাবে একটি এখানে ইনস্টল করবেন তা শিখুন)। একটি নতুন টার্মিনাল খুলুন (উপরে বাম> মেনু> আনুষাঙ্গিক> টার্মিনাল ) পাইতে (আপনাকে একটি কোডিং নিনজা তৈরি করতে এই শর্টকাটগুলি দেখুন)। পাইথন স্ক্রিপ্ট সংরক্ষণ করার জন্য আপনাকে একটি নতুন ফোল্ডার তৈরি করতে হবে। অনুসরণ কমান্ড লিখুন:

pwd

এটি "প্রিন্ট ওয়ার্কিং ডিরেক্টরি" এর জন্য দাঁড়িয়েছে, এবং আপনি কোন ফোল্ডারে আছেন তা আপনাকে দেখাবে (ডিফল্টরূপে এটি "/home/pi")। ডকুমেন্ট ফোল্ডারে নেভিগেট করুন এবং "gmail_python" নামে একটি নতুন ডিরেক্টরি (ফোল্ডার) তৈরি করুন:

cd Documents/
sudo mkdir gmail_python

"mkdir" কমান্ডের অর্থ হল "মেক ডিরেক্টরী"। এই নিম্নলিখিত যে কোনো কিছু ডিরেক্টরি নামের জন্য ব্যবহার করা হবে. আপনি এখন আপনার ডিরেক্টরি দেখতে সক্ষম হবেন:

ls

আপনি যদি ভুল করে থাকেন, আপনি সহজেই এই ডিরেক্টরিটি সরাতে পারেন:

sudo rm -r gmail_python

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

cd gmail_python/

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

sudo nano check_messages.py

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

ঠাট্টা একপাশে, সম্পূর্ণ বিচ্ছেদের জন্য উভয়ের মধ্যে এই তুলনাটি দেখুন।

CTRL + X টিপুন ন্যানো থেকে প্রস্থান করতে এবং টার্মিনালে ফিরে যেতে।

পাইথন সেটআপ

একটি রাস্পবেরি পাই জিমেইল নোটিফিকেশন লাইট তৈরি করুন

এখন যেহেতু Pi সেটআপ করা হয়েছে, কোড লেখার সময় এসেছে। এই প্রকল্পের জন্য চার্লি গুওর চমৎকার Gmail পাইথন লাইব্রেরি প্রয়োজন। 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)

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

এর কোড ভাঙ্গন করা যাক. প্রথমে কিছু মডিউল আমদানি করা হয়। পাইথনের মডিউলগুলি একটি উদ্দেশ্যের জন্য লেখা কোডের ছোট টুকরো (Arduino IDE-এর লাইব্রেরির মতো)। RPi.GPIO হল GPIO অ্যাক্সেস করার জন্য একটি Pi নির্দিষ্ট মডিউল, gmail হল সেই মডিউল যা আপনি আগে ডাউনলোড করেছেন এবং সময় হল একটি মডিউল যা পাইথনে টাইমিং ফাংশন প্রদান করার জন্য তৈরি করা হয়েছে। এখন "GPIO.setmode" এবং "GPIO.setup" ব্যবহার করা হয় Pi কে জানাতে যে পিন 14 একটি আউটপুট, এবং আপনি "ব্রডকম পিন নম্বরিং" (BCM সম্পর্কে আরও তথ্য) ব্যবহার করতে চান।

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

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

এখন সমস্ত অপঠিত বার্তাগুলি পুনরুদ্ধার করুন এবং সেগুলিকে "অপঠিত বার্তা" নামক একটি ভেরিয়েবলে সংরক্ষণ করুন:

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

লক্ষ্য করুন কিভাবে "unread=True" প্যারামিটার হিসাবে পাস করা হয় -- আপনি প্রেরক বা বিষয়ের মতো বিভিন্ন প্যারামিটারের উপর ভিত্তি করে বার্তাগুলি পুনরুদ্ধার করতে এটি পরিবর্তন করতে পারেন। আরও অনেক তথ্যের জন্য অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) ডকুমেন্টেশন দেখুন।

এর পরে, প্রতিটি বার্তা লুপ করার জন্য একটি লুপ ব্যবহার করা হয়:

for message in unread_messages:
total_messages += 1

loops জন্য খুব দরকারী. তারা কোডের একটি ব্লককে বেশ কয়েকবার পুনরাবৃত্তি করে, প্রায়ই প্রতিবার একটু ভিন্ন মান সহ। লুপের জন্য এটি অপঠিত_বার্তার প্রতিটি বার্তার উপর দিয়ে যায় এবং "টোটাল_মেসেজ" ভেরিয়েবলকে বৃদ্ধি করে।

অবশেষে, কিছু সহজ "যদি" বিবৃতি ব্যবহার করা হয়। অপঠিত বার্তা থাকলে, LED চালু করুন, অন্যথায় বন্ধ করুন।

মনে রাখবেন পাইথন কেস সংবেদনশীল, এবং সাদা ব্যবধান ব্যবহার করে। কোডটি চালানোর জন্য আপনার সমস্যা হলে, এই ওয়েবসাইটটি চেষ্টা করুন। আপনার পাইথন পেস্ট করুন এবং "পাইথন কোডের উপরে যাচাই করুন" বোতাম টিপুন। এটি আপনাকে বলে দেবে যে আপনার পাইথনে কী (যদি থাকে) ত্রুটি রয়েছে৷

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

python check_messages.py

এই কমান্ডটি আপনার স্ক্রিপ্ট চালাবে। আপনার ইনবক্সের কিছু ইমেল অপঠিত অবস্থায় ম্যানুয়ালি পরিবর্তন করে আবার স্ক্রিপ্ট চালানোর চেষ্টা করুন -- আপনার ইনবক্স প্রতিফলিত করতে LED চালু বা বন্ধ দেখতে হবে।

ক্রন সেটআপ

এখন যখন স্ক্রিপ্টটি কাজ করে তখন এটি স্বয়ংক্রিয় করার সময়। এটি করার সবচেয়ে সহজ উপায় হল একটি ক্রন কাজের মাধ্যমে। ক্রোন জবগুলি কাজ এবং স্ক্রিপ্টের সময় নির্ধারণ করতে ব্যবহৃত হয়, যেমন স্বয়ংক্রিয় ব্যাকআপ। Crontab খুলুন (নির্ধারিত কাজের তালিকা):

crontab -e

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

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

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

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

যদিও আপনি আপনার নোটিফিকেশন বক্স কোডিং শেষ করেন, আমি মন্তব্যে জানতে চাই যে এটি কীভাবে যায়!


  1. কীভাবে আপনার জিমেইল কাজ করবেন এবং গুগল ইনবক্সের মতো দেখতে পাবেন

  2. আপনাকে আরও বেশি উত্পাদনশীল করতে Gmail এর জন্য 5টি দুর্দান্ত ক্রোম এক্সটেনশন৷

  3. কীভাবে Gmail এ পরিচিতিগুলির একটি গ্রুপ তৈরি করবেন

  4. কীভাবে একটি এলইডি লাইট সেটআপ করবেন এবং কোড দিয়ে এটি ব্লিঙ্ক করবেন