どうも、CHASUKEです。
Nature Remo Eの電力APIが公開されたので、Pythonでデータ取得・活用してみました。
▼Nature Remo Eとは。
-
リアルタイムに電気使用量が見える『Nature Remo E』の使い方・レビュー!!
Nature Remo Eは、家庭にあるスマートメーターと連携し、アプリ上で電気使用量をリアルタイムに確認できるスマート機器です。
ラインナップとして、太陽光、蓄電池、スマートメーター等のエネマネ機器と連携できる本格的な「Nature Remo E」と、スマートメーターとの連携のみに対応した「Nature Remo E lite」があります。
- Nature Remo E:32,780円
- Nature Remo E lite:14,800円
どちらのモデルでも、電力APIを使って、スマートメーターから情報を取得できます。
ということで本記事では、ラズパイを使った「電力APIの使い方・活用」について書いてみます。
Nature Remo Eを持っている前提にはなってしまうが、自宅の電気使用量と身近なネタなので、わかりやすく面白いです。
電力APIでスマートメーター情報を取得する方法【CURLコマンド】
手始めにcurlコマンドを実行し、スマートメーターから電力情報を取得してみます。
前提として、Nature Remo E(Liteモデル)をRemoアプリに登録し、スマートメーターに登録しておきます。
▼下記の情報が参考になります。
Remoのアクセストークンを発行したら、ラズベリーパイのターミナルから下記を実行します。
curl -X GET "https://api.nature.global/1/appliances" -H "Authorization: Bearer [アクセストークン]" > memo.json
実行したディレクトリ配下に「memo.json」が出力されます。これがNature Remoに登録している家電一覧になります。この中の一部にスマートメーターの情報があります。
▼Json整形して表示するとこんな感じ。
"smart_meter": { "echonetlite_properties": [ { "name": "coefficient", "epc": 211, "val": "1", "updated_at": "2020-05-02T20:28:03Z" }, { "name": "cumulative_electric_energy_effective_digits", "epc": 215, "val": "6", "updated_at": "2020-05-02T20:28:03Z" }, { "name": "normal_direction_cumulative_electric_energy", "epc": 224, "val": "112381", "updated_at": "2020-05-02T20:28:03Z" }, { "name": "cumulative_electric_energy_unit", "epc": 225, "val": "1", "updated_at": "2020-05-02T20:28:03Z" }, { "name": "reverse_direction_cumulative_electric_energy", "epc": 227, "val": "23", "updated_at": "2020-05-02T20:28:03Z" }, { "name": "measured_instantaneous", "epc": 231, "val": "308", "updated_at": "2020-05-02T20:28:03Z" } ] }

上のように「smart_meter」というキー配下に、スマートメーターの電力データが格納されてます。上から順番に全部で6種類あります。
- 係数
- 積算電力量有効桁数
- 積算電力量計測値(正方向)
- 積算電力量単位
- 積算電力量計測値(逆方向)
- 瞬時電力計測値
補足すると、「⑥瞬時電力計測値」がリアルタイムの電力使用量(W)を表します。僕の家の場合、「308w」ですね。

ちなみに、時間帯ごとの電力使用量の積算値は「③積算電力量計測値(正方向)」から、以下の計算式で求められます。
計算方法
「(⑥積算電力量計測値(正方向)の増加量 × ①係数) × 0.1(②積算電力量単位)」
例えば、過去1時間分の電気使用量が知りたければ、1時間前との増加量で計算します。また、「積算電力量単位」はスマートメーターの種類によって違うので、正確には下記マニュアルを参照ください。
【概要】電力APIでやってみた内容
ここから取得した電力値を活用していきます。
やってみたのはこんな感じ。
- 電気使用量のグラフ化
- 電気使用量アラート
電気使用量のグラフ化
1分ごとに取得した瞬時電力計測値を、IoTデータ可視化ツール「Ambient」でグラフ化しました。
▼無料で使えて、こんなグラフで可視化できます。
グラフを見て、ピョンと伸びてるところが消費電力が大きい家電を使ったタイミングですね。
「8時」「12時」「17時」にご飯のために電子レンジ使ったとか、「20時」にドライヤー使ったとか推測できます。

電気使用量アラート
グラフ化のついでに、瞬時電力計測値が既定値を超えてたらLINE通知をもらう仕組みも。
IFTTT連携して簡単にできます。
こちらも何か使えればなと。同じような仕組みで応用できそう。
【作り方】電力APIでグラフ化・アラート
1から10までは書けないので、不明なところがあれば、お問い合わせくださればと。
いつも通りですが、手軽にスクリプトが書けるので、ラズパイにインストールされているPython3を使ってます。
pi@raspberrypi:~ $ python3 -V Python 3.5.3
バージョンは「3.5.3」のようです。
▼下記3ステップで実装します。
- Ambient送信用グラフ生成
- Ambient取得・送信機能実装
- アラート機能実装
Ambientでデータ送信用グラフを生成
グラフ作成とか難しそうですが、IoTデータ可視化ツール「Ambient」なら、無料で簡単です。利用制約もあるので、ご注意ください。
Ambientの制約
- 8チャネル/ユーザーまで作成できる
- 1日3000データまで登録できる
- データ送信間隔は5秒以上あける
▼サイトにログインして、チャネルを作成します。
ここにある「チャネルID」と「ライトキー」が後で必要なので、メモしておきましょう。
▼チャネルを開くと、当然何もないので、「チャネル」と「グラフ」の設定をしていきます。
▼チャネル設定はこんな感じ。
▼グラフ設定はこんな感じ。
これでAmbient側の設定は完了です。このチャネルに向けて電力データを送ります!
Pythonスクリプトで電力値の取得・送信を実装
こんな感じで書いてみました。
remo_1minut.py(その1)
import requests import datetime import ambient REMOAPI="[Nature API アクセストークン]" AMBIENTCHANNELID="[Ambient チャネルID]" WRITEKEY="[Ambient ライトキーID]" # スマートメーター情報取得 def power_get(): url = 'https://api.nature.global/1/appliances' headers = {'Authorization': 'Bearer ' + REMOAPI, 'accept':'application/json'} appliances = requests.get(url, headers=headers).json() # 電力情報を取得 list = appliances[3]['smart_meter']['echonetlite_properties'] dict={} for item in list: key=item['name'] dict[key]=item['val'] power = int(dict['measured_instantaneous']) print('Power_Now:' + str(power)) return str(power) # ここからスタート if __name__ == '__main__': print('Start') # 電力値取得 power = power_get() # Ambientに送信 am = ambient.Ambient(AMBIENTCHANNELID, WRITEKEY) r = am.send({'created': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'd1': power}) print('End')
▼少し補足すると、以下の通り。
27行目:処理スタート
32行目:電力値取得の呼び出し
13行目:Remo APIをコール
16行目:Remo登録数に応じて変更
36行目:Ambientにデータ送信
15,16,17行目の個別情報を追記すれば、下記コマンドで実行できます。僕のラズパイ環境だと実行コマンドは、こんな感じ。
python3 /home/pi/Desktop/remo_1minut.py
▼実行後、Ambientの作成したグラフを見ると、データが反映されてるはずです。丸の中です。
メモ
この時、グラフ種類を「折れ線」にしてたので、点が1つだけ出てきた。
あとは、このスクリプトを1分毎に実行してやれば、グラフが作れます。簡単ですね。
1分単位のスクリプト実行は、crontabを使って繰り返し実行しました。
▼コマンドで編集します。
pi@raspberrypi:~ $ crontab -e
▼設定内容はこんな感じ。
*/1 * * * * python3 /home/pi/Desktop/remo_1minut.py > /home/pi/Desktop/output.log 2>&1
これで、1分間隔で実行されます。
上の例では、コンソール出力をoutput.logに出してます。これがあると、解析する際に役立ちます。
▼あとは1日も経てば、こんな感じ。
アラート機能を盛り込む
最後に電力使用量の閾値を指定して、アラート機能を盛り込みます。アラートは、LINEに通知される仕組みにします。
▼IFTTT側では、「Webhook→LINE」という連携を作りますが、やり方は下記の記事が参考になります。同じことやってます。
-
Pythonを使って『IFTTT(Webhook)』を呼び出す方法
▼Ambient送信するスクリプトに、アラート機能を追加して、こんなになった。
remo_1minut.py(その2)
import requests import datetime import ambient REMOAPI="[Nature API アクセストークン]" AMBIENTCHANNELID="[Ambient チャネルID]" WRITEKEY="[Ambient ライトキーID]" IFTTTKEY="[IFTTTキー]" WEBHOOKKEY="[IFTTTのWebhookキー]" LIMIT=[閾値のワット数] # スマートメーター情報取得 def power_get(): url = 'https://api.nature.global/1/appliances' headers = {'Authorization': 'Bearer ' + REMOAPI, 'accept':'application/json'} appliances = requests.get(url, headers=headers).json() # 電力情報を取得 list = appliances[3]['smart_meter']['echonetlite_properties'] dict={} for item in list: key=item['name'] dict[key]=item['val'] power = int(dict['measured_instantaneous']) print('Power_Now:' + str(power)) return str(power) # IFTTT_Webhook def ifttt_webhook(power): if(int(power) > LIMIT): payload = {"value1": power, "value2": "", "value3": "" } url = "https://maker.ifttt.com/trigger/" + WEBHOOKKEY + "/with/key/" + IFTTTKEY response = requests.post(url, data=payload) # ここからスタート if __name__ == '__main__': print('Start') # 電力値取得 power = power_get() # Ambientに送信 am = ambient.Ambient(AMBIENTCHANNELID, WRITEKEY) r = am.send({'created': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'd1': power}) # 異常値ならLINE通知 ifttt_webhook(power) print('End')
▼補足として、下記の通り。
8行目:IFTTTキーや閾値を追加
61行目:電力値をIFTTT判定へ
31行目:閾値と比較
36行目:閾値超過ならIFTTT発火
とりあえず、1000wを閾値にしてみたら、洗濯機と電子レンジ使うとオーバー。カップラーメン用のケトルもアウトでしたー。

電力データの見える化は楽しい(さまざまな活用方法)
Remo APIを使って、自宅の電気使用量が簡単に取得できました。
やはり、自宅の電気状況と直結するので面白いですね。他にもいろいろな用途がありそうです。
電力会社のデータと比較
僕が住む愛知県では、中部電力ミライズ『カテエネ』に申し込めば、前日以前の電気使用量が時間帯別にチェックできます。
▼こんな具合に。
▼積算電力量計測値(正方向)を使って、同じグラフが作れそうだったので、試してみたら、、
メモ
1時間前の積算電力量計測値(正方向)を覚えておいて、1時間ごとに差分を求めて、Ambientに送信してるだけです。

Siriショートカット
Remo EのAPIで、今の電力値が取れるようになった⚡️ pic.twitter.com/ZlOlEUJIB7
— CHASUKE@ガジェットブログ (@chasuke__) May 1, 2020
SiriショートカットからAPI呼んで、データを扱えるので、何かに使えるかも。
スマートガジェットとの連携
なんとNature Remoの電力量APIで瞬間電力計測値も取得できるようになったので、電力量推移と合わせて表示するようにしました! pic.twitter.com/n2t3HkyExD
— つ (@2ndknj) May 1, 2020
@2ndknjさんがツイートされていた、LaMetric Timeアプリも面白い。こちらもラズパイで処理してデータ送信してるみたいです。
スマートデバイスとの連携も面白い。僕もLaMetricつ買ってるので、これは真似したい。
-
ドット表示がお洒落で可愛い。スマート置き時計『LaMetric Time』レビュー!
最後に
Remo APIを使って、スマートメーターの情報を取得する方法を紹介しました。
ラズパイがあれば、簡単に抽出して活用できます。身近なデータが使える面白さもあります。
▼今回使った「Remo E Lite」はこちら
▼今回使ったラズパイ4はこちら
以上、それではまた。