Nature Remo Eとスマフォアプリ(電力メータ)との連携はMQTTで繋ぐことにしているので、Nature Remo Eの計測データをWebAPIで取ってMQTTでPublishするコードをPythonで作成。MQTTのPublishが非同期なのかどうかわかっておらず、Publish完了を待たずにプログラムを終わっていいのか不明。だけどまぁこれで動いている。
#!/usr/bin/python3
import json
import requests
import paho.mqtt.client as paho
URL = "https://api.nature.global/1/appliances"
TOKEN = "R6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkis"
smartmeter_instantaneous = None
def on_publish(client, userdata, result):
print("message published \n")
pass
#
# get measurement data via Nature Remo WebAPI
#
headers = {'Authorization' : 'Bearer '+TOKEN }
r = requests.get(URL, headers=headers)
if r.status_code == 200:
appliances = r.json()
for property in appliances[0]["smart_meter"]["echonetlite_properties"]:
if property['epc'] == 231:
smartmeter_instantaneous = property
break
# for log
if smartmeter_instantaneous:
print(smartmeter_instantaneous)
#
# publish data to MQTT Broker (mosquitto)
#
MQTT_BROKER = 'test.mosquitto.org'
MQTT_PORT = 1883
TOPIC = 'house0001/smartmeter/report'
CLIENT = "report_0001"
if smartmeter_instantaneous:
client = paho.Client(CLIENT)
client.on_publish = on_publish
client.connect(MQTT_BROKER, MQTT_PORT)
ret = client.publish(TOPIC, json.dumps(smartmeter_instantaneous))
print("publish")
print(ret)
flutterで作成したスマートメータ表示アプリのTopicを変えたら表示できるはず。。ただ、取得時刻がUTCなので、JSTに変換が必要だ。
Nature Remo Cloud API
Nature Inc. | Nature Developer Page
