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

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

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

YAS-109でAlexaを使う

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

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

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

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

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

Alexa、関西弁でしゃべって

まいど。Alexaです

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

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