package
0.0.0-20240506045426-32ebe848dd4c
Repository: https://github.com/houtbrion/pi-buttonandshutdown.git
Documentation: pkg.go.dev

# README

go版ButtonAndShutdown

Python版と比較すると,configファイルで回路のピン番号の変更や,logの出力方法(syslogを使うか否かなど)を選択できるように機能を強化したものになってます.

1. 動作環境

1.1 動作を確認した各種ソフトのバージョン

  • go言語 : go version go1.17 linux/arm
  • periph
    • periph.io/x/conn/v3 : v3.6.8
    • periph.io/x/d2xx : v0.0.1
    • periph.io/x/host/v3 : v3.7.0

1.2 ビルドに必要なその他のツール

  • make

2. デバイスを接続するピン番号の変更

GPIOのピン番号は,設定ファイル(本リポジトリのbuttonAndShutdown.cfg)で変更可能です.

以下は例であるが,スイッチ(ボタン)のGPIOの番号は「buttonpin」の行で設定しており,GPIO番号20番(ピン番号38番:参考資料)にしている.同じくLEDは「ledpin」の行でGPIO番号16番(ピン番号36番)にしています.

$ cat buttonAndShutdown.cfg
{
        "usesyslog":true,
        "usestdout":false,
        "logfilename":"",
        "buttonpin":"GPIO20",
        "ledpin":"GPIO16"
}
$

3. インストール

3.1 準備

1章のリストを見て,go言語とmakeだけはインストールしておいてください.goやmakeをインストールする際に,その他の開発ツールを入れる必要があると思いますが,それについては,go言語のオフィシャルサイトの指示に従ってください.

3.2 調整

3.2.1 設定ファイルの内容を回路に合わせる

2.3節の「デバイスを接続するピン番号の変更」でも説明したように,回路に合わせて使っているデバイスを接続したGPIOの番号に合わせて同封の「buttonAndShutdown.cfg」の「buttonpin」と「ledpin」の行を変更してください.

3.2.2 ログ出力先の選択

再度の掲示になりますが,設定ファイルの中身は以下のようになっています.ここで,「usesyslog」はsyslogを使うか否か,「usestdout」は標準出力にログを垂れ流す場合(回路の動作確認などに利用),「logfilename」にログファイルのフルパスを指定すると,指定したファイルにログを追加書き込みしていきます.

$ cat buttonAndShutdown.cfg
{
        "usesyslog":true,
        "usestdout":false,
        "logfilename":"",
        "buttonpin":"GPIO20",
        "ledpin":"GPIO16"
}
$

複数のログ出力先を有効にすることも可能ですし,全部ON(もしくはOFF)にするものOKです.

3.2.3 インストール先ディレクトリの修正

現状インストール先のディレクトリは/usr/localになっています. もし,修正したい場合は以下の項目を修正してください.

  • Makefile : BASE_DIRの設定行(例:BASE_DIR=/usr/local)
  • プログラム本体(buttonAndShutdown.go) : 設定ファイルのフルパス(例 : const defaultConfigFileName string = "/usr/local/etc/buttonAndShutdown.cfg")
  • systemdの設定(buttonAndShutdown.service) : バイナリパス名(例 : ExecStart=/usr/local/bin/buttonAndShutdown)

3.3 インストール

以下の2ステップです.

  • make all
  • sudo make install

rebootで動作しますが,もし,即座に動かしたい場合は,以下のコマンドを実行してください.

# systemctl restart buttonAndShutdown.service

うまく動作していれば,systemctlコマンドで「Active: active (running) since 時刻」となるはずです.

# systemctl status buttonAndShutdown.service
● buttonAndShutdown.service - buttonAndShutdown
     Loaded: loaded (/etc/systemd/system/buttonAndShutdown.service; enabled; ve>
     Active: active (running) since Sun 2021-09-05 17:44:10 JST; 7h ago
   Main PID: 396 (buttonAndShutdo)
      Tasks: 9 (limit: 2059)
        CPU: 13.664s
     CGroup: /system.slice/buttonAndShutdown.service
             mq396 /usr/local/bin/buttonAndShutdown

Sep 05 17:44:10 raspberrypi systemd[1]: Started buttonAndShutdown.
#