2015年10月27日火曜日

復旧7:muninでRaspberry PiのCPU温度を表示してみよう!

予定通り、muninのプラグインを書いてみます。

Raspberry Pi の CPU 温度は以下のように打てば表示されます。

$ cat /sys/class/thermal/thermal_zone0/temp

例えばうちの環境だと、

47615

と表示されました。これは47.615℃という意味らしいです(^^;)。

基本的な流れは、
1.プラグインを作る。
2.プラグインを
  /usr/share/munin/plugins
  へ入れる。
3.実行権限をつける。
4.シンボリックリンクを作成する。
5.munin-node 再起動
となります。

まずはプラグインから。さくっと作ります(笑)。

---ここから
#!/bin/sh
# Raspberry Pi CPU temperature munin plugin by nonnon

#%# family=auto
#%# capabilities=autoconf

temp=$(cat /sys/class/thermal/thermal_zone0/temp)

if [ "$1" = "autoconf" ]; then
if [ -n ${temp} ]; then
echo yes
exit 0
else
echo no
exit 0
fi
fi

if [ "$1" = "config" ]; then
echo 'graph_title CPU Temperature'
echo 'graph_args -Y -J'
echo 'graph_scales yes'
echo 'graph_vlabel Celsius' 
echo 'graph_category Raspberry Pi'
echo 'temperature.label Temperature'
exit 0
fi

echo "temperature.value $((temp / 1000))"
---ここまで

こんな感じですかね。簡単に言うと、
必要な変数を取得する部分、
ちゃんと取得できているかどうか確認する部分、
グラフの設定部分
最後の行がデータを渡す部分、
となっています。超適当な解説なので詳しくは詳しい解説が記載していある他のサイトを御覧ください(笑)。

名前を
raspi_cpu_temp
とでもして
/usr/share/munin/plugins
に保存します。

実行権限を付けます。
$ sudo chmod +x raspi_cpu_temp

/etc/munin/pluginsにシンボリックを作成します。
$ cd /etc/munin/plugins
$ sudo ln -s /usr/share/munin/plugins/raspi_cpu_temp raspi_cpu_temp

munin-nodeを再起動します。
$ sudo service munin-node restart

と、ここまで勢い良く来たんですがどうやらこれでは小数点が出力されないらしい・・・。

いろいろなサイトを見てみるとシェルスクリプトだけで計算しているのは見つからなかったので、あえてここではシェルスクリプトにこだわって以下のように改造しました。

echo "temperature.value $((temp / 1000)).$((temp % 1000))"

いや、偉そうに言うほどのことでもないですね(^^;)。
しかし思うに中学生ごろにはこんなコードを書いていた気がしますが、ここ最近はとんとお目にかかったことがありません。かくいう私もなんとかして普通に計算できないかと調べまくっちゃいました(^^;)。しかし結果的には我ながら良いコードが書けたと思います(笑)。

せっかくなのでプラグインのデバッグ方法など。
・・・実はこれを動かすだけでも結構苦労しました(笑)。打ち間違いから小数点の扱いまで、答えが書いてあると簡単そうに見えるのですが、水面下では白鳥の如くすごい勢いで水を掻いていたりします(^^;)。

プラグインをテストする。
$ sudo /usr/sbin/munin-run raspi_cpu_temp

プラグインが組み込まれているか確認する。
$ munin-node-configure

ひとまずグラフを表示するようになったので、今日はここまで。

次はいよいよ本題のbme280です。i2cの有効化をしてbme280を認識できるようにしてpythonでデータを取得し、muninのプラグインに渡します。

0 件のコメント:

コメントを投稿