i2c機器がこの状態で検出されるかどうか確認して見ます。
$ sudo i2cdetect -y 1
コマンドが無いって怒られました。まあ、想定通りなんですが(^^;)。
i2c機器の認識から始めます。
$ raspi-config
でi2cを有効にします。
$ sudo vi /etc/modules
で
i2c-bcm2708
i2c-dev
を追加します。うちのはi2c-devはすでに追加されていましたので、i2c-bcm2708を追加します。
(意味はわかりませんが(笑))
$ sudo vi /boot/config.txt
で下記を追記。具体的には先頭の#を削除。
dtparam=i2c_arm=on
$ sudo reboot
でリブートします。
立ち上がったらi2c-toolsをインストールします。
$ sudo apt-get install i2c-tools
この段階でようやくi2cの検出が可能になりました。
$ sudo i2cdetect -y 1
うちでは
i2c_address = 0x76
となっています。
次はbme280からデータを持ってくるための準備です。
bme280のアクセス用プログラムはスイッチサイエンスさんがpythonコードで提供してくれていますのでそれを利用します。
python-smbusをインストールします。
$ sudo apt-get install python-smbus
次に適当なフォルダにおいたスイッチサイエンスさんのPythonコードを実行してみます。
私は出力を改造しているので、ここでは名前をbme280_non2.pyとでもして、/home/pi/に保存しておきます。
$ python /home/pi/bme280_non2.py
で気温、気圧、湿度が表示されるはずです。
例えば、私の改造後の出力は
31.023869
991.371934
44.143983
となっています。上から気温、気圧、湿度です。
さて、ここまで来たら次はこの結果をmuninプラグインに取り込んでグラフ化します。
例によってmuninのプラグインをさくっと書きます。
---ここから
#!/bin/bash
# bme280 munin plugin by nonnon
#%# family=auto
#%# capabilities=autoconf
sensor_in=$(sudo python /home/pi/bme280_non2.py)
count=0
sensor=()
for L in $sensor_in
do
count=`expr $count + 1`
sensor[$count]=$L
done
if [ "$1" = "autoconf" ]; then
if [ -n ${sensor[1]} ]; then
echo yes
exit 0
else
echo no
exit 0
fi
fi
if [ "$1" = "config" ]; then
echo 'multigraph m_humi'
echo 'graph_title 3 BME280 Humidity'
echo 'graph_args -Y -J'
echo 'graph_scale no'
echo 'graph_vlabel Percent'
echo 'graph_category BME280'
echo 'humidity.label humidity'
echo ''
echo 'multigraph m_temp'
echo 'graph_title 2 BME280 Temperature'
echo 'graph_args -Y -J'
echo 'graph_scale no'
echo 'graph_vlabel Celsius'
echo 'graph_category BME280'
echo 'temperature.label temperature'
echo ''
echo 'multigraph m_pres'
echo 'graph_title 1 BME280 Pressure'
echo 'graph_args -Y -J'
echo 'graph_scale no'
echo 'graph_vlabel hPa'
echo 'graph_category BME280'
echo 'pressure.label pressure'
exit 0
fi
echo 'multigraph m_humi'
echo "humidity.value ${sensor[3]}"
echo ''
echo 'multigraph m_temp'
echo "temperature.value ${sensor[1]}"
echo ''
echo 'multigraph m_pres'
echo "pressure.value ${sensor[2]}"
---ここまで
名前をbme280_non2とでもしておきましょう。
では、例によってこのプラグインをCPU温度のときと同じ手順で使えるようにします。
bme280_non2を
/usr/share/munin/plugins
に移動します。
実行権限を付けます。
$ sudo chmod +x bme280_non2
/etc/munin/pluginsにシンボリックを作成します。
$ cd /etc/munin/plugins
$ sudo ln -s /usr/share/munin/plugins/bme280_non2 bme280_non2
munin-nodeを再起動します。
$ sudo service munin-node restart
わすれてました。パーミッションを追加します。
/etc/munin/plugin-conf.d/munin-node
に
[bme280_*]
user root
を追加します。念のためmunin-nodeを再起動します。
さて、プラグインの動作実験です。
$ sudo /usr/sbin/munin-run bme280_non2
ここでは、
multigraph m_humi
humidity.value 42.298481
multigraph m_temp
temperature.value 30.668437
multigraph m_pres
pressure.value 991.962348
等と表示していれば完了です。
あとは数分待ってグラフが表示されるのを待つだけです!
ようやく復旧しました!
0 件のコメント:
コメントを投稿