Как запускать и планировать сценарии 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 уже установлен из коробки.
Скриншот 2018-09-05 в 18.18.11.png
Одна вещь, которую вы можете сделать, это загрузить последнюю версию, вероятно, потому, что 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 и запустите Терминал.
    Терминал RPi.png
  • В Терминале введите crontab -e. Если вы хотите, чтобы команда запускалась с системными разрешениями, используйте sudo crontab -e Команда, чтобы открыть файл crontab учетной записи root.
  • Вас могут попросить выбрать редактора. Если это произойдет, выберите Nano (для меня это было по умолчанию)
  • Вам будет представлен следующий экран:
    RPi-терминал crontab.png
    Каждая строка, начинающаяся с # просто комментарий и будет нет казнен.
  • Используйте стрелки или 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, который может стоять на полке рядом с телевизором.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *