
RaspberryPiには通常PCの様な電源スイッチは無いです。
電源ON=PWR USBケーブルを挿入
電源OFF=コマンドからshutdown -h now(poweroff) 後 PWR USBケーブル抜き
再起動=コマンドからshutdown -r now(reboot)
NICのLEDを見て電源状態を判断しhなければなりません。
そこで、
PCライクな電源スイッチを実装するのは難しそうなのでタクトスイッチの押下時間でシャットダウン・リブートの選択。それに応じてのLED点滅 運転時のLED点灯を実装をしてみました。当初はrc.localに記述をしていたが、いまの時代野暮かと。
Pythonを使ってのコマンド
vi /usr/local/sbin/power-btn.py
#!/usr/bin/env python2.7
import RPi.GPIO as GPIO
import os
import time
BCMLED=4
BCMPWSW=17
GPIO.setmode(GPIO.BCM)
GPIO.setup(BCMPWSW, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(BCMLED, GPIO.OUT)
GPIO.output(BCMLED, GPIO.HIGH)
cnt = 0
while cnt < 200:
if GPIO.input(BCMPWSW) == GPIO.LOW:
cnt += 1
else:
if cnt > 0:
print "power button will reboot the system..."
GPIO.output(BCMLED, GPIO.LOW)
time.sleep(0.5)
GPIO.output(BCMLED, GPIO.HIGH)
time.sleep(2.0)
GPIO.output(BCMLED, GPIO.LOW)
GPIO.cleanup()
os.system("/sbin/reboot")
break
cnt = 0
time.sleep(0.01) # by 10 ms
else:
print "power button will shutdown the system..."
GPIO.output(BCMLED, GPIO.LOW)
time.sleep(0.5)
GPIO.output(BCMLED,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(BCMLED, GPIO.LOW)
GPIO.cleanup()
os.system("/sbin/shutdown -h now")
実行権限を付与
chmod +x /usr/local/sbin/power-btn.py
systemdで使うコマンド
pythonでつくったコマンドをそのまま差しただけのコマンド(もっとスマートになるはず)
vi /usr/local/sbin/power-btn.sh
#!/bin/bash python /usr/local/sbin/power-btn.py
実行権限を付与
chmod +x /usr/local/sbin/power-btn.sh
systemdの定義ファイル作成
vi /etc/systemd/system/power-btn.service
[Unit] Description = power-btn daemon [Service] ExecStart = /usr/local/sbin/power-btn.sh Restart = always Type = simple [Install] WantedBy = multi-user.target
実行権限を付与
chmod 0755 /etc/systemd/system/power-btn.service
自動起動設定後起動
systemctl enable power-btn.service systemctl start power-btn.service systemctl status power-btn.service ● power-btn.service - power-btn daemon Loaded: loaded (/etc/systemd/system/power-btn.service; enabled) Active: active (running) since 土 2016-12-31 15:59:17 JST; 42min ago Main PID: 489 (power-btn.sh) CGroup: /system.slice/power-btn.service ├489 /bin/bash /usr/local/sbin/power-btn.sh └512 python /usr/local/sbin/power-btn.py 12月 31 15:59:17 raspberrypi systemd[1]: Started power-btn daemon.
問題点(自分の運用には問題なし)
systemdのrestart stopに対応していない。そのまま運転を続けてしまいます。。。。まぁrc.localからの単純移行なのでよしとします。



コメント