回路を結線するときにVNCでシャットダウンするのが面倒なので愛読の「ラズベリー・パイで遊ぼう 林和孝著 P263」を参考にしてラズパイ単体でシャットダウンできるようにした。
本では自作パソコンで使うスイッチを使用しているが、いつもブレッドボードを使っているのでタクトスイッチを使うことにした。
Pin 15とPin17に接続したがどこでもOK
タクトスイッチを押すとラズパイの緑LEDが点滅をはじめて 3秒以上押し続けるとシャットダウンが実行、2秒緑LEDが点灯したら 安心して電源を抜く。(赤LEDは点灯したままで抜いて良い)
| shutdown.shで保存 |
|---|
#!/bin/sh
PORT=22 # 使用するGPIOポート
PUSHTIME=3 # 3秒でシャットダウンを実行する
## GPIOをinモードにする
gpio -g mode $PORT in
gpio -g mode $PORT down
## ACT LED制御のサブルーチン
set_led_mode () {
echo $1 > /sys/class/leds/led0/trigger
}
set_led_value () {
echo $1 > /sys/class/leds/led0/brightness
}
## 3秒間押されるまで待つ
cnt=0
while [ $cnt -lt $PUSHTIME ] ; do
if [ `gpio -g read $PORT` -eq "1" ] ; then
cnt=`expr $cnt + 1`
[ $cnt -eq 1 ] && set_led_mode heartbeat
else
[ $cnt -gt 0 ] && set_led_mode mmc0
cnt=0
fi
sleep 1
done
## ACT LEDでシャットダウンの合図をする
set_led_mode none
set_led_value 1
sleep 2
set_led_value 0
set_led_mode mmc0
## シャットダウンの実行
shutdown -h now
|
| プログラムを実行できるようにターミナルで下を実行。 |
|---|
$ chmod 755 shutdown.sh |
ボタンを押したときにシャットダウンするにはこのプログラムが いつも動いていないとできないので自動起動(常駐)することが 必要で下記をインストール。
| 「Supervisor」をインストール |
|---|
$ sudo apt-get install supervisor |
このプログラムを自動起動させる設定ファイルを作成。
| /etc/supervisor/conf.d/shutdown.confというファイルを作成 |
|---|
$ sudo leafpad /etc/supervisor/conf.d/shutdown.conf |
下の3行を入力して保存。
| /home/pi に作成したファイルを保存 |
|---|
[program:shutdown] command=/home/pi/shutdown.sh user=root |
設定を反映するためSupervisorを再起動。
| 再起動 |
|---|
$ sudo /etc/init.d/supervisor restart |
【参考】手動でSupervisorを起動or終了するコマンド。
| 手動で起動or終了する |
|---|
$ sudo /etc/init.d/supervisor start #起動する $ sudo /etc/init.d/supervisor stop #終了する |