JR6PUE HOME PAGE

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)

#GPIO19pinを入力モードとし、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)