Автор оригинала: Gergely Kovács.
Ранее я писал о том, как и почему я создал простой скрипт веб-скребка, чтобы уведомлять нас о нашей любимой еде . Затем я опубликовал пост , в котором подробно описал, как запускать и планировать скрипты Python на iOS, а теперь я хотел бы поделиться тем, как вы можете сделать то же самое с Raspberry Pi.
Почему Пи?
В то время как можно играть и запускать простые скрипты Python на iOS у него есть свои ограничения. Во-первых, вы не можете полностью автоматизировать их запуск. Вы можете вызвать их по времени или местоположению, но вам придется разблокировать свой телефон и нажать OK на каждом триггере. Во-вторых, вы не можете воспользоваться преимуществами некоторых более продвинутых модулей. Одним из примеров является Selenium , который может создавать виртуальные экземпляры браузера в фоновом режиме, посещать веб-сайты и выполнять на них действия. Это невозможно из-за заблокированной архитектуры iOS. На Pi (Linux) у вас нет никаких ограничений. Вы можете использовать любой модуль и планировать сценарии для запуска полностью автоматически, когда захотите.
Хорошо, но Пи работает под управлением Linux. Почему бы просто не купить и не подержать ноутбук под управлением Linux и не использовать его вместо этого?
Вы, конечно, можете это сделать, но я думаю, что Пи гораздо практичнее. Он имеет размер банковской карты. Если положить его в футляр, это больше похоже на банк питания. Если вы похожи на меня и используете его как концентратор, к которому подключаетесь с различных устройств, то просто гораздо проще найти для него место дома, где он не будет портить эстетику. Кроме того, гораздо проще взять его с собой во время путешествия. Тем не менее, все, что я здесь опишу, можно сделать и с помощью дешевого ноутбука под управлением Linux, если вам это нравится.
Первые шаги
Самый первый шаг, как вы уже догадались, – это купить Пи. Я рекомендую получить его с SD-картой, на которой предварительно установлен Raspbian .
Кроме того, будьте осторожны, так как стандартный пакет не содержит адаптер питания . Вы можете использовать его с более мощным зарядным устройством телефона, если у вас есть какие-то дополнительные прокладки. Для самой первой настройки вам также понадобится дисплей , клавиатура и мышь .
Как только вы запустили Pi в первый раз, подключитесь к нему по локальной сети. Это может быть как кабель, так и через Wi-Fi. Затем запустите и настройте RealVNC (поставляется с Raspbian), так как это действительно удобный способ доступа к вашему Pi, даже удаленно. Настройка очень проста, просто зарегистрируйте учетную запись и следуйте инструкциям мастера. Как только это будет сделано, используйте VNC Viewer на любом устройстве для входа в систему. ( Windows , Mac OS , iOS , Android )
После того как это будет сделано, вам больше не нужно будет подключать к Пи какие-либо периферийные устройства. Raspbian обнаружит, если вы запустите его без какого-либо дисплея, клавиатуры или мыши, и он автоматически загрузится в так называемый режим заголовка . В режиме заголовка вы можете подключиться к Pi через SSH или через RealVNC с любого устройства: телефона, планшета, ноутбука. И не только из локальной сети, но и удаленно.
Настройка Pi для запуска скриптов Python
Хорошо, ваш Pi запущен и работает, теперь вам просто нужно настроить его для запуска скриптов Python. Хорошая новость такова: если вы используете Raspbian, то делать вам особо нечего, так как Python установлен прямо из коробки Единственное, что вы можете сделать, это загрузить последнюю версию, вероятно, потому, что Raspbian не имеет последней версии. Направляйтесь к python.org , и обновить при необходимости. Но в остальном тебе хорошо идти. Вы можете скопировать существующие файлы .py и сразу же начать использовать их со встроенным IDE или терминалом. Кстати говоря: если вы копируете файлы, которые использовали в Windows или OS X, помните, что в Linux вам понадобится другая строка shebang . Вы, наверное, знаете, где это искать, но вот это для справки:
- В 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, поступающие с другого устройства или службы, но это будет подробно описано в другом посте). Если у нас есть скрипт веб-скребка, который каждый день ищет некоторую информацию в Интернете и возвращает некоторую информацию (например, food notifier объясненный в моем предыдущем посте), то то, что мы хотим, – это полная автоматизация. Скрипт должен запускаться сам по себе, выполнять свою работу и возвращать информацию. К счастью, мы можем сделать это с помощью встроенного в Linux инструмента под названием CRON .
Как настроить CRON
- Войдите в свой Pi с помощью RealVNC и запустите терминал.
- В терминале введите
crontab -e
. Если вы хотите, чтобы команда выполнялась с системными разрешениями, используйте командуsudo crontab-e
, чтобы открыть файл crontab корневой учетной записи. - Вас могут попросить выбрать редактора. Если это произойдет, выберите Nano (для меня это было по умолчанию)
- Вам будет представлен следующий экран:
Каждая строка, начинающаяся с
#
, является просто комментарием и будет не выполнена. - Используйте стрелки или Page Down для прокрутки вниз до нижней части страницы
- Каждая строка, которую вы добавите здесь, будет выполнена.
Формат параметров следующий: Минуты Часы День месяца Месяц День недели Команда Если вы хотите пропустить параметр, просто добавьте *
в качестве входных данных.
Давайте рассмотрим несколько примеров:
15 9 5 7 */home/pi/yourscript.py
выполнит yourscript.py находится в вашей домашней папке каждое 5 июля в 9:15 утра.
30 10 * * 1-5/home/pi/yourscript.py
начнется yourscript.py каждый будний день (с понедельника по пятницу) в 10:30 утра.
0 8 1-10 * */home/pi/yourscript.py
начнется yourscript.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 киллалл -9 yourscript.py
остановится yourscript.py в 13:00 вечера, каждый будний день. - Вы можете выключить свой Pi с помощью параметра
sudo shutdown -h now
. Пример:0 21 * * 6 sudo shutdown -h now
будет отключать ваш Pi каждую субботу в 21:00 вечера.
Заключительные слова
Я надеюсь, что этот краткий учебник дал вам представление о том, как легко настроить API и начать использовать его для автоматизации скриптов Python. Я думаю, что возможности почти безграничны. Как и в примере с Food Notifier, вы можете настроить сценарии, которые автоматически проверяют информацию в Интернете каждый день и отслеживают изменения или принимают меры по ним. Вы можете легко настроить чат-бота на основе python, который постоянно работает, слушает запросы и ответы на них. Вы также можете подключить свой Pi к системе домашней автоматизации и периодически запускать/останавливать гаджеты в вашем доме или удаленно с устройства.
Все из инструмента размером с кредитную карту/PowerBank, который может стоять на полке рядом с вашим телевизором.