6月 21, 2022

Nature Remo Eを使った電力使用状況の取得

自家消費している電力や売電状況を確認する方法はいくつかあるが、Nature Remo Eを使用して手っ取り早く情報を取得する。
Nature Remo Eは、電気スマートメータとWi-SUNで通信して、電力使用状況を取得してくれる便利な機器で、関連するAPIも提供されている

Nature remoのAPI概要

APIについてはこちらに詳細が記載されている。
データの取得方法はシンプルで、HTTPSを使用して規定アドレスにアクセストークンと一緒に要求を送信すれば、要望したデータが返信されてくる。
 ↑作動状態などのデータを取得する場合は、https://api.nature.global/1/appliancesのアドレスにGET要求を出せば取得できる。
アクセストークンの取得は、ここから新規取得などが行える。 

情報を取得するためのpythonプログラム

プログラムは、要求するGET要求のHeadersなどの設定を行い、返信されてきたデータの解読を行うだけのシンプルなものです。
import requests
import datetime

REMO-TOKEN="取得したアクセストークン"

def power_get():
    # GET要求の設定&送信
    url = 'https://api.nature.global/1/appliances'
    headers = {'Authorization': 'Bearer ' + REMO-TOKEN, 'accept':'application/json'}
    appliances = requests.get(url, headers=headers).json()

    Value = {}
    for appliance in appliances:
        # remo-eの情報取得
        if appliance['type'] == 'EL_SMART_METER':
            for meterValue in appliance['smart_meter']['echonetlite_properties']:
                if meterValue['name'] == 'normal_direction_cumulative_electric_energy':
                    # 積算電力(正方向)=買電
                    Value['Nor_CumulativeEnergy'] = float(meterValue['val'])/100
                elif meterValue['name'] == 'reverse_direction_cumulative_electric_energy':
                    # 積算電力(逆方向)=売電
                    Value['Rev_CumulativeEnergy'] = float(meterValue['val'])/100
                elif meterValue['name'] == 'measured_instantaneous':
                    # 瞬間電力
                    Value['Watt'] = int(meterValue['val'])
    #受信データがない場合の処理
    if len(Value) == 0:
        Value = None
    return Value


if __name__ == '__main__':

    print('Start')
    power = power_get()
    print(power)
    print('End')

実行結果

Nature Remo Eから取得できるデータの読み方はこちらに詳細が記載されている。
上記プログラムで取得しているのは、下記の3つ。
 ・積算電力量計測値(正方向) = 'Nor_CumulativeEnergy'
 ・積算電力量計測値(逆方向) = 'Rev_CumulativeEnergy'
 ・瞬時電力計測値 = 'Watt'
正方向は買電、逆方向は売電の電力量を表している。
同様に瞬時電力計測値が+の場合は買電、-の場合は売電を表している。
Start
{'Nor_CumulativeEnergy': 610.91, 'Rev_CumulativeEnergy': 774.98, 'Watt': -5}
End

0 comments:

コメントを投稿