Raspberry Pi Zeroをポチったので、ちょっとずついじってみる
OSはRaspbian stretch lite www.raspberrypi.org
初期設定諸々はここでは割愛
物理スイッチを取り付ける
シャットダウンするためにsshするのはダルいので、安全に起動・停止できる物理ボタンを付けます
こちらを参考にさせてもらいました
Raspberry Pi 3 にシャットダウン/リブート/再開ボタンを追加する - はむ!の空想具現化したいブログ
配線
スイッチとGPIO18とGPIO3、GNDを接続
シャットダウンスクリプト
/home/pi/service/shutdownd.py
#!/usr/bin/python # coding:utf-8 import time import RPi.GPIO as GPIO import os GPIO.setmode(GPIO.BCM) GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP) while True: GPIO.wait_for_edge(18, GPIO.FALLING) sw_counter = 0 while True: sw_status = GPIO.input(18) if sw_status == 0: sw_counter = sw_counter + 1 if sw_counter >= 50: os.system("sudo shutdown -h now") break else: break time.sleep(0.01)
systemd設定
サービスファイル
/usr/lib/systemd/system/shutdownbuttond.service
[Unit] Description=Shutdown Daemon [Service] ExecStart =/home/pi/service/shutdownd.py Restart=always Type=simple [Install] WantedBy=multi-user.target
サービス有効化
pi@raspberrypi:~ $ systemctl enable shutdownbuttond.service
デーモン再起動
pi@raspberrypi:~ $ sudo systemctl daemon-reload
これで起動時にスイッチ長押しでシャットダウン、停止時にスイッチで起動できるようになった