Raspberry Pi で CGI プログラムを利用するには Web サーバのインストールが必要である。Web サーバのインストールとCGIを利用するための設定は「Raspberry Pi で CGI(bash)を動かす」を参照してもらいたい。
また、スイッチの状態を読み出すために wringPi を利用している。wringPi のインストールと使い方は「wiringPi のインストール」や「wiringPi gpio コマンドの使い方」にて解説している。
CGIプログラムでスイッチの状態を読み出す
電工作塾流操作系の作法に従ったスイッチ状態の読み出しは、HTTP GET で要求し、JSON 形式で受け取る。
具体的な流れ
リクエスト
GET /PATH/TO/CGI-PROGRAM/api-switch.cgi
レスポンス
[ {“pin”: “4”, “status”: “OFF”} ]
- クライアントは、(GPIO 4 番ピンに繋がれた)スイッチの状態取得を、GET メソッドで要求する
- サーバは、読み取った状態を JSON 形式で返す(PIN 番号 4 はスイッチ OFF であるとの内容)
実際の CGI プログラム
10 行程度のシェルスクリプトで実装できる。 簡単な GPIO 操作には、wiringPi の併用が便利。
#!/bin/sh
PIN=4
value=$(gpio -g read $PIN)echo “Content-type:application/json”
echo “”
echo ‘[ {“pin”: “‘$PIN'”, “status”: “‘$value'”} ]’exit 0
このスクリプトでは、読み出す GPIO のピンをハードコーディングしている。wiringPi の gpio コマンドを利用してピンの状態を読み出し、結果を JSON 形式にで表示している。