Computer >> 컴퓨터 >  >> 소프트웨어 >> 우편

Raspberry Pi Gmail 알림 표시등 만들기

이 빠르고 쉬운 Raspberry Pi 프로젝트에서는 Gmail 이메일 알림을 밝게 만드는 방법을 배웁니다. 읽지 않은 이메일이 있으면 Python 스크립트가 LED를 켭니다. 이 프로젝트는 부품이 거의 필요하지 않으며 1시간 이내에 완료할 수 있습니다! 물론 MineCraft 레드스톤 블록 또는 투명 플라스틱으로 3D 인쇄된 기타 개체와 같이 원하는 방식으로 LED를 장식할 수 있습니다. 최종 결과는 다음과 같습니다.

필요한 것

  • 1 x 라즈베리 파이
  • 1 x 브레드보드
  • 1 x 220옴 저항
  • 1 x 5mm LED
  • Gmail 계정 1개
  • 암수 연결 전선

모든 Raspberry Pi는 이 프로젝트에서 작동합니다. Pi Zero도 마찬가지입니다! 하나의 GPIO 핀만 필요하며 특별히 CPU를 많이 사용하지 않습니다. Pi 스타터 키트가 있는 경우 이를 완료하기에 충분한 부품이 있습니다.

빌드 계획

Raspberry Pi Gmail 알림 표시등 만들기

이것은 정말 간단한 프로젝트입니다. 발광 다이오드(LED)는 Pi의 GPIO(범용 입력 출력) 핀에 연결됩니다. 매우 간단한 Python 스크립트가 정기적으로 실행되어 읽지 않은 이메일을 확인하고 그에 따라 LED를 켜거나 끕니다.

하드웨어

Raspberry Pi Gmail 알림 표시등 만들기

LED의 양극(긴 다리)을 저항기에 연결한 다음 GPIO 핀 14에 연결합니다. 모든 GPIO 핀을 사용할 수 있지만 모델마다 약간씩 다르기 때문에 먼저 핀 배치를 확인하십시오. 음극(가장자리가 평평한 짧은 다리)을 접지에 연결합니다.

파이 설정

Raspberry Pi Gmail 알림 표시등 만들기

Pi에 운영 체제(OS)가 설치되어 있으면 많은 설정이 필요하지 않습니다(필요한 항목이 무엇인지 잘 모르십니까? 여기에서 설치 방법 알아보기). 새 터미널 열기(왼쪽 상단> 메뉴> 액세서리> 터미널 ) Pi에서 (코딩 닌자로 만들려면 이 단축키를 확인하십시오). 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과 같은 다른 프로그램을 사용할 수도 있지만 이 트윗에는 이에 대한 제 느낌이 요약되어 있습니다.

농담은 제쳐두고, 전체 분석을 위해 둘 사이의 이 비교를 확인하십시오.

Ctrl + X 누르기 Nano를 종료하고 터미널로 돌아갑니다.

파이썬 설정

Raspberry Pi Gmail 알림 표시등 만들기

이제 Pi가 설정되었으므로 코드를 작성할 차례입니다. 이 프로젝트에는 Charlie Guo의 뛰어난 Gmail Python 라이브러리가 필요합니다. Github에서 라이브러리를 다운로드하고 압축을 풉니다. 내부에는 "gmail"이라는 폴더가 있어야 합니다. 이 전체 폴더를 "/home/pi/Documents/gmail_python"에 복사합니다.

명령줄로 다시 전환하고 스크립트를 다시 엽니다(위쪽 키를 누르면 이전에 입력한 명령을 스크롤할 수 있음):

sudo nano check_messages.py

이것이 파일을 생성하는 데 사용한 것과 동일한 명령이라는 점에 유의하십시오. 파일이 이미 존재하면 파일이 열리고 그렇지 않으면 생성됩니다. 여기 파이썬이 있습니다:

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('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:
# there are unread emails, turn light on
GPIO.output(14, True)
else:
# there are no unread emails, turn light off
GPIO.output(14, False)

이 작업을 수행하려면 사용자 이름과 암호를 입력해야 합니다. 원하는 경우 Gmail 플러그인의 전체 소스 코드를 볼 수 있습니다. 이렇게 하는 것이 불편하거나 이중 인증을 사용하는 경우 OAuth2를 사용하여 Gmail에 연결해야 합니다. 이 튜토리얼에서는 다소 복잡하지만 Google에는 훌륭한 시작 가이드가 있습니다.

코드를 분석해 보겠습니다. 먼저 일부 모듈을 가져옵니다. Python의 모듈은 목적을 위해 작성된 작은 코드 조각입니다(Arduino IDE의 라이브러리와 유사). RPi.GPIO는 GPIO에 액세스하기 위한 Pi 전용 모듈이고, gmail은 이전에 다운로드한 모듈이며, time은 타이밍 기능을 제공하기 위해 Python에 내장된 모듈입니다. 이제 "GPIO.setmode" 및 "GPIO.setup"을 사용하여 핀 14가 출력이고 "Broadcom Pin Numbering"(BCM에 대한 추가 정보)을 사용하고 싶다고 Pi에 알립니다.

이 회선은 Gmail 계정에 연결됩니다. "g"라는 객체를 생성하고 이전에 가져온 gmail 모듈의 로그인 메소드를 호출합니다. Gmail 이메일과 비밀번호를 입력하는 것을 잊지 마십시오.

g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')

이제 읽지 않은 메시지를 모두 검색하여 "읽지 않은 메시지"라는 변수에 저장합니다.

unread_messages = g.inbox().mail(unread=True)

"unread=True"가 매개변수로 전달되는 방식에 주목하십시오. 이 매개변수를 변경하여 발신자 또는 제목과 같은 다양한 매개변수를 기반으로 메시지를 검색할 수 있습니다. 자세한 내용은 API(응용 프로그래밍 인터페이스) 설명서를 확인하십시오.

다음으로 for 루프는 모든 메시지를 반복하는 데 사용됩니다.

for message in unread_messages:
total_messages += 1

For 루프는 매우 유용합니다. 그들은 종종 매번 약간 다른 값으로 코드 블록을 여러 번 반복합니다. 이 for 루프는 unread_messages의 모든 메시지를 살펴보고 "total_messages" 변수를 증가시킵니다.

마지막으로 몇 가지 간단한 "if" 문이 사용됩니다. 읽지 않은 메시지가 있으면 LED를 켜고, 그렇지 않으면 끕니다.

Python은 대소문자를 구분하고 공백을 사용한다는 것을 기억하십시오. 코드를 실행하는 데 문제가 있는 경우 이 웹사이트를 사용해 보십시오. Python을 붙여넣고 "파이썬 코드 위의 유효성 검사" 버튼을 누릅니다. 그러면 Python에 어떤 오류가 있는지 알려줍니다.

터미널로 전환하고 스크립트를 실행하십시오:

python check_messages.py

이 명령은 스크립트를 실행합니다. 받은편지함의 일부 이메일을 읽지 않은 상태로 수동으로 변경하고 스크립트를 다시 실행해 보세요. 받은편지함을 반영하기 위해 LED가 켜지거나 꺼져야 합니다.

크론 설정

이제 스크립트가 작동하므로 자동화할 차례입니다. 이를 수행하는 가장 쉬운 방법은 cron 작업을 사용하는 것입니다. Cron 작업은 자동화된 백업과 같은 작업 및 스크립트를 예약하는 데 사용됩니다. Crontab 열기(예약된 작업 목록):

crontab -e

예약된 작업이 이미 설정되어 있지 않은 경우 이 파일은 비어 있습니다(문서나 설명이 포함될 수 있으며 앞에 "#"가 붙음). 여기에 이미 항목이 있는 경우 새 명령을 새 줄에 입력하기만 하면 됩니다.

* * * * * python ~/pi/Documents/gmail_python/check_messages.py

5개의 "별"("* * * * *")은 작업 실행 빈도를 지정합니다(예:매주 두 번째 수요일 2.00). 이 다섯 개의 별은 작업이 1분마다 실행되어야 함을 지정합니다. 허용되는 가장 작은 간격입니다(cronjob 예약에 대해 자세히 알아보기). 다음으로 "python"은 스크립트를 파이썬 파일로 실행하도록 스케줄러에 지시합니다. 마지막으로 "~/pi/Documents/gmail_python/check_messages.py"는 스크립트의 절대 파일 경로입니다. 상대 경로는 작동하지 않습니다.

이제 나만의 Gmail 알림 표시등이 있어야 합니다! 다른 요구 사항이나 필터를 기반으로 메시지를 찾거나(여기에서 필터 사용 방법 배우기) 다른 코드를 실행하도록 이것을 수정하는 것은 매우 간단합니다. 이메일을 기반으로 트윗하는 Twitter 봇을 만들 수도 있습니다( Pi Twitter 봇 구축에 대해 자세히 알아보기).

알림 상자를 코딩하게 되더라도 댓글에서 어떻게 되는지 알고 싶습니다!