朝から昼寝

ITや家計、身近なことの整理

[お知らせ]
当サイトは、2024年1月1日に
新URL(happynap.net)に引っ越しました





このページの内容は、最新ではない場合がありますので、新URLをご確認ください。






当サイトには広告を含みます。"オススメ"として紹介している商品やサービスは、個人的にそう思えたものだけです。
共感、興味をもっていただけるものがあればご利用ください (広告掲載ポリシー)。

【STEP1】自宅スマートメーターから電力使用量を取得 (M5StickC Plus + Wi-SUN HAT)

概要

節電対策&興味のため、自宅のスマートメーターから電力使用量を取得してみました。

本記事では、Bルートサービスを利用し、M5StickC Plusにより、自宅のスマートメーターからリアルタイムの電力使用量を表示するまでの経過をまとめます。

基本的な内容は、M5StickC/Plus用Wi-SUN HATキットという最適なパーツの製造?および販売元であるM5StickCで家庭用スマートメーターをハックする! | きっと何かに役立つでしょ!? (以降、サポートサイト) を参考にさせていただき、実践したものです。

手順やプログラム等の詳細については、このサポートサイトをご覧ください。

本記事は、実践してみて気付いた点や、少しずつ実装していくため工程をスモールステップに分解し、自分なりに整理したものです。

おおまかな前提

スマートメーターからデータを取得するには、Bルートサービスを利用する必要性があります。各電力会社に申し込むことにより無料で利用できるサービスです。

出典:電力メーター情報発信サービス(Bルートサービス)|電力自由化への対応|東京電力パワーグリッド株式会社

住宅の建築やリフォームの際にHEMS機器を導入済みの場合は、その機能の一部として、スマートメーターからデータを取得できるようになっているかと思います。

対して、本記事では、そのような既製品のHEMS機器でなく、M5StickC Plusというマイコンモジュールに必要パーツを接続し、電力使用量のデータを取得する場合の話をまとめています。

Bルートサービスでは、HEMSアプリケーション用国際標準通信規格 "ECHONET Lite"と、国際無線標準通信規格 "Wi-SUN" が採用されています(参考)。

各ステップの整理

少しずつ実装していくため、工程をスモールステップに分解していきます。

STEP0 必要な環境やモノの用意

全工程を通して必要な環境やモノについては、機会があれば別記事にまとめます。

以下は、STEP1だけのために必要となる機器の説明です。

STEP1のために必要な環境

STEP1を実践するために必要な環境は以下です。

  • 電力メーター情報発信サービス(Bルートサービス)
    利用には、申込時に発行される認証IDとパスワードが必要
  • Wi-Fi~インターネット環境
    M5StickC Plus (ESP32)は、2.4GHzのWi-Fiにのみ接続可能 (5GHz不可)
  • PC
    M5StickC Plusの設定作業用、VSCodeを使用
  • ドライバー
    M5StickC/Plus用Wi-SUN HATキットとBP35A1 (Wi-SUNモジュール) の組み立てに使用

STEP1でインターネット環境が必要な理由は、NTPによる時刻同期のためと認識しています (サンプルプログラムより)。

STEP1のために必要な機器やパーツ

STEP1を実践するために必要となる機器やパーツは以下です。

10,000円超くらいの予算になると思います。既製品のHEMS機器に比べると安いです。

  • M5StickC Plus (本体)
  • M5StickC/Plus用Wi-SUN HATキット
  • BP35A1 (Wi-SUNモジュール)
  • USBケーブル (M5StickC Plus側はType-C、PC側はPCのUSBポートに合ったもの)
  • (オプション) M5StickC/Plus用壁付けホルダー
  • (オプション) ひっつき虫


M5StickC Plus (本体)

M5StickC Plus (本体)は以下です。スイッチサイエンスで購入できます。在庫があればAmazon等でも購入できます。

M5StickC Plus は、従来の M5StickC より新しいモデルです。

M5StickC/Plus用Wi-SUN HATキット

M5StickC/Plus用Wi-SUN HATキット は、スイッチサイエンスBOOTHで購入できます。

出典:BOOTH

このHATの中に、後述のBP35A1 (Wi-SUNモジュール) を入れて組み立てます。

BP35A1 (Wi-SUNモジュール)

BP35A1 (Wi-SUNモジュール)は、チップワンストップコアスタッフオンラインで購入可能です。在庫があればAmazon等でも購入できます。
このパーツが最も高価です。8,000円くらいしますね。

USBケーブル

USBケーブルは、M5StickC Plus側はType-C、PC側はPCのUSBポートに合ったものが必要です。スイッチサイエンスでも購入できます。

以下のM5Stack Basic (後のステップで子機として使用可) を購入すれば、"M5" ロゴ入りで20cmのUSBケーブルが付属します (M5StickC Plusには付属しません)。
また、市販のUSBケーブルでも、データ転送対応のものなら使用できるとは思います (必ず動作するかは分かりません)。

(オプション) M5StickC/Plus用壁付けホルダー

壁にキレイに設置できるケースです。

M5StickC/Plus用Wi-SUN HATキット は、スイッチサイエンスBOOTHで購入できます。

出典:スイッチサイエンス

(オプション) ひっつき虫

M5StickC Plusと、Wi-SUN HATの接続部がグラグラする場合に固定させるためのアイテムです。私も使っています。

STEP1 ひとまず電力使用量を表示

手順は、サポートサイトの内容を実践したものなので、詳細はそちらをご覧ください。

本記事では、アウトラインと実践してみて気付いた点をまとめておきます。

使用するファームウェアやプログラム、バージョン等

(STEP1を実践した2023年6月時点)

組み立て

サポートサイトの説明に沿って、M5StickC/Plus用Wi-SUN HATキットとBP35A1 (Wi-SUNモジュール) を組み立てます。

高価なパーツを壊さないようそっと組み立てます。静電気にも注意。


ここで、ネジを外すためにドライバーが要ります。

M5StickC PlusとHATを接続すると、接続箇所が確かにグラグラするので、ひっつき虫のようなモノが要りそうです。私もひっつき虫を使いました。

ファームウェア書き込み (M5Burner)

サポートサイトの説明に沿って、M5Burnerを使用してファームウェアを書き込みます。

今回動作させるプログラムはMicroPythonなので、その場合はUIFlow向けのファームウェアを使用することになります (参考)。

ファーム選択やバージョン選びに関する注意点

M5Stackの機種(今回はSTICKC)と、書き込むファームウェア(今回はUIFlow_StickC_Plus)を間違えないように気を付けます。間違えても書き込み直せば良いです。

バージョンについては、基本的に最新版のファームウェアを使用すれば良いのですが、新しいバージョンでの仕様変更等によりプログラムが動作しない場合には、rin-ofumi / m5stickc_wisun_hat に記載のバージョンと同じor近いものを使用しても良いでしょう。

Wi-Fi設定を入力しても反映されなかった

M5Burnerによるファームウェア書き込み時、M5StickC PlusがWi-Fiに接続するためのSSIDとパスワードを入力するのですが、反映されなかったようで、ファームウェア書き込み後もWi-Fi接続できませんでした。

出典:m5-docs

Wi-Fi設定は、後で設定し直せば済むので、特に問題はありません。

プログラムの配置

サポートサイトの説明に沿って、VSCodeで、M5StickC Plusにプログラムを配置します。

M5StickC Plus をUSBモードに切り替え

M5StickC PlusをUSBモード (公式サイトでは "Device offline programming mode (USB mode)" と記載) にすると、VSCodeからプログラムをアップロードできるようになります。

操作手順としては、以下です。
(1) 電源OFF状態 (電源ボタンを6秒間長押しするとOFF) から、
(2) [電源ボタンを押す]
(3) 電源ON直後のUIFlowロゴ表示中(以下の画像の左)に [Bボタンを押す]
(4) USBモード(以下の画像の右)になる

出典:m5-docs

各ボタンの説明は以下です。


出典:m5-docs ※当サイトにて緑色で注釈


メニューから "Switch mode" を選択しても、"USB" を選択して電源ボタンを押して再起動しても、USBモードになるようです。

プログラムの設定と配置

STEP1では、以下のファイルを M5StickC Plus に配置します。

  • test_WiSUN_Ambient.py (appsフォルダ配下)
  • wisun_udp.py (ルートフォルダ直下)
  • wisun_set_m.txt (ルートフォルダ直下)

wisun_set_m.txt は、以下のように編集します。

wisun_set_m.txtの編集

STEP1では、wisun_set_m.txtの以下の箇所を編集します。

  • BRID: Bルートサービスの認証ID
  • BRPSWD: Bルートサービスのパスワード
  • ESP_NOW: 1から0に変更
  • AMPERE_LIMIT: 電力契約容量のアンペア数
  • AMPERE_RED: 警告表示の閾値を決めるためAMPERE_LIMITにかける係数

ESP_NOWを0にする理由は、STEP1では子機を接続しないので現時点では不要であるため、また、サンプルプログラムがESP-NOWの部分で起動しなかったのでESP-NOW自体を無効化する必要性があったためです。

STEP2以降でESP_NOWを動作させる方法について検討予定です。サポートサイトのコメント欄には、"UIFlowファームウェアのV1.10.2以降だとESPNOWの処理が変わってる様で、ESPNOW機能を使う子機連携を有効にしてるとエラーが出てプログラムが止まってしまう様です。" と投稿がありました。

AMPERE_LIMIT、AMPERE_REDは、電力使用量が閾値を超えた場合に文字色が赤になる動作を設定するためのものです。デフォルトのまま変更しなくてもとりあえず電力使用量の表示は可能です。AMPERE_LIMITは、自宅の電力契約容量のアンペア数を記載します。契約容量の単位がVAだったり200V電源もある場合もありますが、とりあえず100Vとした場合のアンペア数にしておきます。電力使用量がAMPERE_LIMIT × AMPERE_REDを超えた場合に、文字色が赤になります。

プログラムの配置

あとはVSCodeでアップロードすれば配置完了です。

M5StickC PlusのWiFiの設定し直し

前述のとおり、M5Burnerによるファームウェア書き込み時、M5StickC PlusがWi-Fiに接続するためのSSIDとパスワードを入力するのですが、反映されませんでした。

公式サイトを参考に、設定し直します。


出典:m5-docs


M5StickC PlusのWi-Fi設定を行うための簡易AP的なモード (公式サイトでは "AP hotspot configuration WiFi" と記載)で動作させます。

操作手順としては、以下です。
(1) 電源OFF状態 (電源ボタンを6秒間長押しするとOFF) から、
(2) [電源ボタンを押す] (公式サイトには2秒間押すよう書かれていますが長押し不要でした)
(3) 電源ON直後のUIFlowロゴ表示中に [Aボタン(M5ボタン)を押す]
(4) "Code" 画面で [Bボタンを押す]
(5) "Setup" 画面で [Aボタン(M5ボタン)を押す]
(6) 各種設定メニューが開く

各種設定メニューでは、[Bボタンでメニュー移動]、[Aボタン(M5ボタン)で決定]で操作できます。

"Wi-Fi via AP" を選択すると、M5StickC PlusのWi-Fi設定を行うための簡易AP的なモードに切り替わります。PCから表示されているSSIDWi-Fiに接続し、http://192.168.4.1にアクセスすると、M5StickC PlusのWi-Fi設定画面が開くので、必要なパラメタを入力します。

(UIFlowファームウェアにはこのような機能があるんですね)

動作確認

サポートサイトの説明に沿って、M5StickC PlusでAPPListから、アップロードしたプログラムを選択して再起動します。

プログラムの起動シーケンスに応じた "***…"の表示の後、リアルタイムの電力使用量が無事、表示されるようになりました。

上記の画像は、ちょうどエコキュートがお湯を沸き上げ中の電力使用量が表示されたものです。2000Wを超えています。

STEP1は、ここまでです。

まとめ

本記事では、Bルートサービスを利用し、M5StickC Plusにより、自宅のスマートメーターからリアルタイムの電力使用量を表示するまでの経過をまとめました。

部屋の電気を消してみるだけでも電力使用量がリアルタイムに減るので、家族も興味深そうに色々と試しています。これだけで節電意識が高まりますね。

なかなか自分だけではここまで実装できませんが、サポートサイトのおかげで、スムーズに進められました。ありがたいです。

引き続き、以降のステップも進めていきたいと思います。

参考

  • 本記事は、Icons8のアイコンを使用しています(Icons by Icons8)。