Nature Remo E liteを使って電力データを取得する

Nature Remo E liteを使って電力データを取得する
公開日時

電力消費量のモニタリングができるNature Remo E liteが外出自粛キャンペーンをやっていたので購入。

これまでにもサンワサプライ ワットモニターを使って消費電力のモニタリングをやっていたが、ワットモニターの場合は一つのコンセントのデータしか見れないのと、デバイスの表示を目視で確認するしかなかったのであまり活用できていなかった。

電力データを取得するには電力メーター情報発信サービス(Bルートサービス)への申込みが必要だったので購入と合わせて申し込み。

5月3日に申し込んで、5月14日に認証IDが郵送、パスワードがメールで送られてきた。

空いているコンセントにRemo E liteを差し込んで、スマホアプリで接続して、認証コードとパスワードを入力。

最初エラーになったけど、何度か試したら無事に認証ができた。

Nature Remoの場合は、APIが用意されており、アクセストークンを発行すれば↓のcurlを実行すればスマートメータの電力値を取得できる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer {Token]"

これをCloudWatchでグラフ化したかったので、BME280センサ情報をAWS IoTで管理してChatbotでSlackに通知するのと同様にしてAWS IoT経由でCloudWatchに送信するようにした。

公式サイトの記事を参考にpythonでデータ取得ができるように対応。

とりあえず、積算電力量計測値(正方向)、瞬時電力計測値のみ取得するようにした。

#-*- coding: utf-8 -*-
import json
import os
import urllib.request

class SmartMeter:
  def create_request(self):
    req = urllib.request.Request('https://api.nature.global/1/appliances')
    req.add_header('Authorization', 'Bearer %s' % os.environ['NATURE_REMO_TOKEN'])
    req.add_header('Content-Type', 'application/json')
    return req

  def get_power(self):
    req = self.create_request()
    with urllib.request.urlopen(req) as res:
      str_response = res.read().decode('utf-8')
      json_load = json.loads(str_response)

      coefficient = 0
      normal_direction_cumulative_el = 0
      reverse_direction_cumulative_el = 0
      measured_instantaneous = 0
      energy_unit = 0
      updated_at = ""

      for data in json_load:
        if data['type'] == "EL_SMART_METER":
          for echonet_prop in data['smart_meter']['echonetlite_properties']:
            if echonet_prop['epc'] == 211:
              coefficient = int(echonet_prop['val'])
            if echonet_prop['epc'] == 224:
              normal_direction_cumulative_el = int(echonet_prop['val'])
            if echonet_prop['epc'] == 227:
              reverse_direction_cumulative_el = int(echonet_prop['val'])
            if echonet_prop['epc'] == 231:
              measured_instantaneous = int(echonet_prop['val'])
            if echonet_prop['epc'] == 225:
              energy_unit = int(echonet_prop['val'])
            updated_at = echonet_prop['updated_at']

      kwh = normal_direction_cumulative_el * coefficient / 10**(energy_unit)

      return {
        'updated_at': updated_at,
        'measured_instantaneous': measured_instantaneous,
        'kwh': kwh,
      }

if __name__ == '__main__':
    meter = SmartMeter()
    power = meter.get_power()
    print(power)

普段は400Wくらいになっているが、ホットクックを動かすと1,200Wくらいまで跳ね上がる。

家にいる時間が増えているので、Remo E liteで電力を見える化して節電につなげていこう。

参考


Related #iot

Echo Dot 2台をステレオペアとして設定する

BGM再生端末としてちょうど良い

YAS-109でAlexaを使う

本体のマイクの無効化を解除する必要があった

ルンバの電源をオフにする

HOMEボタンを10秒長押しでオフにできた

M5StickCで血中酸素飽和度(SpO2)を測定する

手軽にSpO2が計測できるようになって便利

Alexa、関西弁でしゃべって

まいど。Alexaです

Alexa非対応テレビをAlexa対応にする

基本的な操作は音声のみで完結できるようになって快適