Raspberry Pi+Ruby+muninで温度ロガー

以前のエントリ

はこのためにあった。

前回HIH-6130 デジタル温度センサから湿度と温度を取得するプログラムをRubyで書いた。これをmuninのプラグインに変更し、グラフを作成してみる。

というわけでHIH-6130用muninプラグイン作りました。
https://github.com/makotokw/munin-temperature

muninプラグイン

初めて作ったので調べてみた。基本的に本家のドキュメントでなんとかなる。

http://munin-monitoring.org/wiki/HowToWritePlugins
http://munin-monitoring.org/wiki/protocol-config

muninはプラグインの実体を /usr/share/munin/plugins などに置き、有効にするものを /etc/munin/plugins/ へシンボリックリンクするというのがお作法のようだ。

プラグインはそれぞれ単体で動作する実行形式のスクリプトになっている。仕様はとてもシンプルで config を引数に受けた時にどのようなデータに対応しているかを出力し、何も引数がなければデータを出力する。

今回つくったプラグインは以下のようなconfigを出力する。設定できるのはグラフの単位やラベルの他に、通知用に警告するために閾値を設定できる。完全に自分用に設定しているが部屋を30度を超えたら警告、40度を超えたら重大な警告。湿度はそれぞれ60%と50%になっている。調べたら湿度は60%以上に保つのがよいらしい。

graph_title Temperature / Humidity
graph_args --base 1000 -l 0 -u 100
graph_category Room
graph_info This graph shows temperature and humidity by HIH6130 Sensor
graph_vlabel Temp(C) / Humid(%)
temperature.label temperature
temperature.warning 30
temperature.critical 40
humidity.label humidity
humidity.warning 60:
humidity.critical 50:

このあたりの出力を行うのすら楽をしたかったのでRubyGemsより munin を使用した。

インストール方法

Rasbianに入るのがruby 1.9.3だったので1.9.3用にしてる。Rubyで書いたからrakeでインストールするようにした。Rasbpery Pi上で以下を実行すると munin-temperature/bin/temperature-hih6130 を直接 /etc/munin/plugins/temperature-hih6130 にシンボリックリンクする。(お作法無視)

git clone https://github.com/makotokw/munin-temperature.git
cd munin-temperature
sudo gem i bundler
bundle install
sudo rake install

/etc/munin/plugins/temperature-hih6130 にファイルができていたら成功。i2cコマンドが実行できるユーザで実行してみてください。なおシンボリックリンクしてるのでgitで取得したファイルは消さないでください。

muninユーザの設定

ここで嵌ったのだけど、i2cコマンドを実行する権限がユーザにいる。muninユーザで実行していると思ったんだけどうまくいかなかったのでいろいろ試行錯誤した結果 /etc/munin/plugin-conf.d/munin-node に以下を追記してrootで動かすことにした。

[temperature-hih6130]
user root

一応rootをi2cグループに入れておく。

sudo adduser root i2c

うまく動くとこんな感じです。

munin-pluign-temperature.png

最近加湿器をオンにした。温度は20度前後をうろちょろ、20度あれば全然快適なはずなんだけど絶望的に足元が寒い。早く一年分のデータを取りたい。