m5stackでWi-SUNによるスマートメータからの電力取得
目的
カメラを使わない見守り
構成
使用したもの
ハード
- ATOMS3R m5stack (https://www.switch-science.com/products/9915?variant=44086301720774)
- M5AtomS3/R用ATOMIC Wi-SUN-C1キット (https://www.switch-science.com/products/11324?variant=46063135228102)
- BP35C1-J11-T01 (ROHM)
使用したハードウェア
© TASYU.COM
ソフト
-VScode
-VScode 拡張機能 PlatformIO
Bルートサービスの開通
電力会社へWeb申込すると概ね営業日1日で照合結果が返ってきますが、供給(受電)地点特定番号の照合に3回失敗をしました。 電力会社のコンタクトセンターに電話で確認すると、小売電気事業者でスイッチング支援システムに登録している住所との照合なので確認する必要があるとのこと。 小売電気事業者へ問い合わせして解決をしました。
東京電力の場合:電力メーター情報発信サービス(Bルートサービス)
m5stackの設定
VScodeにPlatformIOの拡張機能をインストールし新規プロジェクトを作成
変更部分 “wisun_Arduino.ino”
- Ambient連携をしないでMQTT通信でアップロードするのでAmbient周りを削除
- 新しいESP32 Arduino coreでは互換対応部分でビルドエラーが出てしまったので旧方式に統一をさせてもらいました。
// ESPNOW受信コールバック。子機からのHIST_REQのみを処理する
// (既存の瞬時電力値/積算電力量のブロードキャスト配信は送信専用のまま)。
- #if ESP_ARDUINO_VERSION_MAJOR >= 3
- void onEspNowRecv(const esp_now_recv_info_t *info, const uint8_t *data, int len) {
- const uint8_t *mac = info->src_addr;
- #else
void onEspNowRecv(const uint8_t *mac, const uint8_t *data, int len) {
- #endif
if (len <= 0) return;
if (data[0] == HIST_MSG_REQ) {
histSyncHandleRequest(mac, data, len);
} else if (data[0] == HIST_MSG_HEARTBEAT) {
histSyncHandleHeartbeat(mac);
}
}
背景
電力計スマートメータになった一方で、電力量は電力会社等のサイトにアクセスしないと取得ができないと思っていました。
そのためSwitchBotのコンセントの出力をみたりもしていましたが、ハードの信頼性の低さで利用をやめました。
見守り用に終日の電力使用量変化を分析したいと想像していたところ、XでWi-SUNに関する記載を見つけ、電力会社へ申請することで個人でもスマートメータから直接データ取得できるWi-SUNという通信プロトコルがあることを知りました。
もっぱらRaspberry piを使用していましたがm5stackにも興味あったところでATOMS3Rを使ったシンプルなシステムで取得ができるとのことでプロジェクトを開始しました。
サービスの連携先
- InfluxDB
- Node-RED
- Eclipse Mosquitto
- Cloudflare Tunnel