はじめに
普段どのぐらい電力を使用しているのだろう?
と思ったので今回は電力スマートメータと通信してデータを取得してみたいと思います。
電子工作記録として、残しておきます。記述内容にミスがありましたら、コメント欄で教えて下さい。
買ってきたもの
こちらの写真が主に使用したものです。記載の購入価格は2020年4月末のものです。すべて合わせて1万2000円ぐらいでした。
Raspberry Pi Zero WH
秋月電子で2,200円でした。
Raspberry Pi ZERO用ユニバーサル基板
秋月電子で100円でした。
ピンソケットメス40P
秋月電子で80円でした、意外と高いですね。
I2C接続 SSD1306
aliexpressで中国から輸入しました。送料を入れて226円でした。
Wi-SUN モジュール BP35A1
ROHM Wi-SUN通信モジュール BP35A1です。一番重要な部品です。chip1stop.comで購入しました。7,490円でした。
アダプターボード BP35A7A
アダプターボード BP35A7Aです。BP35A1と接続して使用します。chip1stop.comで購入しました。1,190円でした。
BP35A7-accessories
BP35A1とBP35A7Aの固定用のスペーサーとねじです。chip1stop.comで購入しました。190円でした。
その他
抵抗、タクトスイッチ、SDカード、USBなどは家に転がっているものを使用しました。
Bルート申込
スマートメータと通信するには電力情報発信サービス(Bルート)の申込が必要になります。申し込みは無料です。申込の際は、検針票や電力自由化のマイページに記載の供給地点特定番号が必要です。
パスワードはメール、IDは郵送で送られてきます。IDは到着まで時間がかかりました。
制作
ピンヘッダの取り付け
BP35A7Aにピンヘッダを取り付けました。実際使用するのは(VCC・GND・RX・TX)ピンだけです。
BP35A1とBP35A7Aの合体
BP35A7-accessoriesのスペーサーとねじを使用して取り付けました。
ブレッドボードを使用した動作確認
Raspberry Pi ZERO用ユニバーサル基板に取り付ける前に動作確認を兼ねてブレットボード上で作成します。Raspberry Pi ZEROはSSH接続が可能な状態までセットアップしておきます。
写真のようにRaspberry Pi ZERO と BP35A7Aを接続しました。
ブレッドボード上に回路が出来上がりました。
ls /dev/tty*
と入力して出てきた中に
/dev/ttyAMA0 /dev/ttyS0
がありました。
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="")
Pythonを使用してBP35A1のバージョンを聞くコマンドを送ってみました。
pi@raspberrypi:~/hems $ sudo python3 version.py 通信開始 SKVER EVER 1.2.10 OK
BP35A1からバージョン情報が送られてきます。バージョンが表示されていれば、Raspberry Pi と BP35A1はシリアル通信できています。
https://rabbit-note.com/wp-content/uploads/2016/12/50f67559796399098e50cba8fdbe6d0a.pdf
各種コマンドはROHM社のBP35A1 コマンドリファレンスマニュアルを見てください。
瞬間電力量を引っこ抜いた
@rukihenaさんのQiitaに記載されていた。
「スマートメーターの情報を最安ハードウェアで引っこ抜く」のソースコードをお借りします。
@rukihenaさんのQiitaスマートメーターの情報を最安ハードウェアで引っこ抜く - Qiitaはじめに電力自由化にともない、スマートメーターの設置が進められています。電力会社が設置したスマートメーターと、各社から販売されているHEMS見える化端末的なモノを導入すると消費電力などをリアルタ…
瞬時電力計測値:264[W]
約三秒おきに瞬間電力計測値が送られてきました。これには感動しました。
後日、プログラムを作成し直します。
OLEDに瞬間電力計測値を表示
OLEDであるSSD1306を接続します。
I2C接続で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秒毎に電力使用量と先ほど計算した値を表示させる事ができました!
基板に移植
ブレッドボードで動作確認できたので、基板に移し替えることにしました。
小さなRaspberry Pi Zero 用の基盤に移植するので配置や配線に頭を使います。
これが作っているときのタイムラプスです!
そして完成したのがこちらです!半田面は汚いです・・・
30分間の積算電力量を取得する
スマートメーターから積算電力量を取得します。積算電力量は30分毎に更新されます。
ECHONET機器オブジェクト詳細規定の低圧スマート電力量メータクラス規定を見ると動作状況・積算電力使用量・積算電力使用量履歴・電力使用量・電流量などのデータを取得する事ができます。
サンプルプログラムではスマートメーターと接続完了後、瞬時電力計測値 0xE7を取得していましたが定時積算電力使用量0xEAを取得してみました。
返ってきた値がこちら。
0xE7 → 07E4050813000000001E6F
積算電力量単位0xE1の要求には
0xE1 → 01
ここでECHONET 機器オブジェクト詳細規定を見てみます。
詳細規定見ながら変換します。
今日の日付(5/8)と積算電力値(779.1kWh)が入っていました。
外のスマートメーターを見てみると同じ値が表示されていました。
最新積算電力量は2020/06/23 23:30 944.1kWh
Pythonで変換して表示できる様にしました。
MQTTで値を別の機器から読めるようにした
Raspberry Pi の中にMQTTサーバーを構築し、瞬間電力使用量をブローカサーバーにpublishしました。
余っていたWindowsタブレットにHEMSシステムを真似したアプリケーションを作成しました。
電気代は積算電力使用量をもとにパソコン上で計算しています。グラフはバグが含まれていたので一旦、削除しました。
MySQLデータベースを構築した
MySQLサーバーを構築し、積算電力量を格納できる様にしました。
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)
今後何がしたいか
リファクタリング
現在はサンプルプログラムを元に機能追加をしました。リファレンスを見ながら1からプログラムを記述したいと思います。作成後、プログラムはgithubに投稿します。
データの可視化
瞬間電力量や積算電力量をWebブラウザ上で閲覧できる様にします。
データ分析
蓄積した積算電力量を使用して、電気代節約につながる情報を取得できたら良いです。
最後までブログ見ていただきありがとうございます!
コメント