こんにちは!fluct の @jewel_x12 です! 性懲りもなく2日連続でのアドベントカレンダーです。
この記事でちらっと書いたのですが、今年一番のイベントは家を買ったことでした。 購入日が決まっているのにトラブルでローンが組めなかったりと語りたいことは色々ありますが、引っ越したらやりたくなるのが過度な住環境整備。みなさんも音声コマンドでテレビがつくようにしたり、家に近づくと鍵が開くようにしたりと工夫したのではないでしょうか。
たぶん必要ないのに、うちでは Nature Remo E と Google Nest Cam を導入しました。今回はNature Remo Eで計測した瞬間消費電力をM5Paperで可視化した話です。
Nature Remo E
Nature Remo Eは電力消費量を見ることができます。HEMS(Home Energy Management System)という種類の機器になります。他のHEMS機器でも消費電力を記録したりすることは可能なのですが、消費電力の推移をアプリで見ることができたり、Web APIでデータを取得できる点が魅力的です。
Nature Remo Eを買うだけでは使用できず、家がスマートメーターに対応していること、電力会社にBルート使用申請を出しておく必要があります。Bルートはスマートメーターからの電力情報を送る経路のことで、電力会社に送る経路がAルート、家のHEMS機器等に送るのがBルートになります。
グラフはこんな感じ。我が家には太陽光パネルがあるので、売電分が大きいと消費電力はマイナスになります。
よく見るところに消費電力を表示する
最初はグラフを眺めてるのが面白かったのですが、数日経つと見なくなりました。定期的に見る仕組みを作ったり、異常検知によるアラートがないと能動的に見るのは難しいですね。受動的に見る方法としては、もっと目につくところに置くというのがあります。
今回はこのように瞬間消費電力をM5Paperに表示させて、目につくところに置くようにしました。
アプリのようにグラフ表示の方が推移を見やすいですよね。後述しますが少し手間がかかるのと、アドベントカレンダーという時間的制約によって簡易的な表示になりました。クリスマスを1/25辺りにずらしましょう。
M5Paper
M5PaperはM5Stackシリーズのひとつです。ESP32マイコンを搭載して、無線モジュールなどIoT機器として使うためのスタックを提供してくれています。M5Paperにはタッチ操作可能な電子ペーパーや、Wi-Fiモジュール、バッテリーが内蔵されています。
タッチ機能を使う予定は無いですし、電子ペーパーじゃなくてもやりたいことはできるのですが、この記事を見て電子ペーパー額縁に憧れがあるのでした。
仕組み
M5PaperはGoogle Driveに上がった画像をランダムに表示するだけで、それ以上のことはしないようにしています。画像はGoogle Cloud Functionsで生成してアップロードしています。画面にどのようなものを表示するかはCloud Functionsに任せています。表示したいものが増えたりしたときにM5Paper側のプログラムをビルドしてインストールするというのを都度都度やらなくて良いです。Google Driveに上げることさえできれば、好きな言語で書けるというのもあります。
Google Cloud PlatformサービスアカウントとしてM5Paper用のものとCloud Functions用のものを用意しています。Google Driveへのアクセス権限をそれぞれにつけることでファイルをアップロードしたり読み込んだりできるようにしています。
M5Paper側プログラム
上記以外、特筆するところはあんまりないのですが、便利だったことやハマったポイントをつらつらと書いていきます。
M5PaperのプログラムはPlatformIO拡張をVSCodeにインストールして使っています。外部ライブラリをPlatformIOの画面で選択してインストールできるので、管理が非常に楽ですね。すごい……。
Google DriveへのアクセスはOAuth 2.0でやっていて、トークンリフレッシュが定期的に必要になりますがその辺りはESP-Signerにまかせています。
あとはルート証明書の配置や、証明書検証のために時刻の同期などちょこちょこやることがあります。
グラフ描画をしたかった
Nature Remo APIを使うと、グラフで使用されている時系列データを取得できるものと勘違いしていました。 実際のレスポンスはECHONET Liteのプロパティを返しているもので、時系列データではありません。
電力データ算出方法 | Nature Developer Page
積算電力量計測値は用意されています。最新の積算値と前回の積算値の差分を取ることで、ある期間の消費電力を計算できます。時系列データを作るには、そのデータをDBに保存していく必要があります。
やるなら時系列DBに入れてダッシュボードとかで見れるようにしたいなーと思ったので、今回は時間的制約も鑑みて瞬間消費電力を出すことにしました。
まとめ・今後の展望
Nature Remo Eで計測した瞬間消費電力をM5Paperに表示できる仕組みを作りました。先述のようにグラフ描画をしたり、Google Nest Camの画像を表示したりと、まだまだやりたいことがたくさんあります。いろんなセンサー情報の可視化もやりたい!!