Computer >> Máy Tính >  >> Phần mềm >> Thư

Tạo đèn thông báo Gmail trên Raspberry Pi

Trong dự án Raspberry Pi nhanh chóng và dễ dàng này, bạn sẽ học cách tạo đèn thông báo email trong Gmail. Nếu bạn có bất kỳ email chưa đọc nào, tập lệnh Python sẽ bật đèn LED. Dự án này yêu cầu rất ít phần và có thể hoàn thành trong vòng chưa đầy một giờ! Tất nhiên, bạn có thể trang trí đèn LED của mình theo bất kỳ cách nào bạn thích, chẳng hạn như khối đá đỏ MineCraft hoặc vật thể khác được in 3D bằng nhựa trong. Đây là kết quả cuối cùng:

Những gì bạn cần

  • 1 x Raspberry Pi
  • 1 x breadboard
  • Điện trở 1 x 220 ohm
  • Đèn LED 1 x 5mm
  • 1 x tài khoản Gmail
  • Nam nữ mắc dây

Bất kỳ Raspberry Pi nào cũng sẽ hoạt động cho dự án này - ngay cả Pi Zero! Chỉ cần một chân GPIO và nó không đặc biệt tốn nhiều CPU. Nếu bạn có bộ khởi động Pi, bạn có đủ bộ phận để hoàn thành việc này.

Lập kế hoạch

Tạo đèn thông báo Gmail trên Raspberry Pi

Đây là một dự án thực sự đơn giản. Một Diode phát sáng (LED) được kết nối với Chân GPIO (Đầu vào Mục đích Chung) trên Pi. Một tập lệnh Python rất đơn giản sẽ chạy thường xuyên để kiểm tra các email chưa đọc và bật hoặc tắt đèn LED cho phù hợp.

Phần cứng

Tạo đèn thông báo Gmail trên Raspberry Pi

Kết nối cực dương dương (chân dài) của đèn LED với điện trở và sau đó đến chân GPIO 14. Bạn có thể sử dụng bất kỳ chân GPIO nào, tuy nhiên hãy xem sơ đồ chân trước, vì chúng hơi khác nhau giữa các kiểu. Nối cực âm (chân ngắn với cạnh phẳng) với đất.

Thiết lập Pi

Tạo đèn thông báo Gmail trên Raspberry Pi

Cung cấp cho Pi của bạn đã cài đặt hệ điều hành (OS) thì không cần thiết lập nhiều (bạn không chắc mình cần gì? Tìm hiểu cách cài đặt tại đây). Mở một ga mới ( Trên cùng bên trái > menu > Phụ kiện > Thiết bị đầu cuối ) trên Pi (kiểm tra các phím tắt này để biến bạn thành ninja viết mã). Bạn cần tạo một thư mục mới để lưu trữ tập lệnh Python. Nhập lệnh sau:

pwd

Điều này là viết tắt của "Print Working Directory" và sẽ hiển thị cho bạn thư mục bạn đang ở (theo mặc định đây là "/ home / pi"). Điều hướng vào thư mục tài liệu và tạo một thư mục (thư mục) mới có tên "gmail_python":

cd Documents/
sudo mkdir gmail_python

Lệnh "mkdir" là viết tắt của "Make Directory". Bất cứ thứ gì sau đây sẽ được sử dụng cho tên thư mục. Bây giờ bạn sẽ có thể xem thư mục của mình:

ls

Nếu bạn nhầm lẫn, bạn có thể dễ dàng xóa thư mục này:

sudo rm -r gmail_python

Bây giờ điều hướng vào thư mục mới:

cd gmail_python/

Tạo một tập lệnh Python mới:

sudo nano check_messages.py

Thao tác này sẽ tạo tập lệnh và mở nó sẵn sàng để chỉnh sửa trong Nano. Tất nhiên, bạn có thể sử dụng một chương trình khác, chẳng hạn như Vim, mặc dù tweet này tóm tắt cảm xúc của tôi về điều đó:

Đùa sang một bên, hãy kiểm tra sự so sánh giữa hai thứ này để biết chi tiết đầy đủ.

Nhấn CTRL + X để thoát khỏi Nano và quay lại nhà ga.

Thiết lập Python

Tạo đèn thông báo Gmail trên Raspberry Pi

Bây giờ Pi đã được thiết lập, đã đến lúc viết mã. Dự án này yêu cầu Thư viện Python của Gmail tuyệt vời của Charlie Guo. Tải xuống thư viện từ Github và giải nén nội dung. Bên trong sẽ có một thư mục tên là "gmail". Sao chép toàn bộ thư mục này vào "/ home / pi / Documents / gmail_python".

Quay lại dòng lệnh và mở lại tập lệnh của bạn (nếu bạn nhấn phím lên, bạn có thể cuộn qua các lệnh đã nhập trước đó của mình):

sudo nano check_messages.py

Lưu ý rằng đó là lệnh giống như lệnh bạn đã sử dụng để tạo tệp - nếu tệp đã tồn tại, nó sẽ được mở, nếu không nó sẽ được tạo. Đây là 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('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)

Bạn sẽ cần nhập tên người dùng và mật khẩu của mình để điều này hoạt động. Bạn có thể xem toàn bộ mã nguồn của plugin gmail nếu bạn muốn. Nếu bạn không cảm thấy thoải mái khi thực hiện việc này (hoặc bạn đang sử dụng xác thực hai yếu tố), bạn sẽ cần kết nối với Gmail bằng OAuth2. Điều này hơi liên quan đến hướng dẫn này, tuy nhiên Google có một hướng dẫn bắt đầu tuyệt vời.

Hãy phân tích mã. Đầu tiên một số mô-đun được nhập. Các mô-đun trong Python là các đoạn mã nhỏ được viết cho một mục đích (tương tự như các thư viện trong Arduino IDE). RPi.GPIO là một mô-đun cụ thể của Pi để truy cập GPIO, gmail là mô-đun bạn đã tải xuống trước đó và time là một mô-đun được tích hợp trong Python để cung cấp các chức năng định thời gian. Giờ đây, "GPIO.setmode" và "GPIO.setup" được sử dụng để cho Pi biết rằng chân 14 là đầu ra và bạn muốn sử dụng "Đánh số pin Broadcom" (thêm thông tin về BCM).

Dòng này kết nối với tài khoản gmail của bạn. Nó tạo một đối tượng có tên "g" và gọi phương thức đăng nhập của mô-đun gmail đã nhập trước đó. Đừng quên nhập email và mật khẩu gmail của bạn.

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

Bây giờ, hãy truy xuất tất cả các tin nhắn chưa đọc và lưu trữ chúng trong một biến có tên là "các tin nhắn chưa đọc":

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

Lưu ý cách "unread =True" được truyền dưới dạng tham số - bạn có thể thay đổi điều này để truy xuất thư dựa trên các tham số khác nhau, chẳng hạn như người gửi hoặc chủ đề. Xem tài liệu về Giao diện lập trình ứng dụng (API) để biết thêm thông tin.

Tiếp theo, vòng lặp for được sử dụng để lặp lại mọi thông báo:

for message in unread_messages:
total_messages += 1

Đối với vòng lặp là rất hữu ích. Chúng lặp lại một khối mã nhiều lần, thường có giá trị hơi khác nhau mỗi lần. Vòng lặp for này đi qua mọi thông báo trong unread_messages và tăng biến "total_messages".

Cuối cùng, một số câu lệnh "if" đơn giản được sử dụng. Nếu có tin nhắn chưa đọc, hãy bật đèn LED, nếu không thì tắt.

Hãy nhớ rằng Python phân biệt chữ hoa chữ thường và sử dụng khoảng trắng. Nếu bạn gặp sự cố khi chạy mã, hãy thử trang web này. Dán Python của bạn vào và nhấn nút "xác thực bên trên mã python". Sau đó, điều này sẽ cho bạn biết lỗi nào (nếu có) hiện trong Python của bạn.

Chuyển sang Terminal và chạy tập lệnh của bạn:

python check_messages.py

Lệnh này sẽ chạy tập lệnh của bạn. Thử thay đổi thủ công một số email trong hộp thư đến của bạn thành trạng thái chưa đọc và chạy lại tập lệnh - bạn sẽ thấy đèn LED bật hoặc tắt để phản ánh hộp thư đến của bạn.

Thiết lập Cron

Bây giờ tập lệnh hoạt động đã đến lúc tự động hóa nó. Cách dễ nhất để làm điều này là thông qua một công việc cron. Các công việc Cron được sử dụng để lập lịch các tác vụ và tập lệnh, chẳng hạn như sao lưu tự động. Mở Crontab (danh sách các tác vụ đã lên lịch):

crontab -e

Nếu không có nhiệm vụ theo lịch trình nào đã được thiết lập, tệp này sẽ trống (nó có thể chứa tài liệu hoặc nhận xét, trước dấu "#"). Nếu bạn đã có các mục nhập ở đây, chỉ cần nhập lệnh mới của bạn trên một dòng mới:

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

Năm "sao" ("* * * * *") chỉ định tần suất chạy nhiệm vụ (bạn có thể thực sự ưa thích ở đây, ví dụ:mỗi thứ Tư thứ hai lúc 2 giờ). Năm dấu sao này chỉ định rằng nhiệm vụ phải được chạy mỗi phút. Đây là khoảng thời gian nhỏ nhất cho phép (tìm hiểu thêm về lập lịch cronjob). Tiếp theo, "python" yêu cầu bộ lập lịch thực thi tập lệnh dưới dạng tệp python. Cuối cùng, "~ / pi / Documents / gmail_python / check_messages.py" là đường dẫn tệp tuyệt đối đến tập lệnh của bạn - một đường dẫn tương đối sẽ không hoạt động.

Bây giờ bạn sẽ có đèn thông báo Gmail của riêng mình! Sẽ khá đơn giản nếu sửa đổi điều này để tìm kiếm các tin nhắn dựa trên một yêu cầu hoặc bộ lọc khác (tìm hiểu cách sử dụng bộ lọc tại đây) hoặc thực thi một đoạn mã khác - có thể bạn có thể tạo một bot Twitter để tweet dựa trên email ( tìm hiểu thêm về cách xây dựng một bot Twitter Pi).

Tuy nhiên, cuối cùng bạn mã hóa hộp thông báo của mình, tôi muốn biết nó hoạt động như thế nào trong phần nhận xét!