ラズパイにseismicサービスを組み込む時に関連したメモ
① 現状Rust(rppal)ではGPIOで割り込みを検出する手段は提供されていない様子
作ればいいんだろうけど、今の所クレートは存在していないから、従来通りそこだけはPythonのサービスを起動、以下のソースで個別にサービス定義して起動時に実行させておく
#
# wait switch push interrupt and issue shutdown command
#
import time
import datetime
import os
import sys
import RPi.GPIO as GPIO
import subprocess
# Shut down sw is assigned to GPIO17
# GPIO initialize
SHUTDOWN = 17
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(SHUTDOWN, GPIO.IN)
GPIO.setup(SHUTDOWN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def handle_sw_input():
# wait key inout event
def switch_callback(gpio_pin):
subprocess.call('sudo shutdown -h now', shell=True)
#
GPIO.add_event_detect(SHUTDOWN, GPIO.FALLING,bouncetime=500)
# when the sw was pushed, call the 'call back routine'
GPIO.add_event_callback(SHUTDOWN, switch_callback)
return
handle_sw_input()
while True:
time.sleep(100)
② 今更ですが。/lib/systemd/systemのserviceファイルを変更した時には、以下の処理が必要(既存ファイルの書き換え替えが反映されなかった)
・サービスを登録する(編集したときの反映時にも必要)
$ sudo systemctl daemon-reload
$ sudo systemctl enable seismic.service
admin