#!/usr/bin/env python3 import sys import json import paho.mqtt.client as mqtt import time params = [ "temperature_C", "humidity", "direction_deg", "speed", "gust", "rain" ] mqtt_user = "emonpi" mqtt_password = "emonpimqtt2016" topic_root = "emon" mqtt_client = "wh1080" def on_connect(client, userdata, flags, rc): if rc == 0: mqttc.connected_flag = True print("Connected OK") else: print("Bad connection rc=", rc) mqttc.bad_connection_flag = True mqtt.Client.connected_flag = False mqtt.Client.bad_connection_flag = False mqttc = mqtt.Client(mqtt_client) mqttc.on_connect=on_connect mqttc.username_pw_set(username=mqtt_user, password=mqtt_password) mqttc.loop_start() mqttc.connect("emonpi.domain") while not mqttc.connected_flag and not mqttc.bad_connection_flag: time.sleep(1) if mqttc.bad_connection_flag: print("Exiting") mqttc.loop_stop() sys.exit() for line in sys.stdin: rx = json.loads(line) if rx["model"] != "Fine Offset Electronics WH1080/WH3080 Weather Station": print("Unknown model:", line) continue if rx["msg_type"] != 0: print("Unknown msg_type:", line) continue if rx["id"] != 186: print("Unknown id:", line) continue for param in params: if param not in rx: print("Unknown param:", param) continue topic = topic_root + "/" + mqtt_client + "/" + param #print(topic, rx[param]) mqttc.publish(topic, rx[param], 0, False) mqttc.loop_stop() mqttc.disconnect()