この記事の見出し一覧
家で日々消費する総電力を監視してみたいなぁと思い、Bルートの申込みを2年前に済ませていたものの、Wi-SUNモジュール(スマートメーターと通信する機器)に2万も出費するのが嫌でずっと放置してた。
最近になってふとググっていると、「RL7023 Stick-D/IPS」なる製品が1万以下で購入できることが分かり、コレは!と思い飛びついた次第。
この記事は、到着後早速にMuninグラフ化まで設定してみた記録。
メーターとWi-SUNモジュール間はコンクリ隔てて15mほど
自宅のスマートメーターを見ると富士電機製だった。Wi-SUNモジュールまでの距離はMuninが動いてるモニタリングサーバーから下写真のここまで15mほど。メーター設置されてるマンションの玄関隣の場所から、部屋内ベランダ側近くまでの通信となる。最初は通信が安定するか不安だったけれど、結果的にまったく問題なかった。
RL7023 Stick-D/IPSは問題なく自動認識
動かす環境はVM上のUbuntu 18.04 LTS。後に、20.04 LTSにアップグレードしているが問題なく動き続けている(2020年現在)。
# cat /etc/issue Ubuntu 18.04.2 LTS \n \l
#
RL7023 Stick-D/IPSは、ESXiでパススルーした後USBコネクタに刺すだけで次のように認識。/dev/ttyUSB0 として確認できたので、とてもお手軽に事前準備できた。筆者は仮想環境だが、リアルサーバでも同様に認識するはず。
# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 003 Device 005: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)
...........
#
ワット数の取得は、次リンク先有志の方のスクリプトから echonet.py と get-power.py を使わせていただくことにした。ありがとうございます。
変更は、アカウントのrbid、rbpwd はもちろんだけれど、26行目を、
body = str(intPower)
にして、当方環境では時間も不要なため27行目をコメントアウトに。
あとは、59、60行のファイル出力先を、
POWER_FILE_NAME = "power.log"
WRITE_PATH="/var/log/"
とした程度。デーモンとして動かしておけば定期的に数値を書き出してくれる。
Pythonのシリアル環境がインストールされてなかったのでaptで入れたけれどエラーになった。そのためpip でも入れてみた。
# apt-get install python3-serial
# apt install python-pip
# pip install serial
Muninプラグインを作ってみる
Muninプラグインは取りあえず簡単に作って、取得安定するのかしばらくの期間様子見してみることにする。Munin自体の構築は「munin インストール」などでググって有志の記録を参考に。
# cat /etc/munin/plugins/wattage
#!/bin/bash
if [ "$1" = "autoconf" ]; then
echo yes
exit 0
fi
if [ "$1" = "config" ]; then
echo 'graph_title Power wattage'
echo 'graph_args -l 0'
echo 'graph_vlabel wattage'
echo 'graph_scale no'
echo 'graph_category sensors'
echo 'wattage.label Watt'
echo 'wattage.draw LINE'
echo 'graph_info Home wattage'
echo 'wattage.info bp35a1 with smartmater'
exit 0
fi
echo -n 'wattage.value '
cat /var/log/power.log
#
get-power.py 動かしたあとに見てみると、取得値も問題なさそう。
# munin-run
wattage wattage.value 392
#
スバラシイ!(^^)
やっぱり、仕事感ハンパないZabbixよりもシンプルなMuninが好きwww
WindowsでエンコードしたりエアコンONにすると電力量上がったりして、その相対関係が分かり見てておもしろい。電気代明細と見比べると、今月は、来月は、などと予想できてきたりもするだろう。
取得異常時はデーモン自動再起動させることにした
その後、2週間程度でプロセスはあるものの数値更新されないことが続いた。そのため、こちらを参考に監視cronを動かすことにした。
ちなみにスクリプトはsystemdでサービス化しているので、プロセス監視をシステム任せにするのがよいでしょう。
# cat /etc/systemd/system/power.service
[Unit]
Description = Power daemon
[Service]
ExecStart = /usr/bin/python /usr/local/bin/bp35/get-power.py
ExecStop = /usr/bin/pkill -SIGTERM /usr/bin/python /usr/local/bin/bp35/get-power.py
Restart = on-failure
Type = simple
RestartSec = 10s
[Install]
WantedBy = multi-user.target
その後
グラフが途切れるようなことはなく、スゴぶる安定! いよいよグラフから月の電気代が予想できるようになりつつあるw
1年以上経過したがド安定でGoood !!
グラフが途切れることは無くなった。
日に2、3回プロセス再起動しているのが分かる。
$ tail /var/log/powercheck.log
2020-06-09 04:30:01 restart
2020-06-09 13:50:01 restart
2020-06-09 22:00:01 restart
2020-06-10 16:00:01 restart
2020-06-10 17:50:01 restart
2020-06-11 18:10:01 restart
2020-06-11 18:20:01 restart
2020-06-12 05:30:01 restart
2020-06-13 09:00:01 restart
2020-06-14 06:50:01 restart
2020-06-14 16:20:01 restart
$