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.

 

Powiadamiacz e-mail Raspberry Pi

 

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ą: 

 

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 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:

 

  1. Podłącz monitor HDMI i klawiaturę
  2. Użyj konwertera USB-UART
  3. 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: 

 

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

zapraszamy do współpracy!