Nature Remo E liteの電力データをMackerelに記録する

先日の記事でNature Remo E liteを使って電力データを取得するようにしたので、今回はMackerelにグラフを記録するようにした。

理由としては、公式アプリでもグラフは見れるようになっているが過去の瞬時電力計測値の細かい数値は見れないのと、家庭内で電力情報を共有する際にMackerelだと手軽にグラフの共有ができるため。

そこで↓のようなpythonスクリプトを書いた。

import remoのコードに関しては先日の記事を参照)

#-*- coding: utf-8 -*-
import urllib.request
import os
import json
from datetime import datetime, timedelta
import remo

def create_request(data):
  json_data = json.dumps(data).encode("utf-8")
  req = urllib.request.Request('https://mackerel.io/api/v0/tsdb', method='POST', data=json_data)
  req.add_header('X-Api-Key', os.environ['MACKEREL_TOKEN'])
  req.add_header('Content-Type', 'application/json')
  return req

remo  = remo.SmartMeter()
power = remo.get_power()
measured_instantaneous = power['measured_instantaneous']
updated_at = power['updated_at']
time = datetime.strptime(updated_at, '%Y-%m-%dT%H:%M:%SZ')
time = time + timedelta(hours=9)

data = [
  {
    'hostId': os.environ['MACKEREL_HOST_ID'],
    'name': os.environ['MACKEREL_METRIC_NAME'],
    'time': time.timestamp(),
    'value': measured_instantaneous
  }
]

req = create_request(data)
with urllib.request.urlopen(req) as res:
    print(res.read().decode("utf-8"))

これで↓を実行するとMackerelに瞬時電力計測値が記録される。

NATURE_REMO_TOKEN=xxx MACKEREL_TOKEN=xxxx MACKEREL_HOST_ID=xxxx MACKEREL_METRIC_NAME=custom.remo.measured_instantaneous python3 remo_to_mackerel.py

あとはcronで定期実行するようにすればOK。

これで電力データをグラフ化して、手軽に共有できるようになった。

参考