Create power button service and installer

This commit is contained in:
Mike Cifelli 2021-05-06 14:13:55 -04:00
parent 7bd329791d
commit 99b2070a2e
4 changed files with 62 additions and 0 deletions

View File

@ -1,2 +1,5 @@
# power-button # power-button
# Dependencies
sudo apt install python3-pip
sudo apt install python3-gpiozero

31
install Executable file
View File

@ -0,0 +1,31 @@
#! /usr/bin/env python3
import os
from string import Template
from subprocess import check_call
EXEC = 'power-button.py'
SERVICE = 'power-button.service'
SYSTEM_DIR = '/etc/systemd/system'
CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
EXEC_PATH = os.path.join(CURRENT_DIR, EXEC)
SERVICE_TEMPLATE = os.path.join(CURRENT_DIR, SERVICE)
SERVICE_FILE = os.path.join(SYSTEM_DIR, SERVICE)
EXEC_START = f'python3 {EXEC}'
with open(SERVICE_TEMPLATE) as f:
serviceTemplate = Template(f.read())
serviceFile = serviceTemplate.substitute(
workingDirectory=CURRENT_DIR,
execStart=EXEC_START
)
with open(SERVICE_FILE, 'w') as f:
f.write(serviceFile)
check_call(['systemctl', 'daemon-reload'])
check_call(['systemctl', 'enable', '--no-pager', SERVICE])
check_call(['systemctl', 'restart', '--no-pager', SERVICE])
check_call(['systemctl', 'status', '--no-pager', SERVICE])

16
power-button.py Normal file
View File

@ -0,0 +1,16 @@
from gpiozero import Button
from signal import pause
from subprocess import check_call
BUTTON_GPIO_PIN = 3
HOLD_TIME_IN_SECONDS = 2
def poweroff():
check_call(['sudo', 'poweroff'])
button = Button(BUTTON_GPIO_PIN, hold_time=HOLD_TIME_IN_SECONDS)
button.when_held = poweroff
pause()

12
power-button.service Normal file
View File

@ -0,0 +1,12 @@
[Unit]
Description=Power Button Service
After=multi.user.target
[Service]
Type=simple
WorkingDirectory=$workingDirectory
ExecStart=$execStart
Restart=on-failure
[Install]
WantedBy=multi-user.target