Рубрики
Без рубрики

Заведуйте светодиоды, когда вы начинаете свою малину PI и очистить их на выключении

Настройте свой Pimoroni Blinkt, чтобы он автоматически включается и выключается при запуске или выключении малины PI .. Помечено Linux, RaspberryPI, начинающими, Python.

В Последний пост Мы устанавливаем небольшой скрипт, чтобы зажечь Мерзкий с красивыми фиолетовыми синими огнями. В этом посту мы собираемся автоматически запускать скрипт, когда мы включаем 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”