おんどとりという温度計測デバイスがある。サーバ監視に使っている Ganglia に測定値を送って、プロットするようにした。なお本機には、測定値をクラウドに送信したり、メールで送信したり、FTP サーバにアップする機能もある。しかし、Ganglia に登録するなら、直接データを取り出したほうが簡単であろう。
TR-7W の場合
B/crrntdata/cdata.txt に
#1 MachineCode=1 Name=---- Time=2015/12/30 18:43'10 Unit=0 cTemperature1=25.3 cTemperature2=26.2 wState=0
のような生データがあるので、これをパースして gmetric に投げればよい。
curl http://hostname/B/crrntdata/cdata.txt | awk -F= '$1=="cTemperature1" {system("gmetric -t float -n OndotoriCH1 -u Celcius -v " $2/1.0)} $1=="cTemperature2" {system("gmetric -t float -n OndotoriCH2 -u Celcius -v " $2/1.0)} '
TR-701NW の場合
Web インターフェイスが凝っている代わりに、データの取得を Ajax でやるようになっていて解読が複雑である。current.inc というファイルに、構造体をダンプして base64 エンコードしたものが JSON で入っているので、Python で適当にパースする。どうせ要素の順番は変わらないので、添字などは決め打ちで十分だ。なお、以下のコードは摂氏温度の設定の場合である。
#!/usr/bin/python import urllib2 import base64 import struct import os response = urllib2.urlopen("http://hostname/current.inc").read().split() data = base64.b64decode(response[6][1:-2]) ch1 = (struct.unpack("H", data[26:28])[0] - 1000) / 10.0 ch2 = (struct.unpack("H", data[42:44])[0] - 1000) / 10.0 os.system("gmetric -t float -n Ondotori-CH1 -u Celcius -v %.1f" % ch1) os.system("gmetric -t float -n Ondotori-CH2 -u Celcius -v %.1f" % ch2)
これらのスクリプトを cron から適当な間隔で呼べばよい。