M5StickCで家庭用スマートメーターをハックする!

ガジェット・家電・グッズ
この記事は約37分で読めます。
スポンサーリンク
スポンサーリンク

皆さんは、うっかりブレーカー落とした経験ありませんか?

「ドライヤー使う前に今の電気使用量が分かれば良いのに!」とか思ったことないですか?

最近は、その希望が簡単に叶うって知ってますか!?

と言う事で、今回は、「スマートメーターから電力状況を取得して表示する」ことが出来る機械を作ってみたお話です。

もうブレーカー落とさずに済むよん♪

  1. 前説:あなたのお宅は「スマートメーター」ですか!?
  2. ハックすると何が出来る様になるのか?
    1. 家の好きな場所で今の電気使用状況が見れます!
    2. 積算電力量データーを取得出来る!
  3. ハックの為に必要なブツ
    1. 親機用「M5StickC」か「M5StickC Plus」か「M5StickC Plus2」(必須)
    2. 「Wi-SUN HATキット」(必須)
    3. Wi-SUN通信モジュール「BP35A1」または「BP35C1-J11-T01」(必須)
    4. モニター子機用「M5StickC」または「M5Stack」(オプション)
    5. M5StickC/Plus用壁付けホルダー(オプション)
    6. WiFi環境(オプション)
  4. 注意事項
  5. ハックの前に必要な事務手続き
    1. 各電力会社の「電力メーター情報発信サービス(Bルートサービス)」の申請リンク
  6. 作業の大まかな流れ
  7. 「Wi-SUN HAT」を組み立てる
    1. 「BP35A1」の組み込み
  8. 「M5StickC」のファームウェアを更新する
  9. 「VS Code」をインストールし「M5StickC」を接続する
    1. 「VS Code」をインストールする
    2. M5Stack公式のVS Code機能拡張をインストールする
    3. 「M5StickC」をPCに接続し、COMポート番号を確認する
    4. 「VS Code」で「M5StickC」を繋ぐ
  10. 「Ambient」に登録する
  11. 必要なファイルを親機「M5StickC」へ転送する
    1. 必要なファイルを用意する
    2. ライブラリと設定ファイルを親機「M5StickC」へ転送する
    3. テストプログラム本体を親機「M5StickC」へ転送する
    4. 「M5StickC」をプログラム指定モードにして、プログラムを起動する
  12. グラフを確認する
  13. 必要なファイルをモニター子機「M5StickC/Plus」(M5Stack)へ転送する
    1. 必要なファイルを用意して子機へ転送する
    2. ライブラリと設定ファイルを子機へ転送する
    3. テストプログラムを子機へ転送する
    4. 子機をプログラム指定モードにして、プログラムを起動する
  14. 親機とモニター子機を設置する
  15. 基本的な使い方
    1. 画面消灯/点灯切り替え
    2. BEEP音有り/無し切り替え
    3. 画面表示方向180度回転
    4. Ambientへの通信状態マーカー
    5. 困ったときは?
  16. まとめ
    1. なんでコレを作ったのか?
    2. 謝辞&ユーザー様の作例紹介!(順不同)

前説:あなたのお宅は「スマートメーター」ですか!?

ここ数年で、全国の家庭用電力メーターがスマートメーターにどんどん置き変わっています。

2019年末時点だと、もう殆どのご家庭がスマートメーターになっているのではないでしょうか?

「日本の世帯毎における普及率が一番高いIoT機器」はスマートメーターと言えるかも?

 

スマートメーターって何?って人は、コチラ↓をどうぞ。

スマートメーター|Smart life|東京電力エナジーパートナー株式会社
東京電力エナジーパートナー(EP)の「スマートメーター」ページ。東京電力エナジーパートナー株式会社は、お客さまのエネルギー全体に関わる様々なご希望に真摯にお応えし、エネルギーサービスの、よきパートナーとなることを目指す、東京電力グループの小売電気事業会社です。

要は、昔の「薄い円盤みたいなのがグルグル回ってたアナログ的な電力メーター」ではなく、「通信機能の付いた円盤の無いデジタル式の電力メーター」の事です。(雑ッ)

 

なんで、スマートメーターへの置き換えが行われているかと言うと、国策で電力需給の安定化を目標にした法改正が行われたからの様ですね。

要は、電気使用量の検針を自動化して省力化しよう! 電気使用状況を細かく計測することで、電力需給を安定化させよう! という事みたい。

(各ご家庭を毎月回る検針作業が不要になることだけ見ても、かなりの効率化になってそう)

 

じゃあ、美味しいのは電力会社だけなの?というと、そんなことはありません。

 

スマートメーターになる前は、個人でリアルタイムの電気使用状況を取得する手段は、配電盤の中の電線にクランプ型電流センサを仕込む等のかなりの力業を使うしかありませんでした。

クランプ型電流センサを使った電力モニタってこんな奴↓ですね。我が家でも使っておりました。(笑)

[家電製品ミニレビュー] サンワサプライ「消費電力モニタ(クランプ式・無線電力計) CHE-TSTCLW」 ~配電盤に挟むだけ、家全体の消費電力が測れる電力計
これまで電気の見える化できる機器をいくつか紹介してきたが、いずれも部屋のコンセントの消費電力を測るものだった。

記事中では免許なしでも出来ると書いてありますが、素人が配電盤内の電線に触るのは大変危険なので、それなりのキチ・・もとい勇者しか手を出していないと思います。

 

でも、スマートメーターなら、個人でも、無線通信だけでリアルタイムの電気使用状況を取得出来るんですよ!

先の様な危険な力業はもう不要なのです! なんてスマートなんでしょう!(笑)

 

もし、家の電力メーターがまだスマートメーター化されてないお宅でも諦める必要はありません。

経済産業省の資料によると、日本全体で2024年末までに導入完了する計画とのこと。(更に、希望すれば先んじて交換してくれるという話も。。)

スマートメーターへの置き換えには契約者の費用負担が無い(要はタダ!)のも有り難いですよね♪

ビバ! スマートメーター!!

 

ちなみに、スマートメーターと通信する為には、920MHz帯特定小電力無線の「Wi-SUN」規格に対応した機器が必要となります。(特殊な事情で無線が使えない環境向けに「PLC」方式のもある様ですが、今回は対象外)

最近の新築の装備奢ってる戸建てやマンションなら、最初からHEMS電力モニタ機器として上記規格に対応したメーカー品が装備されてるかも知れませんが(羨ましい!!)、そんな方は今回の対象ではありません!

今回の対象は、既に家を建てちゃってる方や、そんなブルジョア装備付けなかった!と言う方です!!(賃貸の方も)

 

ハックすると何が出来る様になるのか?

本ハックの概要イメージはこんな感じです。

 

Wi-SUN規格に対応した通信モジュール「BP35A1」(勿論、個人でも購入可能)を使って、お手軽WiFiマイコンの「M5StickC」でスマートメーターをハックします♪

 

家の好きな場所で今の電気使用状況が見れます!

洗面所でドライヤー使う前に、今の電気使用状況が見れたら、うっかりブレーカー落とさずに済みます。

 

台所で電子レンジ使う前に・・・以下同文。(笑)

 

一般的なHEMS機器だとモニターが一個しかない商品も多いので、ハック出来た人ならではアドバンテージになるかも?

ブルジョア装備なお宅に向けて、「あら、お宅はモニタが1つしかないザマスか? 寂しいですわね、オホホ!」みたいな煽りが出来ちゃうかも知れません。(笑)

 

積算電力量データーを取得出来る!

30分毎の積算電力量データーを取得できますので、記録する方法を組み込めば過去の電気使用状況を確認することが出来るでしょう。

電気代の変化と照らし合わせて、電力自由化でお得なプランの検討にも使えるでしょう。

公開しているサンプルプログラムでは、インターネット上のデーター可視化サービスとして「Ambient」を利用して瞬間電力計測値と積算電力量を記録する仕組みになっています。(無料枠なので一定期間を過ぎた分から消えてしまいますが、残したい人はご自身で工夫してみてください)

 

ハックの為に必要なブツ

以下に、ハック実現に向けて必要な機器類を示します。

親機用「M5StickC」か「M5StickC Plus」か「M5StickC Plus2」(必須)

最近モデルチェンジされており、現行モデルは「M5StickC Plus2」です。

created by Rinker
Generic
¥5,805 (2024/05/07 21:48:26時点 Amazon調べ-詳細)

 

「M5StickC(無印)」と「M5StickC Plus」は販売終息した旧モデルです。(無印は液晶が小さいです)

現状で旧モデルを買う必要はあまりないと思いますので、新しい「M5StickC Plus2」をお勧めします。

 

「Wi-SUN HATキット」(必須)

当ブログ主が販売している商品です。

次項の「BP35A1」または「BP35C1-J11-T01」を組み合わせることで「Wi-SUN HAT」となります。(「BP35A1」または「BP35C1-J11-T01」は同梱されません)

 

BOOTHの販売リンクはコチラ↓

M5StickC用「Wi-SUN HAT」キット(※Wi-SUNモジュール別売り) - きっと何かに役立つでしょ!? - BOOTH
「M5StickC」用の「Wi-SUN HAT」キットです。 Wi-SUN規格対応のRHOM製通信モジュール「BP35A1」または「BP35C1-J11-T01」を使って、家庭用のスマートメーターと通信し電力使用状況を取得することが出来ます。 BP35A1対応版が「Wi-SUN HAT」で、BP35C1-J11-T01対応版が「Wi-SUN HAT-C1」となります。購入時にお...【続きを読む】

購入時に「BOOST↑」して下さると、この詳細ガイドを書いた甲斐があるので、大変嬉しいです!

よろしくお願いしま~す!m(__)m

Wi-SUN HATは、Wi-SUN通信モジュールの違いで2タイプあります。「BP35A1」対応の「Wi-SUN HAT(無印)」と、後継モジュールの「BP35C1-J11-T01」対応の「Wi-SUN HAT-C1」です。購入時はお使いになられるWi-SUN通信モジュールに合った方をお選び下さいます様ご注意下さい。

 

スイッチサイエンスの販売リンクはコチラ↓

M5StickC/Plus用Wi-SUN HATキット
ROHM社製Wi-SUN通信モジュールBP35A1を使って家庭用スマートメーターと通信し電力使用状況を取得することが出来るWi-SUN HATキットです。 ※BP35A1やM5StickC/Plusは付属しません。

 

Wi-SUN通信モジュール「BP35A1」または「BP35C1-J11-T01」(必須)

Wi-SUN通信規格に対応したモジュールとして、ROHM製の「BP35A1」か「BP35C1-J11-T01」が必要です。

残念ながら「BP35A1」は生産終了となってしまいましたが、後継モジュールとして「BP35C1-J11-T01」が販売されております。(互換性は無く、入替えての使用は出来ません

似た型番の別商品があるので、購入時は型番をよく確認して下さい。

国内だとチップワンストップさんあたりで取り扱いがありますね。

ROHM Wi-SUN通信モジュール BP35C1-J11-T01
ローム(ROHM)
ROHM Wi-SUN通信モジュール BP35A1
ローム(ROHM)
どちらを選ぶか悩ましいところですが、BP35A1はまだ市場在庫があり(2024年5月現在)、ユーザー様の作例(後述)やネット上の情報量は圧倒的にBP35A1の方が多いので、入手出来るならBP35A1をオススメします。(2024年5月時点の情報)

 

モニター子機用「M5StickC」または「M5Stack」(オプション)

モニター子機には、親機と同じ「M5StickC」か、より液晶の大きい「M5Stack」が使えます。

 

液晶サイズが大きく文字も見やすい「M5StickC Plus」か「M5StickC Plus2」がお勧めです。

created by Rinker
Generic
¥5,805 (2024/05/07 21:48:26時点 Amazon調べ-詳細)

 

「M5Stack」にされる場合は、本用途なら基本構成の「Basic」で十分だと思います。

あ、そうそう、M5Stack Basicもモデルチェンジしてて、V2.7が現行モデルです。

一応、M5Stack Core2系も対応しています。

っと、Core2もモデルチェンジしてて、今はv1.1が現行モデルですね。

 

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

ついでに、拙作の壁付けホルダーを使うと設置しやすくなり幸せになれます。(私も商品が売れて幸せになれます♪)

「M5StickC/Plus用壁付けホルダー」の商品説明ページ
概要 「M5StickC」・「M5StickC Plus」用の壁付けホルダーです。 販売リンク 販売サイトによって、商品のバリエーションに違いがありますので、発注前によくご確認ください。 スイッチサイエンスの販売リンクはコチラ↓ 上記スイッチサイエンス版では脱落防止機構としてケーブルホルダーも1セット付属します。 スイッチサイエンスではお得な2個セット版↓も在庫限りで販売してい...【続きを読む】

(当然、新モデルのM5StickC Plus2にも対応しています)

ブログ主宅では、脱衣所(洗面所)にモニター子機にしたM5StickCを設置しており、ドライヤーを使う際に電力使用状況をチェックしつつブレーカーを落とさない様にしております♪

 

台所にもあると、電子レンジを使う際にも同じことが出来ますね。

こちらは、同じく拙作のM5Stack/M5Stack Core2用壁付けホルダーを使用したモニター子機の設置例です。

「M5Stack/M5Stack Core2用壁付けホルダー」の商品説明ページ
概要 「M5Stack」・「M5Stack Core2」用の壁付けホルダーです。 販売リンク スイッチサイエンスさんの販売リンクはコチラ↓ BOOTHの販売リンクはコチラ↓ 対応機種 対応する機種は、M5Stack社の「M5Stack」と「M5Stack Core2」ですが、物理ボタンな「M5Stack」系列の場合はバッテリーボトムかGoボトムが付いている状態。タッチボタンな「...【続きを読む】

大電力な電化製品を使う場所には全てモニター子機を設置したいですよね♪

 

WiFi環境(オプション)

当然ありますよね!?

無い人は・・・親機でスマートメーターからのリアルタイムの電気使用状況をモニターすることだけは出来ます。(モニター子機への通信はWiFiを使うので諦めて下さい・・・)

 

注意事項

当然ですが、全ての環境で動作を保証するものではありません。

スマートメーターの通信方式は、環境条件等によって設置が困難な場合などはWi-SUN以外にPLCになっているケースもある様です。
各自の判断で自己責任としてご利用願います。

モニター子機と親機は全て同じWiFiチャネルに繋がっている必要があります。(「SSID」ではなく「チャネル」)
WiFi中継機等を使っている場合はチャネルが違っている可能性がありますので、ご注意下さい。(チャネルが違っていた場合は、子機への通信は出来ません)

これは、サンプルプログラムで親機からの同報通信に「ESP NOW」という機能を採用した為の制約事項です。
WiFiチャネル外への送信を可能にするには、サンプルプログラムを「ESP NOW」を使わない方法にご自身でカスタムして下さい。

 

ハックの前に必要な事務手続き

まず、お住まいの地域の電力会社へ「電力メーター情報発信サービス(Bルートサービス)」の申請をする必要があります。

 

Bルートというのは、経済産業省の資料によると「①スマートメーター」と「④需要家」間の通信ルートのことで、どうやら他に「②電力会社等」と「①スマートメーター」を結ぶAルートや、Cルートがある様ですね。(さも”知ってて当然”の様にBルートと出てくるのでビックリですよね。。)

経済産業省の資料2ページより引用)

 

ちなみに、この申請先の電力会社は「小売電気事業者」ではなく、送配電を担っている地域の電力会社になります。(電力自由化で「小売電気事業者」契約を変えられている場合はご注意下さい!)

 

尚、申請にあたり、

「供給(受電)地点特定番号」(電気代の明細に「地点番号」として記載がある)

「本人確認書類」(当然、赤の他人は申請出来ません)

が必要になりますので、事前に用意しましょう。

 

各電力会社の「電力メーター情報発信サービス(Bルートサービス)」の申請リンク

※一般的な家庭用は低圧電力メーターになります(高圧と間違えない様にご注意を!)

 

北海道電力(郵送・窓口受付のみ)

東北電力(郵送・窓口受付のみ)

東京電力

中部電力(郵送・窓口受付のみ)

北陸電力(郵送・窓口受付のみ)

関西電力(郵送・窓口受付のみ)

中国電力(郵送・窓口受付のみ)

四国電力(郵送・窓口受付のみ)

九州電力

沖縄電力

 

ちなみに、IDとパスワードを入手するまでには、申請から1週間以上(場合によっては3週間くらい)は掛かる様ですね。

東京電力と九州電力以外は紙ベースの申請なのね・・・と嘆いてたら、沖縄電力もオンライン申請出来る様になった模様です!偉い!!(他の電力会社ももっと頑張ってIT化して欲しいぞーー!)

 

Bルートサービスの「認証ID」と「パスワード」を無事ゲットしたら、次のステージに進みましょう。

 

作業の大まかな流れ

公開しているサンプルプログラムを使う場合は、以下のステップで進めます。

 

  1. 「Wi-SUN HAT」を組み立てる
  2. 「M5StickC」のファームを更新する
  3. 「VS Code」をインストールし「M5StickC」を接続する
  4. 「Ambient」に登録する
  5. 必要なファイルを親機の「M5StickC」へ転送する
  6. 必要なファイルをモニター子機の「M5StickC」(M5Stack)へ転送する
  7. 親機とモニター子機を設置する
  8. グラフを確認する

 

作業はコレだけです♪(実質一時間と掛からないでしょう)

 

では、早速始めましょう!

 

「Wi-SUN HAT」を組み立てる

BP35A1用の「Wi-SUN HAT(無印)」と、BP35C1-J11-T01用の「Wi-SUN HAT-C1」の組み立て方法は全く同じです。ここではBP35A1用のWi-SUN HAT(無印)でご紹介します。

まずは届いたブツを確認して下さい。半完成品の「Wi-SUN HAT」とスペーサー2個が入っています。

 

ケースは3Dプリント品なので、若干のバリ・荒れなどが御座います。使用上の問題はありませんので、悪しからずご了承願います。

 

「W-SUN HAT」のケースが組み立った状態になっていると思いますので、2本のネジを外して裏蓋を外してください。(裏蓋は写真の様に外すと爪が折れないで外れます)

 

2020/8/31以降の商品は、Rev0.2に更新されています。 ブログ内の写真とは見た目が若干違いますが、基本的な組み立て方は同じです。

 

「BP35A1」の組み込み

別途ご用意頂いてる「BP35A1」を「W-SUN HAT」基板に合体させます。

「Wi-SUN HAT」基板は手半田実装なので、若干見栄えは悪いかも知れませんが、機能上は問題ありませんので、ご容赦下さい。
「Wi-SUN HAT」基板や「BP35A1」の取り扱いには十分にお気をつけ下さい。特に静電気と埃は禁物です!(コネクタへの埃の噛み込みで接触不良になるケースもありますので、十分に注意して下さい)

 

「BP35A1」と「W-SUN HAT」基板の白いBoard to Board(BtoB)コネクタのオスメスを合わせて、真直ぐに挿し込みます。(斜め挿しすると壊れますのでご注意を!)

こんな感じ↓で綺麗に水平に嵌ればOKです。

 

続いて、スペーサーを滑り込ませますが、位置合わせの為に先程ケースを留めていたネジを仮に差し込んでおきます。(組み立て時にスペーサーが移動しない様にする為のケア)

(写真は金属スペーサーですが、同梱のスペーサーはショート防止でプラ版になってます)

スペーサーを差し込む際に、基板を無理に浮かせない様に気を付けましょう。BtoBコネクタを壊さない様に慎重に作業して下さい。

 

スペーサーを2か所共取り付けたら、ケースに仮置きします。 そーっとね♪

 

ネジが浮いてる筈なので、スペーサーを動かさない様に、そーっとネジを外しましょう。

 

続いて、裏蓋を取り付けます。写真↓の様に斜めに挿してからパタンと倒す様にすると付けやすいです。

裏蓋を嵌める際に、スペーサーがズレない様に気を付けましょう。

 

スペーサーがズレない様に裏蓋を嵌めれたら、ネジを2本締めます。

 

横に隙間が残りますが、「BP35A1」の実装ズレを吸収する為の意図的なスリットですので、この状態で正常です。

 

「M5StickC」に挿し込んで「Wi-SUN HAT」完成です♪

 

「Wi-SUN HAT」と「M5StickC」の固定がぐらぐらする場合は、「ひっつき虫」等を使って、固定させて下さい。

created by Rinker
コクヨ(Kokuyo)
¥345 (2024/05/08 17:00:48時点 Amazon調べ-詳細)
「ひっつき虫」で固定させるのは、次項以降のプログラムの動作テストが終わってからにしましょう。

 

以降の写真では、親機の「M5StikC」で「Wi-SUN HAT」が付いてない状態のモノもありますが、付けたままでもOKです。

HATの付け外しは、必ず「M5StickC」の電源がOFFの状態で行って下さい

 

「M5StickC」のファームウェアを更新する

M5StickC(またはM5Stack)のソフトウェア開発環境には色々な選択肢がありますが、ここでは用意したサンプルプログラム(MicroPythonで記述されてます)を使う方法をご紹介します。

まずは、MicroPythonのインタプリタとして、M5StickC(またはM5Stack)にM5Stack公式の「UIFlow」ファームウェアを書き込む必要があります。

UIFlow」はM5Stack社独自のブロックプログラミング開発環境です。
UIFlowの内側ではMicroPythonインタプリタが動いているので、ここでは、そのMicroPythonインタプリタを利用して直接MicroPythonで記述したプログラムを実行させる手法をとっています。

 

ファームウェアの書き込みにはM5Stack公式の「M5Burner」というソフトウェアを使用します。

M5Burnerの使い方については、さいとてつやさんのコチラ↓の記事が大変分かりやすいので、是非参考にして下さい。(さいとてつやさん、素晴らしい記事を公開してくれて有り難う御座います!)

M5Burner v3の使いかた

尚、WiFi関連のセッティングもM5Burner上でファームウェア書き込み時に一緒に行います。

もし最新のUIFlowファームウェアだとうまく動かない場合は、サンプルプログラムのGitHubに記載のUIFlow Verに合わせてお試しください。(現状ではUIFlow2系には対応していません)

 

「VS Code」をインストールし「M5StickC」を接続する

「M5StickC」へMicroPythonプログラムを転送する方法は色々ありますが、今回は、最近流行りの統合開発環境「Visual Studio Code(VS Code)」を使ってみます。

無料で使えますので、「VS Code」初めてという方もぜひ試してみてください。

今回は細かい所まで使いません。幾つかボタンを押すだけなので、恐れずにチャレンジしてみてください。
(細かいところは追々学べば良いと思います。つか、私も分からないので誰か教えて・・・)

 

「VS Code」をインストールする

こちらからお使いのPC環境に合った「VS Code」をダウンロードしインストールしましょう。

(私はWindowsユーザーなので「User Installer 64bit」を選択しました)

 

M5Stack公式のVS Code機能拡張をインストールする

「VS Code」が起動したら、下記の赤矢印のExtensionsボタンを押します。(機能拡張ボタン)

現れた機能拡張エリアの「Marketplaceで機能拡張を検索する」の場所に「m5stack」を入力し、リスト上のM5Stack社公式の機能拡張「vscode-m5stack-mpy」を選択してインストールします。

 

「M5StickC」をPCに接続し、COMポート番号を確認する

「M5StickC」をPCに繋ぐ前に「USB接続モード」へ遷移させる必要があります。

M5社の公式情報が見当たらないのですが、私が試したところ、下記方法でUSB接続モードへ遷移させることが出来ました。

「Button B」を押しながら「Power Button」を押す度にモード切替わるので、USBのロゴが出る画面になるまで操作を繰り返してください。

これでUSB接続モードになります。

 

続いて、USBケーブルでPCへ繋ぎます。

「M5StickC」を繋いだ際にPCが認識したCOMポート番号をデバイスマネージャー等で控えます。

(公式クイックスタートのファーム更新の際と同じです)

私の場合は「COM9」で認識してました。

 

「VS Code」で「M5StickC」を繋ぐ

「VS Code」画面左下の「Add M5Stack」をクリック。

 

上の方に現れたCOMポートリストで、先程控えたCOMポート番号をチェックし「OK」をクリック。

 

次に「VS Code」の左上のエクスプローラーボタンでエクスプローラーを開きます。

 

エクスプローラーウィンドウ内の「M5STACK DEVICE」を選択すると、先程チェックしたCOMポート番号が現れます。

 

このCOMポートを選択すると、「M5StickC」の中のファイルリストが見える様になっている筈です。

はい。見えましたね。

これで「VS Code」で「M5StickC」にプログラムを流し込む準備が整いました!

 

リストが現れない場合は下記をご確認ください。

PC上で認識されてる「M5StickC」のCOMポート番号が合ってるか?
「M5StickC」が「USB接続モード」になっているか?

それでもダメなら一度USBケーブルを抜き差しし、「M5StickC」を電源OFF(電源ボタン6秒長押し)して再起動させるなどを試してみてください。

 

ここまで進んだところで、一旦「VS Code」はそのまま置きます。(終了させる必要はありません)

 

「Ambient」に登録する

Ambient」とはIoTデーターの可視化サービスです。

デバイスで取得したデーターをネットワーク越しにAmbientサーバーに投げるだけで、後はAmbientサーバー上で簡単にグラフにしてくれます。

無料枠だと制限がありますが、気圧グラフくらいは問題無く作れるので、今回はこのサービスを活用させて頂きます。

無料でこんな素敵なサービス使わせてくれるなんて、太っ腹や!!

 

まずは、ユーザー登録(無料)を行いましょう。

ログイン後、「Myチャネル」の左下の「チャネルを作る」を選択し、チャネルを2個作ります。(「瞬間電力計測値」用と「積算電力量」用)

新たに生まれたチャネル名の「チャネルID」と「ライトキー」をそれぞれ控えます。(※「リードキー」は今回は使いません)

 

必要なファイルを親機「M5StickC」へ転送する

必要なファイルを用意する

サンプルプログラムはGitHubに置いてありますので、GitHubのリンクより、必要なファイルを取得しましょう。

「Clone or download」のDownload ZIPにて、ZIPファイルがダウンロードされますので、任意の場所で解凍しておきましょう。

他に必要なファイルは、GitHubのREADMEに記載してありますので、そちらをご参照下さい。

 

続いて、設定ファイル「wisun_set_m.txt」へご自身の各種ID等を入力して頂く必要があります。

※修正内容については、先のGitHubのREADMEにて説明しておりますので、そちらをご参照下さい。

 

ライブラリと設定ファイルを親機「M5StickC」へ転送する

続いて、Ambientライブラリ「ambient.py」、Wi-SUNのUDPデータ解析ライブラリ「wisun_udp.py」、設定ファイル「wisun_set_m.txt」をアップロード(転送)します。

 

「VS Code」上で、「M5StickC」のCOMポート番号のファイルリスト右上の「upload」ボタンをクリックし、先程ダウンロードしたファイル群から各ファイルを選択して「M5StickC」へ転送します。

転送が終了すると、「M5StickC」のファイルリストにそれぞれのファイルが追加されている筈です。

 

テストプログラム本体を親機「M5StickC」へ転送する

テストプログラム本体は、BP35A1向けの「Wi-SUN HAT(無印)」用が「WiSUN_HAT_A1.py」で、BP35C1-J11-T01向けの「Wi-SUN HAT-C1」用が「WiSUN_HAT_C1.py」となっています。

テストプログラム本体のアップロード先は、先程のライブラリ類とは違って「apps」配下である必要があります。(後述するプログラム指定モードで選択出来るのが「apps」配下のファイルだけの為)

といっても何も難しいことではなく、「VS Code」の「M5STACK DEVICE」リスト上で「apps」の横のuploadボタンを押すだけです。

この画面キャプチャ上では色々と余計なファイルが置かれてますが、気にしちゃダメです(笑)

 

2020/8/31販売分より基板がRev0.2に更新され、UARTのポート割り当てが変更されています。旧Rev(Rev0.1)をお使いな場合は、ソースコードの修正してご対応下さい。

 

「M5StickC」をプログラム指定モードにして、プログラムを起動する

「Power Button」を6秒長押しして「M5StickC」を一旦電源OFFし、モード選択操作(「Button A」を押しながら「Power Button」を押す)で「APP.List」を選択し、先程転送したテストプログラムを選択します。

以降は、電源OFFしても次回起動時にこのプログラムが自動起動する様になります。

他のプログラムやモードを選びたい場合は、改めて、電源OFFからのモード選択操作をすればOKです。

 

起動すると、「M5StickC」の画面上に「*」マークが増えていきます。

初回起動はスマートメーターのチャンネルのスキャンなどの処理が走るので、数分掛かるかも知れません。(正しく起動すれば、次回以降はチャンネルスキャン処理はスキップされます)

ある程度「*」マークが増えたところで、画面クリアされて時計表示になり、更に10秒程待つと今の電力値が表示されます。(テストプログラムのデフォルト設定だと、電力値は5秒毎更新です)

 

グラフを確認する

今回のテストプログラムでは、「瞬間電力計測値」を30秒毎に、「積算電力量」を30分毎に「Ambient」サーバーへ投げています。

「Ambient」の諸元/制限によると、1チャネルあたり1日3千件までデーターを登録できるとなってます。(有料枠だとどうなのかは分かりません)
今回のテストプログラムでは、「瞬間電力計測値」は丸一日分以上、「積算電力量」は2ヶ月分以上が見える状態になっている筈です。(超えた分は自動的に消えます)

 

数分待ったら、「Ambient」にログインし、Myチャネルより対象のチャネルをクリックし、グラフを確認します。

もし出てこない様なら下記をご確認下さい。

プログラム上の「チャネルID」や「ライトキー」が間違えてないか?
「M5StickC」がちゃんとWiFiでインターネット接続出来ているか?

 

尚、グラフの表示状態はカスタマイズが可能です。

 

私のカスタマイズ例を以下に示します。

 

「瞬間電力計測値」のAmbient設定

 

 

この設定だとおおよそ1日分の「瞬間電力計測値」の変化がこんな感じで表示されます。

 

「積算電力量」のAmbient設定

 

この設定だと1日単位の「積算電力量」の変化が棒グラフ表示される様になります。 こんな感じね。

 

必要なファイルをモニター子機「M5StickC/Plus」(M5Stack)へ転送する

続いて、子機を使う場合です。

事前に子機のファーム更新も親機同様に行いましょう。(「M5Stack」の場合はM5Burnerの操作が変わりますのでご注意を!)

必要なファイルを用意して子機へ転送する

サンプルプログラムは親機と同様にGitHubに置いてありますので、GitHubのリンクより、必要なファイルを取得しましょう。

他に必要なファイルも、同様にGitHubのREADMEに記載してありますので、そちらをご参照下さい。

 

子機では、設定ファイル「wisun_set_r.txt」は必須ではありません。(無い場合はデフォルト設定値で動作します。)

※修正内容については、親機同様にGitHubのREADMEにて説明しておりますので、そちらをご参照下さい。

 

ライブラリと設定ファイルを子機へ転送する

(カスタム値を使いたい場合は)続いて、設定ファイル「wisun_set_r.txt」をアップロード(転送)します。

 

テストプログラムを子機へ転送する

子機のテストプログラムは、「M5StickC/Plus」用と「M5Stack」用の2種類存在します。

詳しくは、先のGitHubのREADMEにて説明しておりますので、そちらをご参照下さい。

尚、テストプログラムのアップロード先も、親機同様に、先程のライブラリ類とは違って「apps」配下である必要があります。(後述するプログラム指定モードで選択出来るのが「apps」配下のファイルだけの為)

 

子機をプログラム指定モードにして、プログラムを起動する

親機で前述した方法と同じ様に、「M5StickC」を一旦電源OFFし、モード選択操作で「APP.List」を選択し、先程転送したテストプログラムを選択します。(「M5Stack」の場合はボタンが違います)

以降は、電源OFFしても次回起動時にこのプログラムが自動起動する様になります。

 

親機とモニター子機を設置する

お好きな設置方法で設置して下さい。

 

拙作の壁掛けホルダー等もご活用頂けると嬉しいです!

 

「M5StickC」用壁掛けホルダー ※M5StickC Plusでも使用できます!

「M5StickC/Plus用壁付けホルダー」の商品説明ページ
概要 「M5StickC」・「M5StickC Plus」用の壁付けホルダーです。 販売リンク 販売サイトによって、商品のバリエーションに違いがありますので、発注前によくご確認ください。 スイッチサイエンスの販売リンクはコチラ↓ 上記スイッチサイエンス版では脱落防止機構としてケーブルホルダーも1セット付属します。 スイッチサイエンスではお得な2個セット版↓も在庫限りで販売してい...【続きを読む】

 

「M5Stack」用壁掛けホルダー

積み型マイコンの「M5Stack」を壁に掛けてみた(STLデータ公開あり)
流行りに乗って「M5Stack」という積みマイコンモジュールを買ってみました! それで、壁掛け芸人としては、まず壁に掛けるところから始めてみました!!(笑) え、そんなこと意味ないって? いやいや、何をおっしゃいます!? 積みマイコンを"敢えて積まずに壁に掛ける"のがイケてるんですよ!!

 

基本的な使い方

上記写真はちょっと古いバージョンのサンプルプログラムの例です。(集合写真はなかなか撮れないので、そのまま掲載しております。)

現状のサンプルプログラムでは時刻表示は無くなっており、ステータスマーカーが追加されています。

 

 

サンプルプログラムには下記の機能を盛り込んであります。

画面消灯/点灯切り替え

Aボタンに割り当ててあります。(「M5StickC」だとM5ロゴの有るボタンで、「M5Stack」は3ボタンの左のボタンです)

瞬間電力値が使用警告閾値(「ブレーカー契約値」×「警告係数」×100)を超えている場合は、消灯モードでも勝手にLCDが点灯します。この場合は閾値を下回れば自動消灯します。

「ブレーカー契約値」は、設定ファイルの「AMPERE_LIMIT」の値です。

「警告係数」は、設定ファイルの「AMPERE_RED」の値です。

親機・子機それぞれで設定可能なので、オーブンは電力消費が大きいから台所の子機だけ係数厳しめ(より小さい値)にして置く事で、それぞれの場所に合わせた使い方が出来ると思います。

 

BEEP音有り/無し切り替え

Aボタンのダブルクリックで、瞬間電力値が使用警告閾値を超えた際にBEEP音を鳴らすか鳴らさないかを選択できます。(画面右上のBEEPマーカーの状態も変わります)

尚、M5StickC(無印)の場合は、このBEEP機能は使えません。(ブザーが無いため)

 

画面表示方向180度回転

Bボタン(電源ボタンじゃない方の側面ボタン)を押すと表示が180度回転しますので、設置向きに合わせてお選び下さい。

 

Ambientへの通信状態マーカー

左上の2個の丸が、Ambient 1(瞬間電力値)とAmbient 2(30分毎積算電力量)の送信状態を示しています。

丸が枠だけの時は、設定はあるけどまだ一度も送信してない状態です。

送信が成功すると丸が緑塗り潰しとなり、失敗すると赤の塗り潰しとなります。

尚、設定が無い場合は、丸が表示されません。

 

困ったときは?

・VS Codeで「Add M5Stack」が表示されない!

VS Codeのバージョンアップにより、シリアルポート周りの問題が出ることがある様です。

VS Codeのバージョンを古い奴にすると「Add M5Stack」ボタンが現れることもありますので、参考にしてみて下さい。MicroPythonには、VS Code以外の開発方法も色々あるので、そちらをお試し頂くのも手です。

VSCodeで「Add M5Stack」ボタンが表示されない件、対応を纏めて下さってる方がいらっしゃったので、リンクを貼っておきます。

VS Codeで Add M5Stack ボタンが出て来ない件
VS Codeで Add M5Stack ボタンが出て来ない時の対処方法です

 

・電力値表示が消えた!

親機は、スマートメーターからの通信が30秒(設定ファイルの「TIMEOUT」値)以上途絶えた場合は、瞬間電力値の表示が消えます。(異常時の判定用)

更に「TIMEOUT」値の4倍の時間が経っても通信が回復しなかった場合は、自動でリブートして再接続する様にしてあります。

 

子機は、親機からのデータ送信が30秒(設定ファイルの「TIMEOUT」値)以上途絶えた場合は、瞬間電力値の表示が消えます。(こちらも異常時の判定用ですが、WiFiが30秒以上途絶えることはままありますので、あまり気にしない様にしましょう)

 

・親機が起動しない! 「*」表示で止まる場合

PC等でシリアル出力をモニター出来ない時に進捗状況を確認する為に、M5の液晶画面にプログラム進捗ステータスとして「*」を表示しています。

まずはお手元のセットで表示されている「*」の個数を確認して下さい。

* :WiFi接続処理完了
** :Ambient初期化完了
*** :BP35A1用UART初期化完了
**** :BP35A1初期コマンド送受信完了
***** :Wi-SUNの過去セッションクリア完了
***** * :B-rootパスワード送信完了
***** ** :B-root ID送信完了
***** *** :Wi-SUNチャンネルスキャン完了 (数分掛かる場合もある)
***** **** :PANA接続処理完了 (数分掛かる場合もある)
***** ***** :積算電力係数要求送信・受信完了
***** ***** * :積算電力単位要求送信・受信完了
***** ***** ** :ESP NOW 初期化処理完了
以降はメインループ

公開しているサンプルプログラムのソースコードを「*」の個数を手掛かりで検索すれば、実行時にどのステップまで進んでいるのかが分かる目安としています。

 

・親機が起動しない 「***」で止まる場合

プログラム中のUARTピンの割当てが違っている可能性があります。

Rev0.1(2020/8/30以前の販売分)の方は、UARTポート設定部分のコメントアウト行を入れ替えて下さい。(rev0.1は [tx=0,rx=36]が正解です)

Rev0.2(2020/8/31以降の販売分)の方は、GitHubからダウンロードしたままで基本OKです。(rev0.2は [tx=0,rx=26]が正解です)

 

・電力表示まで出来てるのにAmbientにデーターが送られない!【解決済み】

【2020/09/05時点の情報】最新のAmbient.pyライブラリだとAmbientへのデータ送信がうまく行えない事象が報告されています。 Mar 17.2018時点のライブラリだと正常に送信出来ますので、問題がある場合はそちらもお試しください。

本件は、2021/7/4にAmbientさんのPythonライブラリが更新されたことにより、問題解決しております。 Ambientさま、対応有難う御座います。m(__)m

 

・M5StickCが黒画のまま!

まずは、上記までの内容を見て、間違いを確認して下さい。

それでも画面が黒画のままの場合は、Co2 HATを外し、M5StickC/Plus単独で暫く充電して下さい。(内部バッテリーが過放電されている場合は、起動に問題が出るケースもある様です)

Macの場合はシリアルポートの問題が出るケースもあるとか・・・こういう本↓もある様です。色々と他の不具合情報も載っている様なので、ご参考まで。

created by Rinker
¥1,980 (2024/05/08 09:33:33時点 Amazon調べ-詳細)

 

・Wi-SUNモジュール「BP35A1」が買えない! 価格が高騰している!

昨今の半導体・樹脂部品の不足の影響か、ROHMさんのモジュールの入手難が続いています。

皆さん、入手にはご苦労されている様で、この様な手段で入手されてた方もいらっしゃいました。

数ヶ月おきにチップワンストップさんとかで通常在庫が復活する瞬間がある様なので、マメにウォッチして入手しましょう!(多分、転売屋さんとかはまだ現れて無い筈・・・)

 

・うまく動かないので、M5StickC(またはM5Stack)の状態を知りたい!

うまく動かない場合には、基本的に上記までの内容を再確認して頂くことになりますが、本体画面上の「*」表示以外の手掛かりとして、PCに繋いだM5StickC(またはM5Stack)のUSBシリアル通信をTeraTerm等のターミナルソフトでモニターする方法があります。

TeraTermのシリアル通信の設定例

サンプルプログラムでは、USBシリアルで動作過程のテキスト情報を出力しています(しつこい程の量なので、何が出力されるかはソースコードを見て下さい)ので、プログラムが何処で止まってるか・何処まで進んだかの手掛かりの一つとしてご活用下さい。

 

その他については、GitHubでサンプルのテストプログラムのソースコードを公開しておりますので、そちらを読んでください。

(MicroPythonで記述していますから、Python読める人ならなんとかなりますよね?)

 

親機用ソースコードの直リンク↓

m5stickc_wisun_hat/test_WiSUN_Ambient.py at master · rin-ofumi/m5stickc_wisun_hat
MicroPython project / Wi-SUN HAT & M5StickC / Data storage uses Ambient - rin-ofumi/m5stickc_wisun_hat

 

尚、公開しているプログラムは、あくまでサンプルなので、全ての環境で動作を保証するものではないことを予めご理解願います。

 

まとめ

なんでコレを作ったのか?

最近は企業の採算悪化などで唐突にサービス停止されて、今まで使えてたモノが急に使えなくなることが起こりかねないご時世です。

出来る限り、自分で何とか出来る状況にしておきたいよね!?・・・というのが最初に始めた経緯です。

「M5Stack」を使ったシステムは昨年末からありましたが、今年になって「M5StickC」というもっとお値打ちでシンプルなデバイスが発売されたので、多数のモニター子機を家の好きな場所に置きたい!とか、親機も「M5StickC」にすれば内蔵バッテリー付きで停電時もダウンしないんじゃね!?とか、色々と妄想が膨らんだ結果が、今回の成果となります。

 

謝辞&ユーザー様の作例紹介!(順不同)

@cinimlさん

Wi-SUN HATの最初のきっかけを下さった方です!!

それ以外にも、いつも色々なアドバイスを有難う御座います。m(__)m

@cinimlさんは、BOOTHでM5Stack用Wi-SUNスタックを販売されてます。(今は休止中?)

 

拙作のWi-SUN HATのサンプルをお渡ししたところ、速攻でUIFlowで動かすプログラムを作って下さったりと、もう感謝しかない!!(足を向けて寝れないです)

 

@saitotetsuyaさん

ひっつき虫のアイデアはこの方から頂きました。

素晴らしいアイデアです! 有難う御座います。m(__)m

 

@mokjpnさん

7セグLEDによる見やすい表示器の制作例。

モニタとしては大きい表示器が正義ですよね!!

もっと大型の7セグLED探して試してみたいところ。

 

miyaichiさん

車輪の再発明はハックの王道ですよね!!

有難う御座いま~す!!m(__)m

 

@ryu2012さん

先程のmiyaichiさんのをベースに、最近のUIFlowファームでも動く様にカスタマイズされてます。

現状のMicroPythonベースのプログラムでは一番高機能だと思われ。

(私のサンプルプログラム要らないんじゃ?と思われ・・・w)

 

@waranyoさん

電子ペーパー端末の「M5Paper」を併用して、お家サイネージが出来ちゃってます!

かっけー! コレ、欲しいーー!!(語彙が。。)

 

@chasuke__さん

詳細な使用レポをブログに書いて下さってます!

私の本家サイトより詳しい!?

ブログが見やすくてとても参考になります!

 

@jitenshapさん

MicroPythonではなく、Arduinoでプログラム作られてる方もいらっしゃいました!

ブログで解説もして下さってますので、大変参考になります!

 

もとろらおさん

『スマートメーターから電力状況を取得して表示させてみた。』
昨年スマートメーターの電波をSDRのgqrxを使って920MHz帯(Bルート)の通信状態が確認出来た、Wi-SUN「ワイサン」(わいすんと読むとずっと思って…

USBドングル分解してBP35A1を入手された強者がここにも!!

 

@yonmasさん

miyaichiさん、@ryu2012さんのプログラムをベースに更に機能追加されてます! 素晴らしい!!

GitHub - yonmas/SmartMeterMonitor_M5Stack: M5StickC Plus / M5Stack とスマートメーターを繋いで、電力使用量をモニタリングします。瞬時電力、今月の電気使用量、電気代、直近7日間との比較などをグラフ表示します。Ambientにログをアップして記録・表示します。
M5StickC Plus / M5Stack とスマートメーターを繋いで、電力使用量をモニタリングします。瞬時電力、今月の電気使用量、電気代、直近7日間との比較などをグラフ表示します。Ambientにログをアップして記録・表示します。 - yonmas/SmartMeterMonitor_M5Stack

 

minter1999さん

家庭用スマートメーターをM5StickCとBP35C1-J11-T01で読み取る - Qiita
こちら「M5StickCで家庭用スマートメーターをハックする」の記事を参考に、Wi-SUN モジュールに BP35C1-J11-T01 を使用して作成した。#背景先の記事で家の機器工事無しで、…

新Wi-SUNモジュールの「BP35C1-J11-T01」を使ってらっしゃる方も発見!!

確かに、Wi-SUN HATのrev0.2以降で「BP35A1」だけでなく「BP35C1-J11-T01」も動く様に基板修正したのですが、現時点では「BP35C1-J11-T01」と組み合わせる為の情報を公開してなかったので、既に改造して動かしてる方が居るとは思いませんでした!いやはや凄い!!

実際に「BP35C1-J11-T01」と組み合わせて使うには、Wi-SUN HAT基板の部品実装を一部修正する必要があります。(半田付け作業が必要)

どうしてもTRYしたいという方は修正箇所をお知らせしますので、他にもチャレンジしたい方はお知らせ下さい。(プログラムも別物になりますので、ご自身で作って頂く必要があります)

 

朝から昼寝さん

【STEP1】自宅スマートメーターから電力使用量を取得 (M5StickC Plus + Wi-SUN HAT) | 朝から昼寝
節電対策&興味のため、自宅のスマートメーターから電力使用量を取得してみました。 本記事では、Bルートサービスを利用し、M5StickC Plusにより、自宅のスマートメーターからリアルタイムの電力使用量を表示するまでの経過をまとめます。 基

Wi-SUN HATキットの使用レポとして写真や解説が充実しています。

私のこの記事より詳しいかも!?

私のを見てて分かり難いと感じた方は、是非参考にして下さい。

 

脳内電波パンデミックさん

奥さん! コチラ、Home Assistant連携ですってよ!!

凄いじゃないですか!!(語彙が足りなすぎて感動を伝えれないクチw)

 

Kaz_Macintoshさん

Arduino系での期待の新星!

Webサーバーで外部向けにAPIアクセス可能になってたり、Ambientへの送信や子機への送信も対応されてるという、こちらも手厚すぎて卒倒しそうな構成!

凄いですね!

 

皆さま、色んな楽しみ方で使って頂けて、製作者冥利に尽きます!!

有難てぇ! ありがてぇ!! おいら、涙で前が見えないよ・・・

コメント

  1. mogw2 より:

    最近、新しいバージョンのBP35C1-J11-T01の販売が開始されたようですが、これも使うことはできるのでしょうか?

    • rin_ofumi rin_ofumi より:

      mogw2さん コメント有難う御座います。

      「BP35C1-J11-T01」は「BP35A1」とコネクタは共通で基板サイズも同じですが、信号割り当ての変更と端子処理の変更があるので、(恐らく)そのままでは使用できません。
      通信方式も違う様なので、プログラムの流用も難しいと思います。

  2. ぼへみあ より:

    こんにちは。
    記事を見てやってみようとおもったのですが、WiSUN HATが売り切れでできないようです。
    再入荷の予定はありますか?

    • rin_ofumi rin_ofumi より:

      ぼへみあ さん コメント有難う御座います。

      「Wi-SUN HAT」の在庫切れ、誠に申し訳ありません。

      只今、増産作業に掛かっておりますので、今週末には在庫回復させれると思います!!
      お待たせして大変申し訳ありませんが、もう暫しお待ち下さいませ。m(__)m

      BOOTHの「入荷お知らせメール」機能で在庫回復時に通知が来る様に出来ます。 こちらもご活用頂けると幸いです。

  3. dbc より:

    こんにちは。
    先日親機のみで運用を始めたのですが、大体1日くらい経つと通信できない状態(電力の表示オフ)になってしまいます。
    コードを見た限り、再接続処理が無いように思われます。

    PANAのセッションには24時間の有効期限があるようです。
    http://route-b.iij.ad.jp/archives/128

    • rin_ofumi rin_ofumi より:

      dbcさん コメント有難う御座います。
      加えて、情報有難うございます。

      仰られる通り、GitHub上で公開しているサンプルプログラムではセッションの再接続処理は行っておりません。
      一定時間情報更新が無ければ電力表示が消える動作にしているので、そこで再接続処理を行うロジックを入れれば期待される動作に近づけるかも知れませんね。
      ただ、スマートメーターの機種の違いか、電力会社の違いか、他の要素かは分かりませんが、セッションの有効期限の挙動は環境によって違いがある様です。
      記事中でも書いておりますが、全ての環境で動作を保証するモノではありませんので、お手元の環境で動く様にプログラム改修頂ければ幸いです。
      (GitHubで公開しているプログラムは、MITライセンスと比較的弄りやすいライセンスにしてあります)

      • dbc より:

        お返事ありがとうございます。
        修正できたらpull-requestを送ってもいいですか?

        • rin_ofumi rin_ofumi より:

          > 修正できたらpull-requestを送ってもいいですか?

          勿論です!
          当方、GitHubに初心者故に儀式が分からず色々と失礼してしまうかも知れませんが、生暖かく見守って頂けると幸いです。
          今後も宜しくお願いします!

  4. 石渡登 より:

    有益なプログラムと情報をありがとうございます。
    無事に電力測定とグラフ化することができました。
    ただ1点、有識者の方には既知の問題かもしれませんが、Ambientへのデータ送信で躓いた箇所がありましたのでお知らせします。
    MicroPythonではurequestsでtimeout機能が無いので、post処理の引数にあるtimeoutを削除しないとデータ送信失敗のままでした。ご参考まで。

    • rin_ofumi rin_ofumi より:

      石渡登 さん コメント有難う御座います。

      MicroPyhtonにはurequestsでtimeout機能が無いんですね。
      記事中ではAmbientさんのライブラリは古い版を使う様に推奨してましたが、確かにその後の版でtimeout関連のコードが追加されてるので、ご推察通りの状況だと思われます。
      Ambientさんのライブラリの問題なので、対応はお任せするしかないですが、当面は古い版を使用して頂くしかないかも知れませんね。

      情報有難う御座います。
      拙作のご利用と併せて、重ねて感謝申し上げます。m(__)m

  5. イケ より:

    初めまして
    Wi-SUN HATキットの再販予定はございますか?

    • rin_ofumi rin_ofumi より:

      イケ さん コメント有難う御座います。

      「Wi-SUN HAT」の在庫切れ、誠に申し訳ありません。

      只今、増産作業に掛かっておりますので、数日中には在庫回復させれると思います!!
      お待たせして大変申し訳ありませんが、もう暫しお待ち下さいませ。m(__)m

      BOOTHの「入荷お知らせメール」機能で在庫回復時に通知が来る様に出来ます。 こちらもご活用頂けると幸いです。

  6. s より:

    素敵なポストありがとうございます。こちらの記事を見てリアルタイムでの電力計測までできました!
    家のスマートメータは積算電力量係数(D3)の取得に対応していなかったようで「***** **** 」で止まってしまいました。未対応の場合1として扱うとの仕様を見つけたのでコードを共有しておきます。同じような方がいれば参考になればと思います。

    https://gist.github.com/shun-sa/86c975efeb9423765d873a1cce4fa1a4#file-wisun_udp-py-L26-L34

    • rin_ofumi rin_ofumi より:

      s さん コメント有難う御座います。

      スマートメーターハックを楽しんで頂けてる様で幸いです。

      「***** ****」で止まるケースについては、過去にお問い合わせ頂いたことがあったのですが、スマートメーターの機種あるいは電力会社によるのか、当方の環境では再現出来ていないのです。
      (何度か再起動させてるウチに抜けたという症例もありました)

      スマートメーターも色々ですね~。

      どうしても「***** ****」を抜けれない場合は、やはり、積算電力量係数の初期値を固定し処理をスキップする方向でご対応頂くのが確実かと思います。(いずれ、サンプルソースの方でも対応処理を追加しようと思います)

      情報共有有難う御座います!

  7. yasu より:

    素敵な情報有難うございました。
    電力計のデータを無事取得とサーバー&子機転送無事できました。
    有難うございます。
    温度計測でラズパイZEROで散々うまくいかなかったので
    組上げて実際に動かせるまで大変判りやすかったです。
    1点問題が発生しています。
    データを見ていると太陽光で発電を開始し買電→売電になると数値がオーバースケール
    しています。データ見てると楽しいですね・・・・
    多分何かデータの変更をしなければいけないと思うのですが、MicroPython
    というかプログラムが解らないもので、これから勉強して何とかしたいと思います。
    ・・これはそのまま置いておいて、次にCO2計の組立に入りたいと思います。
    有難うございました。

    • rin_ofumi rin_ofumi より:

      yasu さん、コメント有難う御座います。

      スマートメーターハックを楽しんで頂けてる様で幸いです。

      当方は売電設備を持っていないので、売電情報の処理についてはテストしようがなく、値がおかしい可能性は十分にあります。
      サンプルソースのtest_WiSUN_Ambient.pyとwisun_udp.pyの内容をご自身の環境に合わせて修正頂くことになります。
      両方ともコメント多めで処理の流れを読みやすくする様に書いたつもりなので、MicroPythonを勉強と併せてご解読頂ければと思います。

      CO2計はCo2 HATでしょうか!? ご利用ありがとうございます!m(__)m
      二酸化炭素濃度計測も楽しんで下さいませ!

  8. 林 伸夫 より:

    ずいぶん前に購入しトラブルを乗り越えながら動かしていた林です。その当時(2019年)はうまく動いており、ずいぶん重宝させていただきました。ありがとうございます!!
    ところが何年か後に何かの拍子にデータが取れなくなってしまい原因不明でそのままになっていました。
    M1 Macに買い替えたので新しい環境でもう一度チャレンジしようとやり始めたのですが、それから苦労の連続。
    VSCodeで”Add M5Stack”とするとUSBポートは認識されるものの、M5StickCの本体内のディレクトリにアクセスできない、とかいろいろあり・・・苦節三日。
    なんとかだましだましrin_ofumiさんのプログラムを流し込んで、動き始めました。Ambient.ioにもデータ送信できグラフも表示できるようになりました。
    バンザ〜〜〜イと喜んだのも束の間、3日目でまた動かなくなりました。画面上には***と星が三つ出たまま先に進みません。
    何度リスタートさせてもこの***で止まってしまいます。
    VSCodeに接続しようと、USBモードに切替えるべく、電源を落として再起動を試みるも、今度はリブートもできなくなってしまいました(;_;)
    内部の状態を見ようにも現在は真っ暗なまま動いてくれません。
    VSCodeで”Add M5Stack”とするとUSBポートは見えていますので、画面が真っ暗なまま内部的には動いているようにも見えます。(ケーブルをはずすとそれまで見えていたusbポートが消えます)
    これをどう攻略すればいいのか? 何か手がかりはないか、探していますが今のところ全く光明は見えません。
    基板RevUpに伴い、UARTのピン割当てが変更されているということですが、ピン割り当ての変更の目的は何だったのでしょうか? 立ち上がらない原因とは関係ありませんよね?
    で今、M5Bunerを見ましたらUIFlow_StickC v1.10.0(Developed based on Micropython-1.12, For M5StickC device.)というのが出ていました。
    これをやったらあるいは変化があるかも、とこれからチャレンジするところです(今ここ)
    何か、動かない件に関して情報をお持ちでしたら、お教えいただければ幸いです。

    • rin_ofumi rin_ofumi より:

      林 伸夫 さん、コメント&お買い上げ有難う御座います。

      ※自動スパム判定ツールで誤判定されていたので、コメントを見付けるのが遅くなってしまいました。
      最近海外からのスパムが多くて埋もれてしまい見逃してしまいました。大変申し訳ありませんでした。

      コメント頂いた内容を拝見するに、シリアルポート通信がうまく行っていない様に見受けられます。
      対処法として、こちら↓の「困ったときは?」をご確認頂けると幸いです。
      https://kitto-yakudatsu.com/archives/7206#toc40
      他にも白いコネクタへの異物噛み込みの可能性も御座います。
      一度モジュールを外しゴミが付いてないかご確認下さい。

      基板RevUpでシリアルポートの入れ替えを行った件については、将来への布石として、別のWi-SUNモジュールも使える様にしたことが主な理由です。(実際に他のモジュールを使うには実装部品の入れ替えが必要となりますし、プログラムも別物になります)

      M5StackCが黒画面のままになってしまうケースは、HAT未装着でもたまにネットでも拝見しますが、USB電源の問題であるケースが多い様に感じています。
      A.電源ボタン長押しで電源OFF、その後数分放置してUSB電源接続して再起動
      B.UIFlowファームウェアをイレースして再度書き直す
      などの対処を行ってもうまく動かないでしょうか?

      以上、ご参考まで。 無事にうまく動くことをお祈りします。

      • 林 伸夫 より:

        rin_ofumiさん、
        ご返信、ありがとうございました。
        その後も悪戦苦闘。起動せず、画面が真っ暗な状態が変わらないので、
        すべてまっさらな状態から再開しようと、m5burnerを使って、ファームウエアをイレース、最新版のUIFlow 1.10.0を焼き込みました。
        ここまでは順調。電源ボタンを6秒以上押し、再度電源ボタンを押したら起動しました。
        昨日まで何しても起動しなかったので、これは前進です。
        Wi-Fiモードで立ち上がるので、即座にBボタンを押して、USBモードに切替え。
        ここでVSCodeにつないで
        各プログラムファイルを修正した上で、流し込もうとしましたが、
        私が以前ダウンロードしたリポジトリには「ntptime.py」ライブラリが入っているものでしたが、今はいらなくなっているのですね。

        念のため、新しいリポジトリからすべてをダウンロードして「ambient.py」「wisun_udp.py」「test_WiSUN_Ambient.py」「wisun_set_m.txt」を修正の上、所定の位置に配置。
        このあと、起動モードをAppにして起動しましたところ、画面に「user app」と表示されたまま、次に進みません。(涙)
        何か忘れてますかね?
        でも、前回は画面が真っ暗だったものが、「user app」と出ただけ前進です。
        M5StickCの状態を確認するためのログなどはどこかに出ているんもでしょうか?

        • rin_ofumi rin_ofumi より:

          林 伸夫 さん、コメント有難う御座います。(コメントへの返信が遅くなり申し訳ありません)

          改めて、当方でも現時点での最新のUIFlow v1.10.1で試してみましたが、特に問題なく動く様です。(M5StickC Plus版でも同様)

          仰られてる『画面に「user app」と表示されたまま、次に進みません。』という状況がよく分かりませんが、M5StickCの状態を確認したいということであれば、M5StickCのUSBシリアル通信をTeraTerm等のターミナルソフトでモニターするのが一番手っ取り早いと思います。(サンプルプログラムでは、動作状況の過程をUSBシリアルで出力する様にしています。※詳しくはソースコードをご確認下さい。)

          以上、ご参考まで。

          • 林 伸夫 より:

            >現時点での最新のUIFlow v1.10.1で試してみましたが、特に問題なく動く
            わざわざ検証ありがとうございます。
            それだけ分かれば、とにかく不具合はデバイスの周辺、プログラムのタイプミスなどに絞れます。もうちょっと頑張って調べてみます。USBシリアルの出力も調べてみます。
            当方、Arm搭載のMacなもので、シリアル通信を表示させるところから手探りで調べなくてはなりません。頑張ります。

  9. だい より:

    ***** ****で止まるケースに引っかかってしまいました。
    うちのスマートメーターは交換したばかりですが何か関係はありそうですか?

    ↑の過去のコメントで

    未対応の場合1として扱うとの仕様を見つけたのでコードを共有しておきます。同じような方がいれば参考になればと思います。
    https://gist.github.com/shun-sa/86c975efeb9423765d873a1cce4fa1a4#file-wisun_udp-py-L26-L34

    このリンクも切れていて困っています。
    なにか情報があればお願いします。

    • rin_ofumi rin_ofumi より:

      だい さん、コメント有難う御座います。

      「***** ****」まで表示できてるのであれば、スマートメーターとの通信はうまく行ってそうですね。
      その次の積算電力量係数の要求・受信がうまく行っていないのだと思われます。(スマートメーターの交換が関係しているかは当方では分かりかねます)

      スマートメーターによっては積算電力量係数の要求に応答しないこともあるようなので(機種によるのか電力会社によるのか不明)、応答無い場合は規定値の「1」を予め代入し、積算電力量係数の要求処理をスキップする対応もアリだと思います。

      具体的には、test_WiSUN_Ambient.pyの603行目の

      if u.power_coefficient == 0 :

      の前に

      u.power_coefficient = 1 :

      を挿入するなどが、参考例となります。

      尚、ブログの文中でも記載してますが、公開しているプログラムは、あくまでサンプルなので、全ての環境で動作を保証するものではないことを予めご理解願います。
      プログラム中ではコメント文やデバックシリアル出力なども積極的に行っておりますので、ご自宅のスマートメーターに合せてカスタマイズしてお使い下さい。

  10. ちゅうひーん より:

    はじめまして。
    親機1台、ambientへの送信を試していますが、うまくいきません。
    appから起動すると、「This file from web exec」と表示される
    のみです。
    アドバイスを頂けたら幸いです。

    • rin_ofumi rin_ofumi より:

      ちゅうひーん さん、コメント有難う御座います。

      必要なファイルが足りてないか、何らかの事情でファイルが壊れているかだと考えられます。

      液晶画面以外にも、デバッグシリアル出力をモニターすることで、どこで躓いているかのヒントが得られることもあります。(「困ったときは?」の項を参考にして下さい)

      うまく動くことをお祈りします。

  11. ちゅうひーん より:

    ありがとうございました。
    ambientは一旦置いて、画面表示まで
    を試そうとファイル転送からやり直しました。

    ****** ***** * :積算電力単位要求送信・受信完了

    なんとか、ここまで表示しましたが、ここで停止して
    しまいます。
    BルートのID、Pass?はokのようですが
    ESP NOWに問題があるのでしょうか。
    といっても、ESPが何のことかわからないのですが・・・・。

  12. ちゅうひーん より:

    ESPを0してできました!。
    ありがとうございました。

    • rin_ofumi rin_ofumi より:

      無事に先に進めた様で良かったです!

      「ESP NOW」についてはネット検索すると色々情報出てくると思いますので、調べてみて下さい。
      (子機を使用しないのであれば、「0」で問題ないと思います)

      もしかすると、WiFi周りの設定がうまく行ってないのかも知れませんね。
      Ambientにトライする前に、WiFiのSSIDやパスワードが正しいか確認されることをお勧めします。

  13. 素人 より:

    お世話になります。 画面の隅に、緑で BEEP と表示されるだけですが、何が悪いのでしょうか?

    • rin_ofumi rin_ofumi より:

      素人 さん、お買い上げ、並びにコメント有難う御座います。

      流石に頂いた情報だけだとアドバイスのしようがありません。
      (親機の「*」表示の処理は無事に抜けられたのでしょうか?)

      お手数ですが、作業を一通り見直して頂いた上で、「困ったときは?」の項の内容をご一読願います。
      現在の状況を知るには「うまく動かないので、M5StickC(またはM5Stack)の状態を知りたい!」の所が一番参考になるかと思います。

      またUIFlowファームウェアのバージョンについては、M5Stack社の更新頻度が高い為、GitHubの記述と同じVerにし辛い場合もあるかと思います。
      当方で全てのVerを確認するのは難しい為、お問い合わせ時はお試し頂いたVerを記載頂けると助かります。

      以上、宜しくお願いし致します。

      • rin_ofumi rin_ofumi より:

        素人 さんがコメントされていた状態とは違う内容ですが、一部不具合が発見されたので、追記します。

        UIFlowファームウェアのV1.10.2以降だとESPNOWの処理が変わってる様で、ESPNOW機能を使う子機連携を有効にしてるとエラーが出てプログラムが止まってしまう様です。
        GitHubで公開してるサンプルプログラムは公開時にv1.8.5で動作確認しておりますが、現状ではこのVerのファームウェアはダウンロード出来ない様なので、お試しになる場合はv1.10.1以前のVerを使って下さい。

        以上、宜しくお願い致します。

  14. 素人 より:

    rin_ofumiさん 、直ぐに返信ありがとうございました。こちらは、遅くなり申し訳ありません。  

    VSコードの、バージョン、1.67.2 M5バーナー 1.10 

    原因は、テキストのIDのハイフンを消さなかったことでした。 素人ですができてよかったです。  

    もうちょい素人な方の向けな説明が欲しいかもです。 ありがとうございました。

    • rin_ofumi rin_ofumi より:

      無事に動いたとのことで良かったです!(報告有り難いです!)

      解説の粒度はずっと迷っているところですが、M5Stack社の更新頻度が高く、詳細の手順を書いてもいつの間にか違ってしまってることが多々あり、この記事を手掛かりに、ユーザー様ご自身で色々調べつつ作業して頂ければと考えています。
      記事中の「なんでコレを作ったのか?」でも書いておりますが、”出来る限り、自分で何とか出来る状況にしておきたい”という目的でこのHATを起こした背景がありますので、悪しからず、ご了承願います。(ご意見は今後の参考にさせて頂きます。)

  15. ひまじん より:

    Wi-SUN HATキット購入させていただきました!
    早速電力会社にBルートサービスを申し込み、Wi-SUN HATキットと一緒に手配した M5StickC PLUS2 と BP35A1 も届いたので組立てて、認証IDとパスワードが今日 (2024/02/15) 届いたのでプログラム転送して起動…が、何度やっても画面には「user app」の表示。
    原因は自分のオペミスで、Bボタン+電源で電源を入れて UIFlow の画面でAボタンを押して「APPList」を選択していたためでした。Aボタン+電源で電源を入れてからメニューから「APPList」を選択するとプログラムの選択ができるようになりました。

    で、プログラムは起動したものの、電力が全く表示されない。
    Bボタンで反転させると、やたら大きな数字が出る。
    Tera Term でコンソール出力してみると、 2147483646W と出ている。UDPデータの瞬時電力値を見ると 7FFFFFFE …
    うちのスマートメーター、壊れてるんじゃない? と思って、IDとパスワードが書かれた用紙を見ると、

    「データ開示日 2024年2月19日」

    …単にデータが開示されてなかっただけでした。
    (接続希望日があまり早いといけないと思い、先日付で申し込んでました)
    ということで、動作確認は来週月曜になりそうです。

    • rin_ofumi rin_ofumi より:

      ひまじん さん、お買い上げ、並びにコメント有難う御座います。

      データー開示日が先の日程のケースがあるのですね。
      開示日前の挙動の報告事例は見たことが無かったので、とても参考になります!

      来週月曜が楽しみですね!
      スマートメーターとの通信を楽しんで頂ければ幸いです。

  16. うさまる より:

    M5StickC Plusを2個使って親機と子機を作成しました。
    親機は正常(日時、電力表示)に動作しますが、
    子機は電力は表示されるものの日時表示部分(右上)に「BEEP」と表示され、
    日時が表示されません。

    なぜでしょうか?

    最新のプログラムでは、子機の日時は表示されないのでしょうか。

    • rin_ofumi rin_ofumi より:

      うさまる さん、お買い上げ、並びにコメント有難う御座います。

      サンプルプログラムの現行Verでは、子機ではBEEP状態を優先し、日時は表示されなくなりました。
      元々、日時は文字が細か過ぎる上にちらつきで見難いという問題がありましたので、その対応となります。

      写真の方の更新がされておらず、分かり難くて申し訳ありませんが、近く親機も同様の状態にしたく、その際に写真も更新する予定です。

      以上、宜しくお願いします。

      • うさまる より:

        早速のお返事、ありがとうございます。

        確かに親機の時計表示は、少し「ちらつき」がありますが、
        NTP時計で正確であるという意味では表示意義があると思っていたので、
        少し残念な気もします。

        メールした後で、手持ちのM5StickCでも子機を作ってみましたが、
        こちらも電力表示だけだったので、
        やっぱり仕様変更したのかなと思っていたところでした。
        できれば、日時表示が有り無しの両バージョンがあればいいのかなと。

        とにかく、リアルタイムで電気使用量が見えるという凄い機器であることは間違いなく、
        こういった機器を安価で容易に製作できるとして紹介していただいたことに、
        非常に感謝しています。
        ありがとうございました。

        今後の作品も期待しています。