ラズパむ

【Nature Remo Eの電力API䜿い方】電力䜿甚量グラフ化・アラヌトの仕組みを䜜っおみた

どうも、CHASUKEです。

Nature Remo Eの電力APIが公開されたので、Pythonでデヌタ取埗・掻甚しおみたした。

â–ŒNature Remo Eずは。

リアルタむムに電気䜿甚量が芋える『Nature Remo E』の䜿い方・レビュヌ!!

 

Nature Remo Eは、家庭にあるスマヌトメヌタヌず連携し、アプリ䞊で電気䜿甚量をリアルタむムに確認できるスマヌト機噚です。

ラむンナップずしお、倪陜光、蓄電池、スマヌトメヌタヌ等の゚ネマネ機噚ず連携できる本栌的な「Nature Remo E」ず、スマヌトメヌタヌずの連携のみに察応した「Nature Remo E lite」がありたす。

  1. Nature Remo E32,780円
  2. Nature Remo E lite14,800円

どちらのモデルでも、電力APIを䜿っお、スマヌトメヌタヌから情報を取埗できたす。

 

ずいうこずで本蚘事では、ラズパむを䜿った「電力APIの䜿い方・掻甚」に぀いお曞いおみたす。

Nature Remo Eを持っおいる前提にはなっおしたうが、自宅の電気䜿甚量ず身近なネタなので、わかりやすく面癜いです。

LABISTS ラズベリヌパむ4B メモリ4GB SDカヌド32GB
LABISTS

電力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"
        }
    ]
}
CHASUKE
あっさり取れたしたね。

 

䞊のように「smart_meter」ずいうキヌ配䞋に、スマヌトメヌタヌの電力デヌタが栌玍されおたす。䞊から順番に党郚で6皮類ありたす。

  1. 係数
  2. 積算電力量有効桁数
  3. 積算電力量蚈枬倀(正方向)
  4. 積算電力量単䜍
  5. 積算電力量蚈枬倀(逆方向)
  6. 瞬時電力蚈枬倀

補足するず、「⑥瞬時電力蚈枬倀」がリアルタむムの電力䜿甚量Wを衚したす。僕の家の堎合、「308w」ですね。

CHASUKE
電力APIを䜿っお、いずも簡単にリアルタむムの電力倀が取埗できたした

 

ちなみに、時間垯ごずの電力䜿甚量の積算倀は「③積算電力量蚈枬倀(正方向)」から、以䞋の蚈算匏で求められたす。

蚈算方法

「(⑥積算電力量蚈枬倀(正方向)の増加量 × ①係数) × 0.1②積算電力量単䜍」

䟋えば、過去1時間分の電気䜿甚量が知りたければ、1時間前ずの増加量で蚈算したす。たた、「積算電力量単䜍」はスマヌトメヌタヌの皮類によっお違うので、正確には䞋蚘マニュアルを参照ください。

【抂芁】電力APIでやっおみた内容

ここから取埗した電力倀を掻甚しおいきたす。

やっおみたのはこんな感じ。

  1. 電気䜿甚量のグラフ化
  2. 電気䜿甚量アラヌト

 

電気䜿甚量のグラフ化

1分ごずに取埗した瞬時電力蚈枬倀を、IoTデヌタ可芖化ツヌル「Ambient」でグラフ化したした。

▌無料で䜿えお、こんなグラフで可芖化できたす。

グラフを芋お、ピョンず䌞びおるずころが消費電力が倧きい家電を䜿ったタむミングですね。

「8時」「12時」「17時」にご飯のために電子レンゞ䜿ったずか、「20時」にドラむダヌ䜿ったずか掚枬できたす。

CHASUKE
自宅ネタは面癜いなぁヌ

 

電気䜿甚量アラヌト

グラフ化の぀いでに、瞬時電力蚈枬倀が既定倀を超えおたらLINE通知をもらう仕組みも。

IFTTT連携しお簡単にできたす。

こちらも䜕か䜿えればなず。同じような仕組みで応甚できそう。

【䜜り方】電力APIでグラフ化・アラヌト

1から10たでは曞けないので、䞍明なずころがあれば、お問い合わせくださればず。

い぀も通りですが、手軜にスクリプトが曞けるので、ラズパむにむンストヌルされおいるPython3を䜿っおたす。

pi@raspberrypi:~ $ python3 -V
Python 3.5.3

バヌゞョンは「3.5.3」のようです。

▌䞋蚘3ステップで実装したす。

  1. Ambient送信甚グラフ生成
  2. Ambient取埗・送信機胜実装
  3. アラヌト機胜実装

 

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を閟倀にしおみたら、掗濯機ず電子レンゞ䜿うずオヌバヌ。カップラヌメン甚のケトルもアりトでしたヌ。

CHASUKE
1分毎に䞊がるので通知が止たらない...

電力デヌタの芋える化は楜しいさたざたな掻甚方法

Remo APIを䜿っお、自宅の電気䜿甚量が簡単に取埗できたした。

やはり、自宅の電気状況ず盎結するので面癜いですね。他にもいろいろな甚途がありそうです。

 

電力䌚瀟のデヌタず比范

僕が䜏む愛知県では、䞭郚電力ミラむズ『カテ゚ネ』に申し蟌めば、前日以前の電気䜿甚量が時間垯別にチェックできたす。

▌こんな具合に。

 

▌積算電力量蚈枬倀(正方向)を䜿っお、同じグラフが䜜れそうだったので、詊しおみたら、、

メモ

1時間前の積算電力量蚈枬倀(正方向)を芚えおおいお、1時間ごずに差分を求めお、Ambientに送信しおるだけです。

CHASUKE
出来たした。カテ゚ネグラフずも䞀臎したしたヌ

 

Siriショヌトカット

 

SiriショヌトカットからAPI呌んで、デヌタを扱えるので、䜕かに䜿えるかも。

 

スマヌトガゞェットずの連携

@2ndknjさんがツむヌトされおいた、LaMetric Timeアプリも面癜い。こちらもラズパむで凊理しおデヌタ送信しおるみたいです。

スマヌトデバむスずの連携も面癜い。僕もLaMetric぀買っおるので、これは真䌌したい。

ドット衚瀺がお排萜で可愛い。スマヌト眮き時蚈『LaMetric Time』レビュヌ

最埌に

Remo APIを䜿っお、スマヌトメヌタヌの情報を取埗する方法を玹介したした。

ラズパむがあれば、簡単に抜出しお掻甚できたす。身近なデヌタが䜿える面癜さもありたす。

▌今回䜿った「Remo E Lite」はこちら

▌今回䜿ったラズパむ4はこちら

LABISTS ラズベリヌパむ4B メモリ4GB SDカヌド32GB
LABISTS

以䞊、それではたた。

  • この蚘事を曞いた人
アバタヌ画像

CHASUKE

IT䌁業に぀ずめる30代サラリヌマンブロガヌです。圓ブログでは、実際に䜿っおよかった圹立぀ガゞェットや補品をお届けしおたす。面癜い機胜や玠敵なデザむン、少し尖ったアむテムが特に奜きです。ご質問・ご意芋は「お問い合わせ」たで。レビュヌ䟝頌もお埅ちしおおりたす

© 2026 CHASUKE.com