YouTubeアカウントあります!

raspberry pi と Wi-SUN モジュールを使用してスマートメータと通信してみた

スポンサーリンク

はじめに

のすけ
のすけ

一人暮らしするようになってから

こまめに電気を消したり、エアコン我慢したり

節電してるつもりだけど

普段どのぐらい電力を使用しているのだろう????

と思ったので今回は電力スマートメータと

通信してデータを取得してみたいと思います。

今回の記事は私の電子工作記録と言う事で自分のやってみた事を記録して公開しますが、間違えている内容などがある可能性があるのでその際は記事を更新させていただきます。

スポンサーリンク

買ってきたもの

こちらの写真が主に使用したものです。

4月末に注文してそろえたので下に記載の購入価格は4月末のものです。

すべて合わせて1万2000円ぐらいでした。

Raspberry Pi Zero WH

秋月電子で,200円でした

コロナウイルス外出自粛期間中でしたので通販で購入しました。

Raspberry Pi ZERO用ユニバーサル基板

秋月電子で100円でした

ピンソケットメス40P

秋月電子で80円でした、意外と高いんですねこれ。

I2C接続 SSD1306

aliexpressで中国から輸入しました

送料を入れて226円でした

Wi-SUN モジュール BP35A1

ROHM Wi-SUN通信モジュール BP35A1

こちらが一番重要な部品で一番高かったです。

chip1stop.comで7,490円で購入しました!

アダプターボード BP35A7A

BP35A1をつなぎやすくするための部品と言ったところでしょうか、

chip1stop.comで1,190円でした。

BP35A7-accessories

BP35A1とBP35A7Aの固定用のスペーサーとねじです。

chip1stop.comで190円でした。

その他

抵抗やタクトスイッチ、SDカード、USBなど

色々なものが必要になってきますが家に転がっているものを使用しました。

スポンサーリンク

Bルート申込

スマートメータと通信するには無料で申込が可能な

電力情報発信サービス(Bルート)の申込が必要になるみたいなので

今回申込をしました!

パスワードがメールで送られてきてIDが郵送で送られてきます

IDの方は到着まで時間がかかったので早めに申込をした方がいいと思います

申込の際に検針票や電力自由化のマイページに記載の

供給地点特定番号が必要でした!

スポンサーリンク

制作

ピンヘッダの取り付け

BP35A7Aにピンヘッダを取り付けました

18ピンはんだで取り付けていますが

実際使うのは四つの(VCC・GND・RX・TX)ピンだけです。

BP35A1とBP35A7Aの合体

BP35A7-accessoriesのスペーサーとねじを使用して取り付けました。

ブレッドボードを使用した動作確認

Raspberry Pi ZERO用ユニバーサル基板に

取り付ける前に動作確認を兼ねてブレッドボード上にジャンパー線を

用いて作成しました。

Raspberry Pi ZEROはSSH接続が可能な状態にして

IPアドレスを固定してTeraTeamでポチポチやっていきます!

このようにRaspberry Pi ZERO と BP35A7Aをシリアル通信

できるように配線します!

ブレッドボード上に回路が出来上がりました

ls /dev/tty*

と入力して出てきた中に

/dev/ttyAMA0
と
/dev/ttyS0

があったのでPythonを使用して

import serial

print("通信開始")
s = serial.Serial('/dev/ttyAMA0', 115200)
s.write(str.encode("SKVER\r\n"))
print(s.readline().decode(encoding='utf-8'), end="")
print(s.readline().decode(encoding='utf-8'), end="")
print(s.readline().decode(encoding='utf-8'), end="")

どちらかにBP35A1のバージョンを聞くコマンドを送ってみたところ

pi@raspberrypi:~/hems $ sudo python3 version.py
通信開始
SKVER
EVER 1.2.10
OK

しっかりとバージョンが返ってきました!

https://rabbit-note.com/wp-content/uploads/2016/12/50f67559796399098e50cba8fdbe6d0a.pdf

ROHM社のBP35A1 コマンドリファレンスマニュアルを見ると

送信するコマンドがわかります。

スポンサーリンク

瞬間電力量を引っこ抜いた

インターネットで情報を調べていくとこのサイトにたどり着きました

@rukihenaさんのQiitaに記載されていた

スマートメーターの情報を最安ハードウェアで引っこ抜くです。

https://qiita.com/rukihena/items/82266ed3a43e4b652adb

@rukihenaさんのQiita

こちらのサンプルプログラムをお借りしたところ

瞬時電力計測値:264[W]

約三秒おきに瞬間電力計測値が送られてきました。

これには感動しました。

スポンサーリンク

見やすくした

SSD1306の追加

SSD1306を接続して見やすくしたいと思いました

そこで先ほどのBP35A1とは別にI2C接続でSSD1306を付けました

のすけ
のすけ

おれめちゃくちゃSSD1306好きなんだ

このような感じになりました。

タクトスイッチはいろいろな機能選択で使用するためにつけました。

Python2→Python3

私がSSD1306表示用に作成していたプログラムがPython3用だったので

先ほどのサイトのサンプルプログラムを

Python2.7→Python3.Xの形にしてあげる必要がありましたので

一行一行見ながら変換していきました。

2to3と言う自動変換してくれる便利な物もあるみたいですが

プログラムを理解したかったので手作業で行いました。

(1からコードを作成していないのでコードを乗っけるのは控えます)

表示プログラムの追加

SSD1306に文字表示させるプログラムを追加しました。

取得した瞬間電力使用量に加え

私の契約している電気会社のLoop電気が26.4円(税込) / kWhの料金設定だったので

その瞬間電力量を1時間・1日・1カ月使用した場合の電気料金を表示しました

計算方法は瞬間電力量[W]をnow_wとして

一時間 = round((now_w * 26.4) / 1000, 1)
一日 = round((now_w * 26.4) * 24 / 1000, 1)
一か月 = ((now_w * 26.4) * 24 / 1000) * 31

で計算と出力をしました(この計算方法であっているのか不明)

このように約3秒毎に電力使用量と先ほど計算した値を表示させることによって

今どれだけ使用しているか簡単にわかるようになりました。

スポンサーリンク

基板に移植

色々な機能を追加してもっと便利にもっとわかりやすく

家の電力使用量や電気料金を知りたいとおもい

ブレッドボードのまま使用するのはなんか嫌でしたので

基板に移し替えることにしました。

基盤が小さく配置がとても大変でした。

これが作っているときのタイムラプスです!

そして完成したのがこちらです!半田面は汚いです・・・

途中GNDがSSD1306につながってなくて動かなかったりなど

ありましたが、ブレッドボードと同じようにしっかり動作してくれたので

とても嬉しかったです!!

スポンサーリンク

機能の追加

積算電力量を取得する

https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/Release/Release_H_jp/Appendix_H.pdf

こちらのECHONET機器オブジェクト詳細規定内

3.3.25 低圧スマート電力量メータクラス規定を見ると

スマートメーターと通信して瞬間電力量のほかに

動作状況・積算電力使用量・積算電力使用量履歴・電力使用量・電流量

などのデータを取得することが可能みたいです。

サンプルプログラムではスマートメーターと接続完了後

瞬時電力計測値 0xE7を取得していましたが

私は試しに定時積算電力使用量0xEAの要求をしてみました。

そして返ってきた値がこちら。

07E4050813000000001E6F

積算電力量単位0xE1の要求には

01
のすけ
のすけ

????????????

となったのですがECHONET 機器オブジェクト詳細規定

しっかり理解すると謎が解けました。

のすけ
のすけ

ふむふむ

とりあえず紙に詳細規定見ながら変換してみたところ

今日の日付(5/8)と積算電力値(779.1kWh)が入っていました。

外のスマートメーターを見てみると同じ値が書いてありました!!

これはテンションマックスです!!

この定時積算電力使用量は00分と30分に更新されるみたいです。

Pythonのコードに分割や結合を繰り返して以下の表示が

できる様にしました!

最新積算電力量は2020/06/23 23:30 944.1kWh

電源を入れれば使用できるようにした

すごい適当なやり方ですが、何か例外が発生したときに

Pythonプログラムが止まらないように無限ループでの中にtry文を追加

その中にプログラムの記述をコピーしました。

これで何か例外が発生してもプログラムにリセットがかかります。

そしてスマートメーターに要求を送ってもデータが返ってこないことがあるので

3回連続でデータが来なかった場合わざと例外を発生し再接続するようにしました。

この時、スマートメーターのスキャンはせずに前回使用した値を使って

接続することによって、接続までの時間を短縮しました!

systemctl start hems.service

で起動や停止、電源投入時自動起動ができる様にしました。

 

たまにフリーズしているときがあるのでまだまだデバックが必要みたいです。

MQTTで値を各機器から読めるようにした

Raspberry Pi の中にMQTTサーバーを構築し

Pythonのプログラムの中に瞬間電力使用量のデータが来た時に

サーバーにpublishするようにしました。

 

そしてWindws用にHEMSシステムをマネして

C#でデータを表示するアプリケーションを作成しました。

電気代は積算電力使用量をもとにパソコン上で計算しています。

グラフは動きが変なのでいったん削除しました。

のすけ
のすけ

それっぽいでしょ?

パ〇ソニックとか出してそうでしょ??

MySQLデータベースを構築した

Raspberry Pi ZERO はスペックが高いわけではないので

どこまで頑張ってくれるかわかりませんがMQTTサーバーに加え

MySQLサーバーも構築しました。

そしてデータが来た時に積算電力使用量だけInsertするようにしました。

もちろん同じデータは入らないようにしています。

SELECT DISTINCT CAST(datetime AS DATE) AS 日付 FROM allenergy;
+------------+
| 日付 |
+------------+
| 2020-05-13 |
~~~~~~~~
| 2020-06-24 |
+------------+
43 rows in set (0.057 sec)

43日間欠かさず30分毎の積算電力使用量を記録してくれていますね!

SELECT * FROM allenergy;
+---------------------+--------+
| datetime | energy |
+---------------------+--------+
| 2020-05-13 17:00:00 | 796.3 |
| 2020-05-13 18:00:00 | 796.5 |
~~~~~~~~~~~~~~~~~
| 2020-06-23 00:00:00 | 940.3 |
| 2020-06-23 00:30:00 | 940.3 |
| 2020-06-23 01:00:00 | 940.4 |
~~~~~~~~~~~~~~~~~
| 2020-06-23 22:30:00 | 943.9 |
| 2020-06-23 23:30:00 | 944.1 |
+---------------------+--------+
1836 rows in set (0.053 sec)

こんな感じでデータベースに記録し続けています。

データベースはSQL文をマスターするだけでこのデータから

日付のみを取り出す・一つ前の値を今の値から引いて表に出力などを

素早くできるのでデータがいっぱいあるととても面白いです!

スポンサーリンク

今後何がしたいか

Webブラウザからデータの取得

MySQLデータベースの値をWebブラウザ上からみれるようにしたいです、

例えば日付を選択するとその日の電気料金と使用量グラフが表示されたりです。

PHPで作成できるとは思うのですがあまり時間がなく1か月ほど経ってしまいました。

データ分析

エアコンを使うとき・使わないとき

洗濯機を使うとき・使わないとき

冷蔵庫の開け閉めをなるべく早くするか・気にしないか

などいろいろな条件を変えて生活し蓄積したデータベース内のデータから

分析を行い一人暮らしの電気代節約術などを検証出来たらと考えています。

のすけ
のすけ

ま、大学のレポートに追われてて

今それどころじゃないんだけど(´;ω;`)

またブログで分析結果を紹介するね!

のすけ
のすけ

最後までブログ見ていただきありがとうございます!

ブログランキングポチポチしていただけると

うれしいです!

コメント

タイトルとURLをコピーしました