chakokuのブログ(rev4)

日々のごった煮ブログです

Nature Remo Eの計測データをWebAPIで取ってMQTTでPublishする

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)

PublishされたのをMQTT Clientツールで確認

flutterで作成したスマートメータ表示アプリのTopicを変えたら表示できるはず。。ただ、取得時刻がUTCなので、JSTに変換が必要だ。

Nature Remo Cloud API
Nature Inc. | Nature Developer Page