Shutdown SWを付けました
NoraGatewayを停止する場合、単体では、電源を直接抜くという荒業となります。
これでは、ファイルが壊れる可能性があるので少し怖いです。
そこで、JR1OFP局が公開しているイメージファイルを利用して説明にあるように
GPIO10(19PIN)番とGND(20PIN)にプッシュSWをつけて長押しして停止をさせるという方法が考えられます。
今回、なんちゃってモニターを接続するためにすでに取り付けているプッシュSWを使って
ラズパイをShutdownすることにしました。
現在接続してあるGPIO番号は、
JR1OFP局公開のイメージファイル(51番ファイル 7その他(1)に記載してある)
を使用して停止できるように対応しています。
GPIO10(19PIN)
GND (20pin) に、接続してあります。
ネットを探すといろいろ出てきました。
まずは、自分のGPIOの状態を知るという事で gpio readallコマンドで知ることができます。
PhysicalのところがGPIOピン番号です。
ここを見ると、PIN19番がINである必要があります。
つまり、入力側にあるという事です。
もし、OUTとなっていれば
gpio -g mode 19 INとして入力モードにします。(普通は、必要ないです。)
新しくSWを付ける場合は、GPIOの入力になっているPINであればどこでも大丈夫です。
ちなみに、GNDのPINの近くあたりが配線の関係で良いと思います。
たとえば、GPIO25や24などです。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
【注意】
JR1OFP局公開のイメージファイルを使っているとgpioコマンドが使えませんでした。
使いたい場合は、次の対応で使えるようになります。
sudo mount / -o remount,rw
sudo apt install libi2c-dev python-dev
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
sudo ./build
これでgpioコマンドが利用可能
ーーーーーーーーーーーーーーーーーーーーーーーーーー
さて、今回は、すでに接続してあるPIN19とPIN20(GND)という状況で設定していきます。
1.shutdown.pyスプリクトを/home/piディレクトリー作成
nano shutdown.py
下記内容のファイルを作成
#!/usr/bin/python
# coding:utf-8
import time
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BCM)
#GPIO
19pinを入力モードとし、pull up設定とします
GPIO.setup(
19,GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True:
GPIO.wait_for_edge(
19, GPIO.FALLING)
sw_counter = 0
while True:
sw_status = GPIO.input(
19)
#長く(0.01秒×50回ループ)押された時だけシャットダウンするようにする
if sw_status == 0:
sw_counter = sw_counter + 1
if sw_counter >= 50:
print("長押し検知!")
os.system("sudo shutdown -h now")
break
#短く押された時は無視する(誤操作防止)
else:
print("短押し検知")
break
time.sleep(0.01)
print(sw_counter)
保存します。
control + o で保存、control + x で終了
なお、PIN19番でないGPIOを使用する場合は、19という数字をその番号に変更してください。
私の場合は、すでに接続してあったPIN19を利用しただけですのであしからず。(^^;
shutdown.pyに実行許可をつけます
sudo chmod 755 shutdown.py
確認します。
pi@Nora:~ $ pwd
/home/pi
pi@Nora:~ $ ls -l
合計 40
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Desktop
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Documents
drwxr-xr-x 2 pi pi 4096 6月 9 08:48 Downloads
drwxr-xr-x 2 pi pi 4096 11月 13 2018 MagPi
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Music
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Pictures
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Public
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Templates
drwxr-xr-x 2 pi pi 4096 11月 13 2018 Videos
-rwxr-xr-x 1 pi pi 845 6月 21 07:13 shutdown.py
これで実行できますが、これまで紹介してきた方法でNoragatewayを自動ログインで起動している方法では
shutdown.pyコマンドをバックグランドで走らせないと動きません。
つまり、&を付ける必要があります。
./shutdown.py &
SWを押してシャットダウンするのを確認します。
ただ、再起動は、残念ながら電源の抜き差しが必要です。
最近、
本家のホームページでは【NoraGatewayの自動実行(バックグラウンドサービス)】※推奨されています。
この方法だと、noragatewayがバックグランドで走っていますので&はいらなくなりますがあっても
構わないと思います。ようは、気にしなくてよくなります。(^^;
つねに、動作させるためにrc.localにコマンドを追加します。
sudo nano /etc/rc.local
一番下のexit 0の上に/home/pi/shutdown.py &を追加します。
...
/home/pi/shutdown.py &
exit 0
これで、なんちゃってモニターをつけたラズパイもシャットダウンSWで停止するようにできました。\(^o^)/
なお、
OnOff SHIMという電源管理ができるこんな製品がSWITCHSCIENCCEから出ています。
2 x 6ピンソケットをはんだ付けしてGPIO1からGPIO12端子に差して使用するようです。
これだとSWをGPIOに取り付ける手間が省けるのと再起動もこのSHIMについているSWでできます。
ただ、SWが小さいのとケースに入れた場合使いにくいので、
裏側の端子から別に配線を引っ張り出せば大きなSWが取り付けられそうです。
次回は、これを入手して実験してみます。(2019.06.22)