スマートメーターのBルート接続で電力消費量をMuninしてみた

sponsored links

家の総電力を監視してみたいなぁ、とBルートの申込みは2年前に済んでいたものの、Wi-SUNモジュールに2万も出費するのが嫌でずっと放置していた。

メーターとWi-SUNモジュール間はコンクリ隔てて15mほど

ちなみに、スマートメーターを見ると富士電機のものだった。Wi-SUNモジュールまでの距離は15mほど。メーター設置されてるマンション玄関隣から、部屋の窓近くまでの通信。最初は通信が安定するか不安だったけれど、結果的には問題ないように見える。

ずっと気にはなっていたものの最近になってふとググっていると、「RL7023 Stick-D/IPS」なる製品が1万以下で購入できることが分かり、BP35A1コレは!と思い飛びついた次第。以下は、到着後早速にMuninしてみた記録。

RL7023 Stick-D/IPSは問題なく自動認識

動かす環境はVM上のUbuntu 18.04 LTS。

# 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プラグインは取りあえず簡単に作って、取得安定するのかしばらくの期間様子見してみることに。

# 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が好きw

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
sponsored links