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。

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

参考


Related #iot

Alexaにゲーミングマシンと周辺環境を起動してもらう

PC起動、TV起動、サウンドバー起動がまとめてできるようになった

Alexaにゲーミングマシンと周辺環境を終了してもらう

「Alexa Steamを終了して」ができるようになった

MH-Z19でCO2濃度をリアルタイム計測してMackerelでアラート通知する

換気すべきタイミングにアラートが飛ぶようになった

AlexaにPS4を起動してもらう

「Alexa、PS4をつけて(消して)」

RaspberryPi用の赤外線送受信リモコンを作る

夏休みの電子工作