I det här snabba och lätta Raspberry Pi-projektet får du lära dig hur du gör ett Gmail-e-postmeddelande. Om du har några olästa e-postmeddelanden, aktiverar ett Python-skript lysdioden på. Detta projekt kräver mycket få delar, och kan slutföras på under en timme! Du kan självklart klä din LED så som du vill, till exempel ett MineCraft redstone-block eller annat objekt 3D tryckt i tydlig plast. Här är slutresultatet:
Vad du behöver
- 1 x Raspberry Pi
- 1 x brödbräda
- 1 x 220 ohm motstånd
- 1 x 5mm LED
- 1 x Gmail-konto
- Man till kvinnlig haka upp ledningar
Alla Raspberry Pi kommer att fungera för detta projekt - även Pi Zero! Endast en GPIO-stift behövs, och det är inte särskilt CPU-intensiv. Om du har en Pi startpaket har du mer än tillräckligt många delar för att slutföra detta.
Byggplan
Detta är ett riktigt enkelt projekt. En lysdiod (LED) ansluts till en GPIO (Allmänna Ingång Utgång) på Pi. Ett mycket enkelt Python-skript körs regelbundet för att kontrollera till olästa e-postmeddelanden och aktivera eller inaktivera lysdioden i enlighet med detta.
Hårdvaran
Anslut den positiva anoden (långa benet) till lysdioden till motståndet och sedan till GPIO-pin 14. Du kan använda någon GPIO-stift, men titta först på pinouten, eftersom de varierar något mellan modellerna. Anslut den negativa katoden (kort ben med platt kant) till marken.
Pi Setup
Om din Pi har ett operativsystem (OS) installerat behöver du inte mycket installation (inte säkert vad du behöver? Läs om hur du installerar en här. Så här installerar du ett operativsystem till din hallon Pi. Så här installerar du ett operativsystem till din hallon Pi Så här får du ett nytt operativsystem installerat och kört på din Pi - och hur man klonar din perfekta inställning för snabb katastrofåterställning. Läs mer). Öppna en ny terminal ( Top left > meny > Tillbehör > Terminal ) på Pi (kassa dessa genvägar för att göra dig en kodande ninja Spara tid i Linux-terminalen med dessa 20 genvägar Spara tid i Linux-terminalen med dessa 20 genvägar Oavsett om du är en terminal nybörjare eller någon som kom över rädslan för länge sedan, här är 20 genvägar som kan hjälpa dig att övervinna några av kommandolinjens besvär. Läs mer). Du måste skapa en ny mapp för att lagra Python-skriptet. Ange följande kommando:
pwd
Detta står för "Skriv ut arbetskatalog" och visar dig vilken mapp du är i (som standard är detta "/ home / pi"). Navigera i dokumentmappen och skapa en ny katalog (mapp) som heter "gmail_python":
cd Documents/ sudo mkdir gmail_python
Kommandot "mkdir" står för "Make Directory". Något som följer detta kommer att användas för katalognamnet. Du borde nu kunna se din katalog:
ls
Om du gjorde ett misstag kan du enkelt ta bort den här katalogen:
sudo rm -r gmail_python
Navigera nu i den nya katalogen:
cd gmail_python/
Skapa ett nytt Python-skript:
sudo nano check_messages.py
Detta skapar manuset och öppnar det redo för redigering i Nano. Du kan naturligtvis använda ett annat program, som Vim, även om den här tweet sammanfattar mina känslor om det:
Jag har använt Vim i ca 2 år nu, för det mesta för att jag inte kan ta reda på hur man avslutar det.
- Jag är Devloper (@iamdevloper) 17 februari 2014
Skämt åt sidan, kolla in denna jämförelse mellan de två nano vs vim: Terminal Text Editors Jämfört nano vs vim: Terminal Text Editors Jämfört Även om Linux har blivit lätt nog för att nästan alla ska använda utan att behöva använda Terminal, finns det några av oss som regelbundet använder det eller är nyfiken på hur man kan kontrollera ... Läs mer för en fullständig uppdelning.
Tryck CTRL + X för att avsluta Nano och gå tillbaka till terminalen.
Python Setup
Nu när Pi är inställd, är det dags att skriva koden. Detta projekt kräver det utmärkta Gmail Python Library av Charlie Guo. Ladda ner biblioteket från Github och extrahera innehållet. Inuti borde det finnas en mapp som heter "gmail". Kopiera hela denna mapp till "/ home / pi / Documents / gmail_python".
Byt tillbaka till kommandoraden och öppna ditt skript igen (om du trycker på upp-tangenten kan du bläddra genom dina tidigare inmatade kommandon):
sudo nano check_messages.py
Lägg märke till hur det är samma kommando du använde för att skapa filen - om en fil redan finns kommer den att öppnas, annars kommer den att skapas. Här är Python:
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('[email protected]', '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)
Du måste ange ditt användarnamn och lösenord för att detta ska fungera. Du kan se hela källkoden för gmail-plugin om du vill. Om du inte känner dig bekväm med att göra detta (eller om du använder tvåfaktorsautentisering) måste du ansluta till Gmail med OAuth2. Det här är lite inblandat för denna handledning, men Google har en utmärkt startad guide.
Låt oss bryta ner koden. Först importeras några moduler. Moduler i Python är små bitar av kod skrivna för ett ändamål (liknande bibliotek i Arduino IDE). RPi.GPIO är en Pi-specifik modul för åtkomst till GPIO, gmail är modulen du hämtade tidigare, och tiden är en modul inbyggd i Python för att tillhandahålla timingfunktioner. Nu används "GPIO.setmode" och "GPIO.setup" för att berätta för Pi att PIN 14 är en utgång, och att du vill använda "Broadcom Pin Numbering" (mer information om BCM).
Den här raden kopplas till ditt gmail-konto. Det skapar ett objekt som heter "g", och kallar inloggningsmetoden för gmail-modulen som importerades tidigare. Glöm inte att ange ditt gmail-e-postadress och lösenord.
g = gmail.login('[email protected]', 'YOUR PASSWORD')
Hämta nu alla olästa meddelanden och lagra dem i en variabel som heter "olästa meddelanden":
unread_messages = g.inbox().mail(unread=True)
Lägg märke till hur "oläst = True" passeras som en parameter - du kan ändra detta för att hämta meddelanden baserat på olika parametrar, t.ex. avsändare eller ämne. Kolla in dokumentationen för Programmeringsgränssnitt (API) för mycket mer information.
Därefter används en för loop för att slingra över varje meddelande:
for message in unread_messages: total_messages += 1
För loopar är mycket användbara. De upprepar ett kvarter med flera gånger, ofta med något annorlunda värde varje gång. Detta för loop går över varje meddelande i olästa meddelanden och ökar variabeln "total_messages".
Slutligen används några enkla "if" -satser. Om det finns olästa meddelanden, sätt på lysdioden, annars slår du av.
Kom ihåg att Python är skiftlägeskänslig och använder vitavstånd. Om du har problem med att koden ska köras, prova den här webbplatsen. Klistra in din Python i och tryck på "validera över python-kod" -knappen. Detta ska då berätta för vilka (om några) fel finns i din Python.
Byt till terminalen och kör skriptet:
python check_messages.py
Detta kommando kommer att köra ditt skript. Försök manuellt ändra vissa e-postmeddelanden i inkorgen till oläst status och kör skriptet igen - du bör se att lysdioden slås på eller av för att återspegla din inkorg.
Cron Setup
Nu när manuset fungerar är det dags att automatisera det. Det enklaste sättet att göra detta är genom ett cron jobb. Cron-jobb används för att schemalägga uppgifter och skript, till exempel automatiserade säkerhetskopior. Öppna Crontab (lista över schemalagda uppgifter):
crontab -e
Om det inte finns några schemalagda uppgifter som redan är inställda kommer den här filen att vara tom (det kan innehålla dokumentation eller kommentarer, föregås av en "#"). Om du redan har poster här, skriv helt enkelt ditt nya kommando på en ny rad:
* * * * * python ~/pi/Documents/gmail_python/check_messages.py
De fem "stjärnorna" ("* * * * *") anger hur ofta du ska köra uppgiften (du kan få riktigt bra här, t.ex. varannan onsdag kl. 02.00). Dessa fem stjärnor anger att uppgiften ska köras varje minut. Det här är det minsta tillåtna intervallet (läs mer om cronjob-schemaläggning. Hur man schemalägger uppdrag i Linux med Cron och Crontab. Hur man schemalägger uppdrag i Linux med Cron och Crontab. Det går att automatisera uppgifter som är en av de framtida tekniker som redan finns här. användaren kan dra nytta av schemaläggningssystemet och användaruppgifter, tack vare cron, en användarvänlig bakgrundstjänst. Läs mer). Därefter berättar "python" schemaläggaren att utföra skriptet som en pythonfil. Slutligen är "~ / pi / Documents / gmail_python / check_messages.py" den absoluta filbanan till ditt script - en relativ sökväg fungerar inte.
Du borde nu ha ditt eget Gmail-anmälningsljus! Det skulle vara ganska enkelt att ändra detta för att leta efter meddelanden baserat på ett annat krav eller filter (lära sig att använda filter här 10 Emailproblem som du kan lösa med Gmail-filter 10 E-postproblem som du kan lösa med Gmail-filter En överflödig inkorg gör dig galen ? Vill du genom din inkorg snabbare än någonsin? Prova några av dessa briljanta Gmail-filter för att se skillnaden. Läs mer) eller kör ett annat kodstycke - kanske du kan skapa en Twitter-bot som tweetar baserat på e-postmeddelanden mer om att bygga en Pi Twitter bot Hur man bygger en hallon Pi Twitter Bot Hur man bygger en hallon Pi Twitter Bot Twitter är världens största förråd av korta meddelanden från personer som inte har något att säga - och nu kan du också bidra till det episka projektet med en automatiserad Twitter bot, drivs av din hallon ... Läs mer).
Men du slutar koda din anmälningsfält, jag skulle gärna veta hur det går i kommentarerna!