ぽんこつプログラマーの日々のまとめ
RPi-Logo-Reg-SCREEN

前回の続きで今回はプラグインを作成しグラフ表示する。ほぼほぼroot権限で作業するのでsuコマンド叩いてからやったほうがいいかも。

プラグインの作成

先ずは以前作成した温度水温を取得するPyhonスクリプトを使用してプラグインを作成する。
以下のディレクトリに移動し、任意のエディタでシェルスクリプトを作成。
cd /usr/share/munin/plugins
sudo vim temp

以下を記述する。
#!/bin/sh
#%# family=auto
#%# capabilities=autoconf

TEMP=`python /home/pi/scripts/temp.py` # 温度取得Pythonスクリプトのフルパス
WATER_TEMP=`python /home/pi/scripts/water_temp_lite.py` # 水温取得Pythonスクリプトのフルパス
if [ "$1" = "autoconf" ]; then
  if [ -n ${WATER_TEMP} ] ; then
    echo yes
    exit 0
  else
    echo no
    exit 1
  fi
fi

if [ "$1" = "config" ]; then
  echo 'graph_title temperatures'        # グラフタイトル
  echo 'graph_vlabel C'                  # グラフ 縦軸ラベル
  echo 'graph_category aquarium'         # カテゴリ
  echo 'line_wt.label water temperature' # 水温のラベル名
  echo 'line_t.label temperature'        # 温度のラベル名
  echo 'line_wt.draw LINE2'              # 水温ラインを描画
  echo 'line_t.draw LINE2'               # 温度ラインを描画
echo 'line_wt.warning 22:30' # 水温の危険レベルを指定( 22℃以下30℃以上 ) echo 'line_wt.critical 18:32' # 水温の致命的レベルを指定 ( 18℃以下32℃以上 ) exit 0 fi echo "line_wt.value $WATER_TEMP" echo "line_t.value $TEMP"

autoconf に関しては他で動作させる予定が無いのなら常に yes を返してOK。その他プロパティの詳しい説明は公式リファレンスからどうぞ。
メールを設定すれば危険数値、致命的数値になったらメール配信とかも可能。

次に湿度プラグインを作成する。
sudo vim humid

#!/bin/sh
#%# family=auto
#%# capabilities=autoconf

HUMID=`python /home/pi/scripts/humid.py`
if [ "$1" = "autoconf" ]; then
 if [ -n ${HUMID} ] ; then
 echo yes
 exit 0
 else
 echo no
 exit 1
 fi
fi
if [ "$1" = "config" ]; then echo 'graph_title humidity' echo 'graph_vlabel %' echo 'graph_category aquarium' echo 'line.label humidity' echo 'line.min 0' echo 'line.draw LINE2' exit 0 fi
echo "line.value $HUMID"

最後に水位プラグインを作成。
sudo vim water_level

#!/bin/sh
#%# family=auto
#%# capabilities=autoconf

WLEVEL=`python /home/pi/scripts/float.py`
if [ "$1" = "autoconf" ]; then
 if [ -n ${WLEVEL} ] ; then
echo yes exit 0 else echo no exit 1 fi fi if [ "$1" = "config" ]; then echo 'graph_title water level' echo 'graph_vlabel on/off' echo 'graph_category aquarium' echo 'graph_args -r --lower-limit -0.5 --upper-limit 1.5' # グラフ縦軸 MinMax echo 'line.label water level' #echo 'line.min -0.5' #echo 'line.max 1.5' echo 'line.draw LINE2' exit 0 fi
echo "line.value $WLEVEL"

それぞれ実行できるようにパーミッションを変更する。
sudo chmod 775 temp humid water_level

シンボリックリンク作成

プラグインの実態は "/usr/share/munin/plugins" に存在し、ロードされるプラグインはシンボリックリンクとして "/etc/munin/plugins" に存在する。即ちプラグインの ON OFF を切り替えるにはシンボリックリンクを削除すれば良い。
先ずは不要なプラグインのシンボリックリンクを削除する。※必要な人は残してておk
cd /etc/munin/plugins
sudo rm *

次に先程作成したプラグインのシンボリックリンクを作成。
sudo ln -s /usr/share/munin/plugins/temp /etc/munin/plugins/
sudo ln -s /usr/share/munin/plugins/humid /etc/munin/plugins/
sudo ln -s /usr/share/munin/plugins/water_level /etc/munin/plugins/

最後に munin-node を再起動して更新。
sudo /etc/init.d/munin-node resatrt

Muninの更新頻度はデフォルトで5分間隔なので暫し待ち、ブラウザで開きそれぞれグラフが表示されていればOK。
munin2

munin3
緑が水温 DS18B20 の値で、青が温度 DHT11 の値。
水温はサーモスタット付ヒーターの挙動がわかって面白い。設定温度から0.5℃下がったらヒーターがONになり+0.2℃になるとOFFになる模様。こうやってロギングしているとエビが死にまくって怯えて水温下げた心境がよく反映されている。
またDHT11は温湿度共に小数点以下が取得できないためカクカクした線になるが安定しており思ったより精度は良いみたい。

Add Comments

名前
 
  絵文字
 
 
webmaster

Redmusk

最西端の地で釣りとギターとゲームをこよなく愛する本業ぽんこつプログラマー。今を生きるを座右の銘とし日々快楽だけを求め切磋琢磨しております。

soundcloud