スマートプラグとPrometheus、Grafanaで作ったエネルギー使用量モニタリングシステム
(ounapuu.ee)- athom.tech
EU style plug V3スマートプラグの Tasmota と、既存のホームサーバー上の Prometheus・Grafana を連携させ、家電やコンピューティング機器の長期的な電力使用量を可視化 - プラグごとに
tasmota-power-exporterを実行し、Prometheus が 1秒ごとにスクレイプする構成で、Grafana はmin stepを1秒に合わせると細かなグラフを見られる - 約4か月の測定結果では、電気温水器は平均 4.51kWh/日、ホームオフィスのデスク全体は平均 0.95kWh/日を使用し、Zimaboard は通常利用時に約7Wで、ISPのモデム/ルーターより低かった
- 電圧グラフにもピーク電力時間帯と高消費電力機器の動作が表れ、温水器・電気ケトル・電気コンロ・電子レンジがオンになると、すべてのプラグの電圧がわずかに下がる
- 長期測定には有用だが、一部のプラグは統計を時間どおりに送らなかったりネットワークから消えたりして電源の再起動が必要になり、電気料金に基づく自動制御は次の実験候補として残っている
スマートプラグで長期的な電力使用量を見る
- 目的は、ホームサーバー、ルーター、ワークステーション、電気温水器のような機器の消費電力を長期間にわたって視覚的に追跡すること
- 以前使っていた単純なデジタル電力計は瞬間的な測定値の確認には十分だったが、機器が長い時間の中でどのように電力を使うかを把握するには限界があった
- 使用した製品は athom.tech の
EU style plug V3変種で、EUへの配送はクリスマスを含めて9日かかった - プラグには Tasmota がプリインストールされており、同梱の案内に従って Wi-Fi に接続した後、ブラウザから管理できる
- ファームウェアアップデートは Web GUI から数回クリックするだけで最新バージョンまで上げられる
Prometheus と Grafana の収集構成
- 電力計データは、ホームサーバーにすでにあった Prometheus インスタンスに集約
- Prometheus は複数のソースからメトリクスを定期的に読み取り、ディスクに保存したうえで、後からクエリや操作に使うツールとして利用
- サーバーでは tasmota-power-exporter をプラグごとに1つずつ実行
- Prometheus は各 exporter を1秒に1回スクレイプ
- プラグ自体にメトリクスをエクスポートさせることもできるが、Tasmota ファームウェアを自分でビルドする方式は選ばなかった
- 可視化には既存の Grafana インスタンスを再利用
- グラフで最も詳細なデータポイントを得るには、
min stepの値を1秒に変更する必要がある
- グラフで最も詳細なデータポイントを得るには、
約4か月間観察した電力使用量
-
電気温水器
- 30Lの電気温水器が測定対象の中で最も多くの電力を使用
- 短いシャワー1〜2回や、大量の食器洗いに十分なレベルの温水器が基準
- 測定値は次のとおり
- 一般的な電力使用量: 4.51kWh/日
- 観測された最低値: 0.56kWh/日、通常は家に誰もいないときに発生
- 観測された最高値: 11.1kWh/日、洗濯とシャワーが多かった日に発生
-
ホームサーバーとネットワーク機器
- ホームサーバーのワークロードは Zimaboard で実行しており、低消費電力が重要な選定理由だった
- Zimaboard の電力使用量は次のとおり
- アイドル状態: 約 2W
- すべてのサービスを実行する通常利用: 約 7W
- 最大消費電力: 約 15W
- ISP提供のモデム/ルーターボックスは、ルーターモードかブリッジモードかに関係なく常に 12〜14W を使用し、Zimaboard より多くの電力を消費する
- レイテンシに敏感なワークロードを追加したことで、一時期ホームサーバーを ASRock Deskmini X300 に戻した
- Deskmini のアイドル時消費電力は Zimaboard と比べると悪く、15〜20W 程度
- Deskmini はCPUの低電力状態を C3 より下まで公開していないように見え、Zimaboard は C10 まで C-state を公開する
- UEFI設定や Linux カーネルでより低い C-state を公開する方法は見つからなかった
- Prometheus node exporter の Grafana ビューにサーバー消費電力パネルを追加すると、CPU活動の増加が消費電力グラフにもはっきり表れた
電圧変化とデスク周りの電力パターン
-
電圧変化
- Tasmota プラグは現在の電圧値も報告する
- 電圧グラフには季節性のように見えるパターンがあり、一般的なピーク電力消費時間には全体的に電圧が下がる
- このような形は Prometheus ベースの異常検知実験の候補になり得るもので、GitLab の Prometheusを使った異常検知の記事 を参考にできる
- 温水器、電気ケトル、電気コンロ、電子レンジのように電力を多く使う機器が動作するときにも電圧低下が発生する
- 温水器はすべてのプラグの電圧をわずかに下げる
- 電気コンロで調理するときは、オン・オフの周期がすべてのプラグの電圧読み取り値にも見える
-
ホームオフィスのワークステーション
- 1つのプラグで、ホームオフィスのデスクに接続されたモニター、USB-Cドック、モニター用ライトバー、デスク上で充電される機器をまとめて測定
- 消費電力は在宅勤務時間や複数機器の充電有無によって大きく変わる
- コンピューター作業中の構成全体の一般的な消費電力は 45〜60W で、ピークは 90〜110W 付近
- 測定された日次使用量は次のとおり
- 一般的な電力使用量: 0.95kWh/日
- 観測された最低値: 0.07kWh/日
- 観測された最高値: 1.52kWh/日
-
充電パターン
- スマートプラグは複数機器の充電パターンを観察するのにも有用
- ノートPCやモバイルバッテリーは最初は急速に充電されるが、バッテリーが満たされるにつれて速度が落ち、ある時点から満充電までトリクル充電のように見える区間が現れる
- 電動自転車のバッテリーは例外的に、充電中の消費電力が少しずつ増え、充電の終盤でより速く低下する
- 電動自転車は
Turboプリセット基準で60kmの走行距離に 0.5kWh を消費し、kmあたりの費用は半セントと計算された
安定性の問題と次の実験
- スマートプラグの安定性はおおむね良好だったが、一部のプラグが統計を時間どおりに報告しないケースが頻繁にあった
- 原因は Wi-Fi アクセスポイント側の問題かもしれない
- 2つのプラグはネットワークから完全に消えて戻ってこず、何度か完全な電源再起動が必要だった
- プラグは HTTP を含む複数の API で機器をオン/オフできる
- 今後 Home Assistant や簡単なスクリプトを使って、現在の電気料金に応じて特定の機器をオン/オフする方法を試せる
- 調べた範囲では、Home Assistant向けの nordpool 統合 が存在する
- 全体の構成により、さまざまなコンピューティング機器の信頼できる電力測定が可能になり、今後使う機器の電力効率を推測なしに判断する助けになる
1件のコメント
Hacker News の意見
Zigbeeのブレーカーを買って、家全体の電気がそこを通るように接続し、電力使用量を表示する電子ペーパーディスプレイも作った
https://www.stavros.io/posts/making-the-timeframe/
安価なドングルを付ければアプリで統計を見られ、例えばこれを使っている: https://www.homewizard.com/nl/shop/wi-fi-p1-meter/
このメーターはローカルネットワークAPIも提供している。SmartThings Hub向けの小さなドライバーを作って、SmartThingsアプリでも統計やグラフを見られるようにしたし、Zigbee/Z-Waveデバイス用にSmartThingsハブを使っている: https://github.com/danieldk/homewizard-energy
自然な統合先はHome Assistantだと思う。Earuブレーカーの値をZigbee2MQTTで読み取ってエンティティを設定する以外に、Home Assistantへ直接使える統合がまだあるのかは分からない。それでも、メーターを自動化ハブにつなぎ、ハブがメーターや他の情報の画像をディスプレイへ送るというパターンは良さそうだ
https://imgz.org/
BTCで支払うときの「open in wallet」ボタンは直すべきだ。リンクが壊れている
それ以外はちゃんと動く。例: https://imgz.org/iAB4tgaJ/
数年前にこの分野にはまって、あまり知られていないRainforest Automation Eagleというデバイスを買った: https://www.rainforestautomation.com/rfa-z114-eagle-200-2/
電力会社に登録するとスマートメーターを読み取ってくれるシンプルなLinuxデバイスで、XML APIを提供しているのでPrometheusにブリッジして使っている: https://github.com/kklipsch/reagle
電力会社ComEdの価格フィードもPrometheusへブリッジしている: https://github.com/kklipsch/comed_exporter
この2つのおかげで、家全体の使用量と価格情報をPrometheus、そしてGrafanaでかなりうまくグラフ化できている
さらに一歩進めて、分電盤にEmporia Vue 2を取り付けた。16個のCTクランプと3相メインまで付いている
ESP32ベースで、ローカル専用レポートのために書き込める優れたESPHomeプロジェクトがある。そこにHome AssistantとVictoriaMetricsを加えると、Grafanaで家全体の動作を見られるようになる。次は、このデータを使って小さなOpenDTU太陽光設備を制御する逆潮流なしの電力制御だ。本当にすごい時代に生きている
helpフィールドがその役割を果たしていたVictoriaMetrics/Grafanaがうちの産業用ヒストリアンシステムを置き換えつつあるが、もちろんその製品が最高級というわけではない。OSI PIのほうが良いだろうとは思う
見つかるクローン品は「元の」ハードウェアと価格がほぼ同じだ
ATM90E32ASはJLCPCBでチャネル当たり約1ドルなので、SMT実装まで任せればかなり安く作れそうだ。自分の用途では回路が約60個ある
家全体の負荷については、各国で使われているスマートメーター技術と統合することを勧める
中規模の負荷、例えば家庭用分電盤の32Aブレーカーのようなケースでは、まだ信頼できて費用対効果の高い解決策を見つけられていない
パネルに設置できる IoTaWatt デバイスを使った。回路ごとの監視には優れた解決策で、InfluxDB との直接統合があるので Grafana を使える
プラグごとの監視も、特定の回路にある特定の機器を把握するにはすばらしい
短い設定動画: https://www.youtube.com/watch?v=-tcbJCvuJG8
古い建物にバケーションレンタルを 3 軒持っていて、そこにスマート化と監視を追加しているところで、そのうち 1 つは動画の 1 本をもとにした Raspberry Pi キオスクだ
自分も IOTAWATT を使っていてとても気に入っている。唯一の不満は、同じデバイスでさらに多くのチャンネル、たとえば 30 チャンネル前後を記録できたらいいのにという点だ
Tapo P110 から電力使用量の指標を取得して、https://github.com/richardjennings/tapmon で Grafana Cloud に送り込んでいる。ただ、ほかの人も言っているように、スマートプラグに Wi‑Fi を使うのは荒い部分がある
Meross のスマートプラグは少しマシだが、それでもたまに接続が切れる。アップデート後はやや改善した
Grafana を IoT/SCADA 制御 の方向に押し広げようとしている。データソースを可視化する優れたツールであるだけでなく、データシンクを制御するツールにもしたい
その用途に Home Assistant を勧めるべきだというのは、個人的にはあまりうれしくない
Grafana Labs で働いている
従来の SCADA システムはグラフ機能があまりにもひどいので、十分に揺さぶれる領域だ
半分冗談だが半分本気で、Grafana 自体の使用量が監視で得られる利益を相殺しているのではないかと思う。見た目に合理的なレベルをはるかに超えるリソースを定期的に使うソフトウェアを 1 つ挙げるなら Grafana だ
安価な ESP32 に照度センサーをつないで購入し、その照度センサーを電力メーターに取り付けた。メーターは 1kWh ごとに 1000 回点滅する方式なので、それを読んでいる
データを Google Sheets にアップロードし、シート側でグラフ化させたところ、うまく動いている
高齢の親族の家にも PIR センサーを付けた ESP32 をもう 1 台置いていて、動きのデータを別の Google Sheets シートに送って、ある程度の活動があるかを監視している
Google がこのサービスをいつでも打ち切ると予想しているかといえばそのとおりだが、今のところは動いている。ESP32 から JSON で Google Sheets にデータを書き込んだり読んだりでき、直感的ではないが可能で、しかも無料だ
リモート監視のため、その値を iobridge に取り込める HTTP サービスを動かすだけのメモリがぎりぎりあった
ここのコメントで Shelly モニターの話がもっと出てこないのが意外だ。家全体、つまり引き込み口と回路の電力監視に向いていて、統合性もかなりオープンで、Home Assistant とそのまま統合できる
家の中では「スマートではない」既製のブレーカーを使い、追加のモニターを付けるほうが、機能を単一のデバイスに強く結び付けるより理にかなっているように思える
3 相クランプが非常に高価で、Emporia Vue のように 8 個や 16 個のセンサーを付ける選択肢がない。Shelly は言及する価値はあるが、細かな電力計測向けではない
自動化までできるという点もある。最近作った自動化は、赤ちゃん用の ホワイトノイズマシン が動いているときは、ドアベルの音を小さくするというものだ