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