Gör ett Raspberry Pi-meddelande om Gmail

Gör ett Raspberry Pi-meddelande om Gmail / DIY

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 (Övre vänstra > meny > Tillbehör > Terminal) på Pi (checka ut 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 blev över rädslan för länge sen , här är 20 genvägar som kan hjälpa dig att övervinna några av kommandolinjens obekvämhet. 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 kommer visa dig vilken mapp du är i (som standard är det här “/ Home / pi”). Navigera i dokumentmappen och skapa en ny katalog (mapp) som heter “gmail_python”:

cd-dokument / sudo mkdir gmail_python

De “mkdir” kommandot står för “Gör katalog”. 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 att lämna Nano och komma 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:

importera gmail, RPi.GPIO som GPIO, tid # importmoduler GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # berätta för Pi vilka rubriker som ska användas GPIO.setup (14, GPIO.OUT) # berätta för Pi detta pin är en utmatning g = gmail.login ('[email protected] ',' DITT LÖSENORD ') unread_messages = g.inbox (). mail (oläst = True) total_messages = 0 för meddelande i olästa meddelanden: total_messages + = 1 om total_messages> 0: # det finns olästa e-postmeddelanden, slå på GPIO.output (14, True) annars: # Det finns inga olästa e-postmeddelanden, stäng av lampan 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 “GPIO.setmode” och “GPIO.setup” används för att berätta för Pi att stift 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] ',' DITT LÖSENORD ')

Hämta nu alla olästa meddelanden och lagra dem i en variabel som heter “Olästa meddelanden”:

unread_messages = g.inbox (). mail (oläst = sant)

Lägg märke till hur “oläst = Sant” skickas 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:

för meddelande i olästa meddelanden: total_meddelanden + = 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 slingan går över varje meddelande i olästa meddelanden och ökar “total_messages” variabel.

Slutligen, några enkla “om” uttalanden används. 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 och tryck på “validera ovanför python-koden” knapp. 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 obehörig status och kör skriptet igen - du ska 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 a “#”). 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ärnor” (“* * * * *”) Ange 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). Nästa, “pytonorm” berättar schemaläggaren att utföra skriptet som en pythonfil. Till sist, “~ / Pi / Dokument / gmail_python / check_messages.py” är den absoluta filbanan till ditt skript - 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!

Utforska mer om: Gmail, Raspberry Pi.