В Последний пост Мы устанавливаем небольшой скрипт, чтобы зажечь Мерзкий с красивыми фиолетовыми синими огнями. В этом посту мы собираемся автоматически запускать скрипт, когда мы включаем Pi On и Stop и очистите светодиоды, когда мы выключаем его.
Вы можете фактически использовать методы в этом руководстве для любого другого скрипта или доски.
Запустите скрипт, когда Pi включает
Существует много разных способов запустить скрипт, когда PI загружается. Мы собираемся использовать Crontab
Отказ
С Crontab
Мы можем автоматизировать сценарий в определенный момент. Есть разные варианты, такие как запуск скрипта годовой
, ежедневно
или дальше Перезагрузка
Отказ Мы будем использовать этот последний вариант 😉.
Обязательно войти в систему в вашем PI и в Terminal Run:
$ crontab -e
Это откроется Crontab
В вашем редакторе. В нижней части файла Добавить:
@reboot python /home/pi/Pimoroni/blue_purple.py &
Мы используем @reboot
сказать Crontab
Что мы хотим запустить скрипт всякий раз, когда устройство перезагружается. Python
используется для запуска скрипта Python и &
Заставляет скрипт запускать в качестве фонового скрипта, чтобы вы могли использовать свой терминал во время работы скрипта. Обязательно добавьте абсолютный путь к сценарию, который вы хотите запустить при запуске.
Сохранить и закрыть файл, вот это для первой части. Теперь вы можете перезапустить свой PI с Sudo Reboot
И он должен автоматически запустить свой скрипт на заднем плане, когда он запускается снова.
Как убить свой фон
Если по какой-либо причине вы хотите остановить скрипт, все, что вам нужно сделать, это найти его идентификатор процесса (PID), запустив PS Aux |. Greep Python
и нахождение скрипта в списке процессов. Вывод будет выглядеть что-то подобное:
pi 394 35.3 1.7 32420 16352 ? S 12:09 34:34 python /home/pi/Pimoroni/blue_purple.py pi 771 0.0 0.0 7348 492 pts/0 S+ 13:46 0:00 grep --color=auto python
PID – номер прямо рядом с PI
Отказ В этом примере это 394
Как только у вас есть PID Run Убить 349
замена 349
с количеством вашего PID.
Выключение светодиодов и очистка их
Давайте запустим немного теста. Попробуйте закрыть свой PI, пока светодиоды работают. Мы можем сделать это, набрав:
$ sudo shutdown now
PI остановится, и фоновый скрипт также перестанет работать. Но вы можете заметить, что светодиоды не поняли. Библиотека Blinktt имеет функцию очистки светодиодов, когда сценарий останавливается: blinkt.set_clear_on_exit ()
Отказ Но это работает только тогда, когда сценарий явно остановлен нами. О выключении, это не будет никакого эффекта. И, как виклы Blinktt, кажется, имеют память, они не будут очиститься, если мы не скажем им или отключить питание.
Итак, давайте исправим это.
Внутри нашего сценария Python мы собираемся добавить новую библиотеку под названием сигнал
Под нашими другими библиотеками:
#!/usr/bin/env python import blinkt import time import numpy import signal # new one!
Это импортирует сигнал
библиотека. Эта библиотека слушает сигналы от системы и позволяет запустить функцию, когда мы получаем определенный сигнал.
Когда наш PI выключается, он отправит сигнал под названием SIGTERM
Отказ Этот сигнал отправляется всякий раз, когда система делает мягкое отключение.
Если наш скрипт принимает этот сигнал, мы хотим очистить светодиоды и выйти из сценария Python. Так что в нашем файле Python добавьте:
def clear_leds(signum, frame): blinkt.clear() blinkt.show() exit(0) signal.signal(signal.SIGTERM, clear_leds)
Clear_led
Функция имеет два аргумента, которые он автоматически получает от Signal.signal ()
функция. Нам не нужно использовать это, поэтому мы просто держим их там. Blinkt.clear ()
Очищает светодиоды и Blinkt.show ()
Устанавливает новые изменения в Blinkt, чтобы их можно было увидеть. Затем мы выходим из скрипта Python с помощью Выход (0)
Отказ
Письма сигнал .signal (сигнал. Sigterm, Clear_leds)
Сценарий будет слушать SIGTERM
сигнал. Как только он получает его, он будет запускать Clear_leds
функция.
И это все! Перезагрузите свою систему и после того, как ваши светодиоды снова работают, попробуйте выключить PI, используя Sudo Shutdown сейчас
Отказ Через секунду или около того светодиоды должны очистить.
Мне пришлось найти разные источники, чтобы создать этот поток, поэтому, надеюсь, это помогает всем, кто хочет настроить его так же. Веселитесь, и если у вас есть бежать, пожалуйста, поделитесь фотографиями вашего удивительного PI!
Проверить Готовый скрипт
Источники: Пять способов запуска программы на вашем Raspberry Pi при запуске Crontab Сигнал Обработка сигналов Unix в Python SYS EXIT.
Оригинал: “https://dev.to/khenhey/light-up-leds-when-you-start-your-raspberry-pi-and-clear-them-on-shutdown-542”