Powiadamiacz E-mail na Raspberry Pi - z diodami LED
Popularność Raspberry Pi sprawiła, że zrobienie wielu rzeczy stało się dużo łatwiejsze. Jako przykład, zaprezentowany będzie prosty projekt startowy od Raspberry Pi, który ma powiadamiać o nowej wiadomości Gmail. Po krótkich poszukiwaniach, odnaleziona została spora liczba osób, które wiedzą jak go zrobić, oraz kilka jego świetnych przykładów. Michael ze strony mitchtech.net posiadał najbardziej opracowany kod, który na potrzeby tego projektu, został zapożyczony.
Projekt używa dwóch diod LED - zielonej i czerwonej. Zielona dioda LED zaświeci się, gdy przyjdzie nowa wiadomość. Natomiast, gdy wszystkie wiadomości zostaną odczytane, włącza się czerwona dioda LED.
Do ukończenia tego samouczka, potrzebne będą:
- Pi T-Cobbler Plus, Cobbler Plus dla modelu B+/Pi 2 lub oryginalny Pi Cobbler
- Płytka stykowa 830 otworów
- Przewody połączeniowe
- Diody LED
- Raspberry Pi (zgodny ze wszystkimi Pi 26- i 40-pinowymi wydanymi do tej pory)
Podłączanie Cobblera do diod LED
Nowe Raspberry Pi używają 40-pinowego złącza. Pierwsza generacja Pi używała 26-pinowego złącza. Samouczek ten może korzystać ze wszystkich tych wersji używając tego samego kodu i pinów GPIO. Udostępnione są przykłady podłączeń obu typów używając tych samych pinów GPIO (#18 i #23).
Przy podłączaniu przewodu GPIO, upewnij się, że zauważyłeś czerwony lub biały kabel na taśmie, jest to #1 pin przewodu. Koniec ten jest podłączany najbliżej karty SD i jest oznakowany jako P1 na Pi. Druga strona podłączana jest do cobblera i może być włożona tylko w jeden sposób z powodu specjalnej końcówki.
Umieść cobbler na płytce stykowej tak, aby był po obu stronach linii środkowej. Podłącz pin GND (masa) do niebieskiej szyny zasilania na płytce stykowej. Będziesz potrzebować dwóch rezystorów (jakakolwiek wartość od 330 omów do 1000 omów będzie prawidłowa).
Podłącz pierwszy rezystor do pinu cobblera oznaczonego #18, a jego drugi koniec do pinu, który nie jest przez niego używany.
Podłącz drugi rezystor do pinu cobblera oznaczonego #23, a jego drugi koniec do innego, nie zajętego pinu.
Raspberry Pi Cobbler Plus - 40-pinowy dla Raspberry Pi 3B+ / 3B / 2B / Zero
Raspberry Pi Cobbler - 26-pinowy - tylko dla Raspberry Pi A / B
Podłączenie krok po kroku na 26-pinowym Cobblerze Pi
Weź teraz czerwoną i zieloną diodę LED. Ich dłuższe nóżki są anodami (+).
Podłącz anodę czerwonej diody LED do rezystora podłączonego do pinu #23 (GPIO #23), a anodę zielonej diody LED do rezystora podłączonego do pinu #18.
Krótsze nóżki (katody) podłącz do punktów lutowniczych przy niebieskim pasku na płytce stykowej.
Na powyższych zdjęciach są oryginalne Cobblery Pi. W przypadku nowszych, 40-pinowych modeli jak A+/B+/Pi 2, prawdopodobnie zrobisz coś podobnego używając przewodów do podłączenia rezystorów do diod LED (kliknij na zdjęcie, aby je powiększyć):
Udało się! Właśnie podłączyłeś dwie diody LED wraz z ograniczającymi przepływ prądu rezystorami do pinów GPIO na Pi.
Niezbędne paczki
Aktualizacja swojego Pi do najnowszej wersji Raspbian
Twoje Pi będzie musiało działać na najnowszej wersji Raspbian. Samouczek ten był napisany przy pomocy Raspbian Stretch (Listopad 2018). Sprawdź nasz przewodnik Instalacja systemu operacyjnego Raspberry Pi, jeśli tego jeszcze nie zrobiłeś. Po zakończonej instalacji, wprowadź następujące komendy, aby się upewnić, że twoje paczki są aktualne.
$ sudo apt-get install update -y
$ sudo apt-get install upgrade -y
Instalacja pip3
pip3 jest już zainstalowane w pełnej wersji Raspbian, ale Raspbian Lite nie zawiera pip3, więc musi być on zainstalowany, tak jak poniżej
$ sudo apt-get install python3-pip
Instalacja adafruit-blinka
$ sudo pip3 install adafruit-blinka
Instalacja impaclient
sudo pip3 install imapclient
Skrypt Python
Teraz możesz pobrać dowolny kod Python i sprawdzić swoje konto Gmail. Możliwe jest pobranie poniższego skryptu bezpośrednio na swoje Raspberry Pi, zmodyfikowanie go i uruchomienie go, tak, aby diody LED świeciły.
import time import board from imapclient import IMAPClient from digitalio import DigitalInOut, Direction HOSTNAME = 'imap.gmail.com' MAILBOX = 'Inbox' MAIL_CHECK_FREQ = 60 # check mail every 60 seconds # The following three variables must be customized for this # script to work USERNAME = 'your username here' PASSWORD = 'your password here' NEWMAIL_OFFSET = 1 # my unread messages never goes to zero, use this to override # setup Pi pins as output for LEDs green_led = DigitalInOut(board.D18) red_led = DigitalInOut(board.D23) green_led.direction = Direction.OUTPUT red_led.direction = Direction.OUTPUT def mail_check(): # login to mailserver server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD) # select our MAILBOX and looked for unread messages unseen = server.folder_status(MAILBOX, ['UNSEEN']) # number of unread messages # print to console to determine NEWMAIL_OFFSET newmail_count = (unseen[b'UNSEEN']) print('%d unseen messages' % newmail_count) if newmail_count > NEWMAIL_OFFSET: green_led.value = True red_led.value = False else: green_led.value = False red_led.value = True time.sleep(MAIL_CHECK_FREQ) while True: mail_check()
Pobieranie kodu
Dla uproszczenia, umieść ten plik w katalogu domowym. Ułatwia to komenda wget.
$ cd $ wget https://raw.githubusercontent.com/adafruit/Adafruit_Learning_System_Guides/master/Raspberry_Pi_E-mail_Notifier_Using_LEDs/Raspberry_Pi_E-mail_Notifier_Using_LEDs.py
Modyfikacja zmiennych mailowych.
Nie zapomnij ustawić NAZWY UŻYTKOWNIKA i HASŁA tak, aby były zgodne z kontem GMail. (Pamiętaj, jeśli używasz dwuskładnikowego uwierzytelniania do GMaila, będziesz musiał wtedy stworzyć specyficzne w użyciu hasło. Jeśli używasz e-maila w innej domenie, zapewne będziesz zmuszony sprawdzić ich dokumentację, aby wiedzieć jaką NAZWĘ HOSTA użyć. Zwykle brzmi ona tak imap.youremailproviderhere.com.)
NEWMAIL_OFFSET jest zmienną, dzięki której możesz ustawić aktualną liczbę nieprzeczytanych wiadomości. Podczas uruchomienia skryptu python, będzie tam wyjście numerowe do konsoli, pokazujące teraźniejszą liczbę nieodczytanych wiadomości.
Uruchamianie kodu
$ python3 ./Raspberry_Pi_E-mail_Notifier_Using_LEDs.py
Wyślij do siebie kilka maili, aby zobaczyć jak włącza się zielona dioda LED!
Możesz zatrzymać skrypt w każdej chwili wciskając klawisze Ctrl-C.
Zdalne sterowanie przez SSH
Jako pierwszy krok, musisz mieć terminal na swoim Pi. Są różne opcje, w naszym przypadku jest to wprowadzenie kilku linii komend:
- Podłącz monitor HDMI i klawiaturę
- Użyj konwertera USB-UART
- Zaloguj się poprzez Secure SHell (SSH)
Ponieważ ten projekt używa pinów GPIO do własnych celów, będziesz wybierał pomiędzy bezpośrednim działaniem na Pi (jest to doskonała opcja, jeśli masz już wszystko ustawione!) a połączeniem poprzez SSH (dobry pomysł, jeśli nie masz dodatkowego monitora/urządzenia wejściowego w pobliżu, a chcesz pracować przy własnym biurku lub laptopie).
Poniższe przykłady będą sugerować sprawną instalację Raspbian z połączeniem SSH.
Przygotowywanie Pythona
Aby kod python działał, będzie trzeba się upewnić, że zainstalowanych zostało parę bibliotek.
Po pierwsze, albo z klawiatury/monitora, albo z konsoli SSH, wpisz:
sudo apt-get install python-pip
... zostaniesz zapytany, czy chcesz kontynuować. Wciśnij klawisz "Y" oznaczający "tak" i wciśnij enter.
Ta część, prawdopodobnie, potrwa jakiś czas.
Następnie, możesz zainstalować bibliotekę IMAPClient Python, która pozwala Pythonowi komunikować się ze serwisami e-mailowymi.
sudo pip install imapclient
Starsze wersje tego przewodnika używały modułu Python zwanego "feedparserem", do odczytywania kanału Atom z GMaila
Obecna wersja skryptu powinna działać z e-mailami w każdej domenie, która zapewnia dostęp do IMAP. Kilka pomocnych linków:
- Yahoo! Ustawienia maila IMAP
- Ustawienia Hotmail/Outlook.com IMAP
- iCloud: ustawienia serweru mailowego dla klientów emailowych
Jeśli masz aktywowaną autoryzację dwuetapową na swoim koncie GMail, będziesz musiał stworzyć specyficzne w użyciu hasło aby korzystać z IMAP. Szczegółowa instrukcja od Google jest bardzo pomocna w tym przypadku.
Nie jesteś pewny czy masz włączoną autoryzację dwuetapową? To zapewne oznacza, że takowej nie masz, więc na razie nie musisz się o to martwić.
Źródło: https://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds