スマートプラグを使って機器の電力消費量をグラフ化する

2023/02/06munin, 家電

Amazonでスマートプラグが安く売られているとkamosawaさんに教えてもらって買ってみた。このプラグ、なかなか便利である。

電源のON/OFFができて、消費電流・電力も測れる。電気代高騰の折り、電力を無駄食いしている機器をチェックできるのは便利だ。この手のスマートプラグはTuyaという会社のOEMらしく、かなり普及して安価になっているようだ。
(説明書に記載されているアプリ以外に、Tuyaのアプリも使える。Tuya製の方が安心だと思う)


スマホで操作できるのは便利だけど危険

スマホアプリから電源のON/OFFができて、日々の消費電力も見えるのは便利である。便利なんだけど、機器操作のときに電源操作ボタンがデカデカと表示されるのが気になる。うっかり操作ミスで大事な機器の電源を切ってしまいかねない。

機器選択画面にも電源ボタンがある。危険



機器を選んだ画面。真ん中の大きばボタンは、いかにも間違って電源を切ってくださいと言わんばかり



グラフも一覧表示したいけど、一台づつ見るしか無い。不便である。

日別と月別が見れるけど、複数機器を一覧で見たいよね



こんな不便なツールはPCで置き換えるべきである。ということで、私的な定番ツールであるmuninを使ってグラフ表示することにした。

データの取り込み方

tuyaのスマートプラグは広く使われているので、ライブラリがGitHubにあるだろと思って探したらあった。便利だ。



利用するためには tuyaのサイトで利用者登録と機器の登録をしないといけない。登録方法は上記のGitHubにある。

上記の手順通りにtuyaのサイトに登録したが、IMPORTANTに記載されているAPI statusのSmart Home Family Managementが私には探せなかった。どこにあるのだろうか。でも動いたから気にしないことにした。


上記GitHubのサンプルだと、devices.jsonを見なくても値が読めるようになっているのだが、なぜか私の環境では動かなかった。API statusが1つ探せなかったのが原因だろうか。
仕方ないので、うまくいかない部分を修正して、書いたのが下記のコードである。

実行すると、ネットワーク内の機器の消費電流・電力が表示される。
(事前に、python3 -m tinytuya wizardで機器のリストをdevices.jsonに作成しておく必要がある)

#!/usr/bin/env python3

import tuyapower
import tinytuya
import json

devices_json = json.load(open('devices.json','r'))
devices = tuyapower.deviceScan()
print(devices)
for ip in devices:
    id = devices[ip]['gwId']
    k1 = list(filter(lambda k: k['id']==id, devices_json))
    if not k1:
        break
    key = k1[0]['key']
    vers = devices[ip]['version']
    (on, w, mA, V, err) = tuyapower.deviceInfo(id, ip, key, vers)
    print("Device at %s: ID %s, state=%s, W=%s, mA=%s, V=%s [%s]"%(ip,id,on,w,mA,V,err))


muninでグラフ化

各スマートプラグの消費電力が拾えるようになったので、グラフ化した。定番のツールであるmuninを使っている。






私が書いたプラグインはgithubに置いておきます。

munin, 家電

Posted by ず@沖縄