इस त्वरित और आसान Raspberry Pi प्रोजेक्ट में, आप सीखेंगे कि Gmail ईमेल नोटिफिकेशन लाइट कैसे बनाएं। यदि आपके पास कोई अनरीड ईमेल है, तो एक Python स्क्रिप्ट LED को चालू कर देती है। इस प्रोजेक्ट के लिए बहुत कम पार्ट्स की आवश्यकता होती है, और इसे एक घंटे से कम समय में पूरा किया जा सकता है! आप अपने LED को किसी भी तरह से सजा सकते हैं, जैसे Minecraft रेडस्टोन ब्लॉक, या क्लियर प्लास्टिक में 3D प्रिंटेड अन्य ऑब्जेक्ट। यहां अंतिम परिणाम है:
आपको क्या चाहिए
- 1 x Raspberry Pi
- 1 x ब्रेडबोर्ड
- 1 x 220 ओम रेजिस्टर
- 1 x 5mm LED
- 1 x Gmail खाता
- मेल टू फीमेल हुक अप वायर्स
कोई भी Raspberry Pi इस प्रोजेक्ट के लिए काम करेगा - यहां तक कि Pi Zero भी! केवल एक GPIO पिन की आवश्यकता है, और यह विशेष रूप से CPU गहन नहीं है। यदि आपके पास Pi स्टार्टर किट है तो आपके पास इस प्रोजेक्ट को पूरा करने के लिए पर्याप्त से अधिक पार्ट्स हैं।
बिल्ड योजना
यह वास्तव में एक सरल प्रोजेक्ट है। एक लाइट एमिटिंग डायोड (LED) को Pi पर एक GPIO (जनरल पर्पस इनपुट आउटपुट) पिन से जोड़ा जाता है। एक बहुत ही सरल Python स्क्रिप्ट नियमित रूप से अनरीड ईमेल की जांच करने और LED को तदनुसार चालू या बंद करने के लिए चलेगी।
हार्डवेयर
LED के पॉजिटिव एनोड (लंबा पैर) को रेजिस्टर से और फिर GPIO पिन 14 से कनेक्ट करें। आप किसी भी GPIO पिन का उपयोग कर सकते हैं, हालांकि पहले पिनआउट देख लें, क्योंकि वे मॉडल के बीच थोड़ा भिन्न होते हैं। नेगेटिव कैथोड (फ्लैट एज वाला छोटा पैर) को ग्राउंड से कनेक्ट करें।
Pi सेटअप
बशर्ते आपके Pi पर ऑपरेटिंग सिस्टम (OS) इंस्टॉल हो, अधिक सेटअप की आवश्यकता नहीं है (यकीन नहीं है कि आपको क्या चाहिए? यहां इंस्टॉल करना सीखें)। Pi पर एक नया टर्मिनल खोलें (शीर्ष बाएं > मेनू > Accessories > Terminal) (इन शॉर्टकट्स को देखें जो आपको कोडिंग निंजा बना देंगे)। Python स्क्रिप्ट को स्टोर करने के लिए एक नया फोल्डर बनाने की आवश्यकता है। निम्न कमांड दर्ज करें:
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/
एक नई Python स्क्रिप्ट बनाएं:
sudo nano check_messages.py
यह स्क्रिप्ट बनाएगा और इसे Nano में संपादन के लिए खोल देगा। आप निश्चित रूप से Vim जैसे किसी अन्य प्रोग्राम का उपयोग कर सकते हैं, हालांकि यह ट्वीट उसके बारे में मेरी भावनाओं को सारांशित करता है:
मजाक एक तरफ, पूर्ण ब्रेकडाउन के लिए दोनों के बीच इस तुलना को देखें।
Nano से बाहर निकलने और टर्मिनल पर वापस जाने के लिए CTRL + X दबाएं।
Python सेटअप
अब जब Pi सेटअप हो गया है, तो कोड लिखने का समय है। इस प्रोजेक्ट के लिए चार्ली गुओ द्वारा उत्कृष्ट Gmail Python लाइब्रेरी की आवश्यकता है। लाइब्रेरी को Github से डाउनलोड करें और सामग्री निकालें। अंदर "gmail" नामक एक फोल्डर होना चाहिए। इस पूरे फोल्डर को "/home/pi/Documents/gmail_python" में कॉपी करें।
कमांड लाइन पर वापस जाएं और अपनी स्क्रिप्ट को फिर से खोलें (यदि आप अप की दबाते हैं तो आप अपने पहले दर्ज किए गए कमांड्स के माध्यम से स्क्रॉल कर सकते हैं):
sudo nano check_messages.py
ध्यान दें कि यह वही कमांड है जिसका उपयोग आपने फाइल बनाने के लिए किया था - यदि फाइल पहले से मौजूद है तो यह खुल जाएगी, अन्यथा यह बन जाएगी। यहां Python कोड है:
import gmail, RPi.GPIO as GPIO, time # मॉड्यूल आयात करें
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # Pi को बताएं कि किन हेडर्स का उपयोग करना है
GPIO.setup(14, GPIO.OUT) # Pi को बताएं कि यह पिन एक आउटपुट है
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:
# अनरीड ईमेल हैं, लाइट चालू करें
GPIO.output(14, True)
else:
# कोई अनरीड ईमेल नहीं हैं, लाइट बंद करें
GPIO.output(14, False)
इसके काम करने के लिए आपको अपना उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा। यदि आप चाहें तो gmail प्लगइन के लिए पूर्ण स्रोत कोड देख सकते हैं। यदि आप ऐसा करने में सहज महसूस नहीं करते (या आप टू-फैक्टर ऑथेंटिकेशन का उपयोग कर रहे हैं) तो आपको OAuth2 का उपयोग करके Gmail से कनेक्ट करना होगा। यह इस ट्यूटोरियल के लिए थोड़ा जटिल है, हालांकि Google के पास एक उत्कृष्ट आरंभ करने की गाइड है।
आइए कोड को तोड़ते हैं। पहले कुछ मॉड्यूल आयात किए जाते हैं। Python में मॉड्यूल एक उद्देश्य के लिए लिखे गए कोड के छोटे टुकड़े होते हैं (Arduino IDE में लाइब्रेरी के समान)। RPi.GPIO GPIO तक पहुंच के लिए एक Pi-विशिष्ट मॉड्यूल है, gmail वह मॉड्यूल है जिसे आपने पहले डाउनलोड किया था, और time Python में अंतर्निहित एक मॉड्यूल है जो टाइमिंग फंक्शन प्रदान करता है। अब "GPIO.setmode" और "GPIO.setup" का उपयोग Pi को यह बताने के लिए किया जाता है कि पिन 14 एक आउटपुट है, और आप "Broadcom Pin Numbering" का उपयोग करना चाहते हैं (BCM के बारे में अधिक जानकारी)।
यह लाइन आपके Gmail खाते से जुड़ती है। यह "g" नामक एक ऑब्जेक्ट बनाता है, और पहले आयात किए गए gmail मॉड्यूल की लॉगिन विधि को कॉल करता है। अपना Gmail ईमेल और पासवर्ड दर्ज करना न भूलें।
g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')
अब सभी अनरीड संदेशों को पुनः प्राप्त करें और उन्हें "unread_messages" नामक वेरिएबल में स्टोर करें:
unread_messages = g.inbox().mail(unread=True)
ध्यान दें कि "unread=True" को पैरामीटर के रूप में पास किया गया है - आप इसे प्रेषक या विषय जैसे विभिन्न पैरामीटर्स के आधार पर संदेशों को पुनः प्राप्त करने के लिए बदल सकते हैं। अधिक जानकारी के लिए API डॉक्यूमेंटेशन देखें।
इसके बाद, प्रत्येक संदेश पर लूप करने के लिए एक फॉर लूप का उपयोग किया जाता है:
for message in unread_messages:
total_messages += 1
फॉर लूप बहुत उपयोगी होते हैं। वे कोड के एक ब्लॉक को कई बार दोहराते हैं, अक्सर हर बार थोड़े अलग मान के साथ। यह फॉर लूप unread_messages में हर संदेश पर जाता है और "total_messages" वेरिएबल को बढ़ाता है।
अंत में, कुछ सरल "if" स्टेटमेंट्स का उपयोग किया जाता है। यदि अनरीड संदेश हैं, तो LED चालू करें, अन्यथा इसे बंद करें।
याद रखें कि Python केस-संवेदनशील है, और व्हाइट स्पेसिंग का उपयोग करता है। यदि आपको कोड चलाने में समस्या हो रही है, तो इस वेबसाइट को आजमाएं। अपना Python पेस्ट करें और "validate above python code" बटन दबाएं। यह तब आपको बताएगा कि आपके Python में क्या (यदि कोई) त्रुटियां मौजूद हैं।
टर्मिनल पर स्विच करें और अपनी स्क्रिप्ट चलाएं:
python check_messages.py
यह कमांड आपकी स्क्रिप्ट चलाएगी। अपने इनबॉक्स में कुछ ईमेल को मैन्युअल रूप से अनरीड स्टेटस में बदलने का प्रयास करें और स्क्रिप्ट को फिर से चलाएं - आपको LED को अपने इनबॉक्स को प्रतिबिंबित करते हुए चालू या बंद होते देखना चाहिए।
Cron सेटअप
अब जब स्क्रिप्ट काम करती है तो इसे स्वचालित करने का समय है। ऐसा करने का सबसे आसान तरीका cron जॉब के माध्यम से है। Cron जॉब्स का उपयोग कार्यों और स्क्रिप्ट्स को शेड्यूल करने के लिए किया जाता है, जैसे स्वचालित बैकअप। Crontab (शेड्यूल किए गए कार्यों की सूची) खोलें:
crontab -e
यदि पहले से कोई शेड्यूल किया गया कार्य सेटअप नहीं है, तो यह फाइल खाली होगी (इसमें डॉक्यूमेंटेशन या टिप्पणियां हो सकती हैं, जिनसे "#" से पहले)। यदि आपके पास यहां पहले से एंट्रीज हैं, तो बस एक नई लाइन पर अपना नया कमांड दर्ज करें:
* * * * * python ~/pi/Documents/gmail_python/check_messages.py
पांच "सितारे" ("* * * * *") निर्दिष्ट करते हैं कि कार्य को कितनी बार चलाना है (आप यहां वास्तव में फैंसी प्राप्त कर सकते हैं, जैसे हर दूसरे बुधवार को दोपहर 2.00 बजे)। ये पांच सितारे निर्दिष्ट करते हैं कि कार्य को हर मिनट चलाया जाना चाहिए। यह अनुमत सबसे छोटा अंतराल है (cronjob शेड्यूलिंग के बारे में अधिक जानें)। अगला, "python" शेड्यूलर को स्क्रिप्ट को Python फाइल के रूप में निष्पादित करने के लिए कहता है। अंत में, "~/pi/Documents/gmail_python/check_messages.py" आपकी स्क्रिप्ट का पूर्ण फाइल पथ है - एक सापेक्ष पथ काम नहीं करेगा।
अब आपके पास अपना खुद का Gmail नोटिफिकेशन लाइट होना चाहिए! इसे किसी भिन्न आवश्यकता या फिल्टर के आधार पर संदेशों को देखने के लिए संशोधित करना काफी सरल होगा (फिल्टर्स का उपयोग करना यहां सीखें), या कोड का एक अलग टुकड़ा निष्पादित करें - शायद आप एक Twitter बॉट बना सकते हैं जो ईमेल के आधार पर ट्वीट करता है (Pi Twitter बॉट बनाने के बारे में अधिक जानें)।
आप अपने नोटिफिकेशन बॉक्स को कैसे भी कोड करते हैं, मुझे कमेंट में बताएं कि यह कैसे गया!