Как запускать и планировать сценарии Python на Raspberry Pi
Ранее я писал о том, как и почему я создал простой веб-скрипт, чтобы уведомлять нас о нашей любимой еде. Затем я опубликовал пост, в котором подробно рассказывалось, как запускать и планировать сценарии Python на iOS, а теперь я хотел бы поделиться тем, как вы можете сделать то же самое с Raspberry Pi.
Почему Пи?
Хотя можно поиграться и запустить простые скрипты Python на iOS, у него есть свои ограничения.
Во-первых, вы не можете по-настоящему автоматизировать их выполнение. Вы можете активировать их по времени или местоположению, но вам придется разблокировать телефон и нажимать «ОК» для каждого триггера.
Во-вторых, вы не можете воспользоваться преимуществами некоторых более продвинутых модулей. Один пример Селен, который может создавать экземпляры виртуального браузера в фоновом режиме, посещать веб-сайты и выполнять над ними действия. Это невозможно из-за заблокированной архитектуры iOS.
На Pi (Linux) у вас нет ограничений. Вы можете использовать любой модуль и сценарии расписания для полностью автоматического запуска в любое время.
Хорошо, но Pi работает под управлением Linux. Почему бы просто не купить старый ноутбук с Linux и не использовать его?
Вы, конечно, можете это сделать, но я думаю, что Pi гораздо практичнее. Он имеет размер банковской карты. Если вы поместите его в чехол, это больше похоже на PowerBank. Если вы, как и я, используете его как концентратор, к которому подключаетесь с разных устройств, то просто гораздо проще найти для него место дома, где он не будет портить эстетику. Кроме того, его гораздо удобнее брать с собой в поездку.
При этом все, что я здесь опишу, можно сделать и на дешевом ноутбуке под управлением Linux, если вам это нравится.
Первые шаги
Самый первый шаг, как вы могли догадаться, это купить Pi. Я рекомендую получить его с SD-картой, которая предварительно установлена малина в теме.
Также будьте осторожны, так как стандартный пакет не содержит Адаптер питания. Вы можете использовать его с более мощным зарядным устройством для телефона, если у вас есть лишнее.
Для самой первой настройки вам также понадобится отображать, клавиатура и мышь.
После того, как вы запустили Pi в первый раз, подключитесь к своей локальной сети. Это может быть как по кабелю, так и через Wi-Fi.
Затем запустите и настройте RealVNC (поставляется с Raspbian), так как это действительно удобный способ получить доступ к вашему Pi, даже удаленно. Настройка очень проста, просто зарегистрируйте учетную запись и следуйте указаниям мастера.
Как только это будет сделано, используйте VNC Viewer на любом устройстве для входа в систему. (Окна, MacOS, iOS, Андроид)
После того, как это будет сделано, вам больше не нужно подключать какие-либо периферийные устройства к Pi. Raspbian обнаружит, если вы запустите его без подключенного дисплея, клавиатуры или мыши, и он автоматически загрузится в так называемый режим заголовка. В режиме заголовка вы можете подключиться к Pi через SSH или через RealVNC с любого устройства: телефона, планшета, ноутбука. И не только из вашей локальной сети, но и удаленно.
Настройка Pi для запуска скриптов Python
Хорошо, ваш Pi настроен и работает, теперь вам просто нужно настроить его для запуска скриптов Python.
Хорошая новость: если вы используете Raspbian, делать особо нечего, так как Python уже установлен из коробки.
Одна вещь, которую вы можете сделать, это загрузить последнюю версию, вероятно, потому, что Raspbian не имеет последней версии. Направляйтесь к python.orgи обновить при необходимости.
Но кроме этого вы готовы идти. Вы можете скопировать существующие файлы .py и сразу начать использовать их со встроенной IDE или терминалом.
Говоря об этом: если вы копируете файлы, которые вы использовали в Windows или OS X, помните, что в Linux вам понадобится другой линия Шебанга. Вы, наверное, знаете, где это искать, но вот для справки:
- В Windows строка shebang
#! python3
. - В OS X строка shebang
#! /usr/bin/env python3
. - В Linux строка shebang
#! /usr/bin/python3
.
(строки shebang — это первые строки в файлах сценариев Python, которые сообщают системе, где найти интерпретатор)
Кроме того, если вы хотите запускать скрипты из терминала, вам нужно сделать несколько дополнительных шагов:
- Поместите их файлы .py в свою домашнюю папку.
- Сделайте их исполняемыми с помощью следующей команды:
chmod +x script.py
Теперь вы можете запустить скрипт, набрав./script.py
к терминалу
(Если вы поместите их где-то еще, кроме вашей домашней папки, вам придется описать весь путь для их запуска)
Автоматизация скриптов на Pi с помощью CRON
Теперь к интересной части. Пока что мы настроили наш Pi и начали запускать на нем скрипты Python. Но входить в систему через RealVNC или SSH каждый раз, когда мы хотим запустить скрипт, не очень удобно (за исключением случаев, когда мы хотим запускать скрипты через SSH, поступающие с другого устройства или службы автоматически, но это будет подробно описано в другом посте).
Если у нас есть скрипт веб-скрейпинга, который каждый день ищет некоторую информацию в Интернете и возвращает некоторую информацию (например, уведомление о еде, описанное в моем предыдущем посте), то нам нужна полная автоматизация. Сценарий должен запускаться сам по себе, выполнять свою работу и возвращать информацию.
К счастью, мы можем сделать это с помощью встроенного в Linux инструмента под названием КРОН.
Как настроить КРОН
- Войдите в свой Pi с помощью realVNC и запустите Терминал.
- В Терминале введите
crontab -e
. Если вы хотите, чтобы команда запускалась с системными разрешениями, используйтеsudo crontab -e
Команда, чтобы открыть файл crontab учетной записи root. - Вас могут попросить выбрать редактора. Если это произойдет, выберите Nano (для меня это было по умолчанию)
- Вам будет представлен следующий экран:
Каждая строка, начинающаяся с#
просто комментарий и будет нет казнен. - Используйте стрелки или Page Down, чтобы прокрутить страницу вниз.
- Каждая строка, которую вы добавите сюда, будет выполнена.
Формат параметров следующий:
Минуты Часы День месяца Месяц будний день Команда
Если вы хотите пропустить параметр, просто добавьте *
в качестве ввода.
Давайте рассмотрим несколько примеров:
15 9 5 7 * /home/pi/yourscript.py
будет выполнять ваш скрипт.py находится в вашей домашней папке каждое 5 июля в 9:15.
30 10 * * 1-5 /home/pi/yourscript.py
начнет ваш скрипт.py каждый будний день (с понедельника по пятницу) в 10:30.
0 8 1-10 * * /home/pi/yourscript.py
начнет ваш скрипт.py ежедневно с 1 по 10 число каждого месяца в 8:00.
Вот так выглядит линия Crontab для моего FoodNotifier.py:0 11 * * 1-5 /home/pi/FoodNotifier.py
Это запланирует его запуск каждый будний день в 11:00.
После того, как вы добавили свою строку, нажмите CTRL+O
для записи и нажмите Enter, чтобы сохранить.
Выйдите из crontab с помощью CTRL+X
Другие полезные параметры Crontab
- Если вы используете скрипт, который работает или постоянно прослушивается, и вы хотите, чтобы он выключался в определенное время, вы можете сделать это с помощью
killall -9 yourscript.py
параметр.
Пример:0 13 * * 1-5 killall -9 yourscript.py
остановится ваш скрипт.py в 13:00 каждый будний день. - Вы можете выключить свой Pi с помощью
sudo shutdown -h now
параметр.
Пример:0 21 * * 6 sudo shutdown -h now
будет выключать ваш Pi каждую субботу в 21:00.
Заключительные слова
Я надеюсь, что это краткое руководство дало вам представление о том, как легко настроить Pi и начать использовать его для автоматизации сценариев Python.
Я думаю, что возможности почти безграничны.
Как и в случае с Food Notifier, вы можете настроить сценарии, которые автоматически проверяют информацию в Интернете каждый день и отслеживают изменения или принимают меры по ним.
Вы можете легко настроить чат-бота на основе Python, который постоянно работает, слушает запросы и отвечает на них.
Вы также можете подключить свой Pi к системе домашней автоматизации и периодически запускать / останавливать гаджеты в вашем доме или удаленно с устройства.
Все это с помощью инструмента размером с кредитную карту или PowerBank, который может стоять на полке рядом с телевизором.