Сделать Raspberry Pi Gmail Уведомление Light

В этом быстром и простом проекте Raspberry Pi вы узнаете, как сделать световое уведомление по электронной почте Gmail. Если у вас есть непрочитанные электронные письма, скрипт Python включает светодиод. Этот проект требует очень мало частей, и может быть завершен в течение часа! Конечно, вы можете нарядить свой светодиод так, как вам нравится, например, блок красного камня MineCraft или другой объект, напечатанный на 3D-принтере из прозрачного пластика. Вот конечный результат:

Что вам нужно

  • 1 х малиновый пи
  • 1 х макет
  • 1 х 220 Ом резистор
  • 1 х 5 мм светодиод
  • 1 х Gmail аккаунт
  • Мужчина к женщине подключить провода

Любой Raspberry Pi будет работать для этого проекта — даже Pi Zero! Требуется только один вывод GPIO, и он не особо загружает процессор. Если у вас есть стартовый комплект Pi, у вас более чем достаточно деталей для этого.

План строительства

Gmail-Notification-LED
Это действительно простой проект. Светоизлучающий диод (LED) подключается к выводу GPIO (вход общего выхода) на Pi. Очень простой скрипт Python будет запускаться регулярно, чтобы проверять непрочитанные электронные письма и соответственно включать или выключать светодиод.

Аппаратное обеспечение

Gmail-Notification-Circuit
Подключите положительный анод (длинную ветвь) светодиода к резистору, а затем к выводу 14 GPIO. Вы можете использовать любой вывод GPIO, однако сначала посмотрите на распиновку, поскольку они немного различаются в разных моделях. Подключите отрицательный катод (короткая ножка с плоским краем) к земле.

Настройка Pi

Gmail-Notification-Pi
Если на вашем Pi установлена ​​операционная система (ОС), не нужно много настроек (не уверены, что вам нужно? Узнайте, как установить ее здесь

). Откройте новый терминал (Верхний левый > меню > аксессуары > Терминал) на пи (проверьте эти ярлыки, чтобы сделать вас ниндзя кодирования

). Вам нужно создать новую папку для хранения скрипта Python. Введите следующую команду:

pwd

Это означает «Print Working Directory» и покажет вам, в какой папке вы находитесь (по умолчанию это «/ home / pi»). Перейдите в папку документов и создайте новый каталог (папку) под названием «gmail_python»:

cd Documents/
sudo mkdir gmail_python

Команда «mkdir» означает «Создать каталог». Все, что следует за этим, будет использовано для имени каталога. Теперь вы сможете увидеть свой каталог:

ls

Если вы допустили ошибку, вы можете легко удалить этот каталог:

sudo rm -r gmail_python

Теперь перейдите в новый каталог:

cd gmail_python/

Создайте новый скрипт Python:

sudo nano check_messages.py

Это создаст скрипт и откроет его для редактирования в Nano. Конечно, вы можете использовать другую программу, такую ​​как Vim, хотя этот твит подводит итог моим чувствам по этому поводу:

Я использую Vim уже около 2 лет, в основном потому, что не могу понять, как выйти из него.

— Я Devloper (@iamdevloper) 17 февраля 2014

Шутки в сторону, проверьте это сравнение между двумя

для полного срыва.

Нажмите CTRL + X выйти из Нано и вернуться в терминал.

Настройка Python

Gmail-Notification-код
Теперь, когда Pi настроен, пришло время написать код. Этот проект требует отличную библиотеку 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, если хотите. Если вам неудобно это делать (или вы используете двухфакторную аутентификацию), вам необходимо подключиться к Gmail с помощью OAuth2. Это немного связано с этим уроком, однако у Google есть отличное руководство по началу работы.

Давайте разберем код. Сначала импортируются некоторые модули. Модули в Python представляют собой небольшие фрагменты кода, написанные для определенной цели (аналогично библиотекам в Arduino IDE). RPi.GPIO — это специальный модуль Pi для доступа к GPIO, gmail — это модуль, который вы скачали ранее, а time — это модуль, встроенный в Python для обеспечения функций синхронизации. Теперь «GPIO.setmode» и «GPIO.setup» используются, чтобы сообщить Pi, что вывод 14 является выходом, и что вы хотите использовать «Broadcom Pin Numbering» (больше информации о BCM).

Эта линия подключается к вашей учетной записи Gmail. Он создает объект с именем «g» и вызывает метод login модуля 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 просматривает каждое сообщение в unread_messages и увеличивает переменную total_messages.

Наконец, используются некоторые простые операторы «если». Если есть непрочитанные сообщения, включите светодиод, в противном случае выключите его.

Помните, что Python чувствителен к регистру и использует интервал белого. Если у вас возникли проблемы с запуском кода, попробуйте этот веб-сайт. Вставьте свой Python и нажмите кнопку «Подтвердить вышеуказанный код Python». Это должно сказать вам, какие (если есть) ошибки присутствуют в вашем Python.

Переключитесь на Терминал и запустите ваш скрипт:

python check_messages.py

Эта команда запустит ваш скрипт. Попробуйте вручную изменить некоторые электронные письма в вашем почтовом ящике, чтобы они не читались, и снова запустите скрипт — вы должны увидеть, как светодиод включается или выключается, чтобы отобразить ваш почтовый ящик.

Настройка Cron

Теперь, когда скрипт работает, пришло время его автоматизировать. Самый простой способ сделать это — через работу cron. Задания Cron используются для планирования задач и сценариев, таких как автоматическое резервное копирование. Откройте Crontab (список запланированных задач):

crontab -e

Если запланированные задачи еще не настроены, этот файл будет пустым (он может содержать документацию или комментарии, перед которыми стоит «#»). Если у вас уже есть записи здесь, просто введите новую команду в новой строке:

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

Пять «звездочек» («* * * * *») указывают, как часто нужно запускать задание (здесь вы можете по-настоящему полюбиться, например, каждую вторую среду в 2.00). Эти пять звездочек указывают, что задача должна выполняться каждую минуту. Это наименьший допустимый интервал (узнайте больше о расписании cronjob

). Затем «python» указывает планировщику выполнить скрипт в виде файла python. Наконец, «~ / pi / Documents / gmail_python / check_messages.py» — это абсолютный путь к файлу вашего скрипта — относительный путь не будет работать.

Теперь у вас должен быть свой собственный индикатор уведомлений Gmail! Было бы довольно просто изменить это, чтобы искать сообщения, основанные на другом требовании или фильтре (узнайте, как использовать фильтры здесь

) или выполнить другой фрагмент кода — возможно, вы могли бы создать бота в Твиттере, который твитит на основе электронных писем (узнайте больше о создании бота для Твиттера Pi)

).

Тем не менее, в конечном итоге вы закодируете свой блок уведомлений, я хотел бы знать, как он работает в комментариях!

Ссылка на основную публикацию
Adblock
detector