浏览代码

Adding poor AM2301 support for Sonoff Tasmota firmware

PONSARD François 7 年之前
父节点
当前提交
5e0fbc7ea5
共有 2 个文件被更改,包括 17 次插入2 次删除
  1. 1 0
      map
  2. 16 2
      mqtt2graphite.py

+ 1 - 0
map

@@ -45,3 +45,4 @@ j	test/jp/j3					test.jp.json
 #	test.jp.json.temp 89.300000 1363169729
 #	test.jp.json.size 69.000000 1363169729
 
+s tele/wemos-sensor-1/SENSOR

+ 16 - 2
mqtt2graphite.py

@@ -12,9 +12,9 @@ import socket
 import json
 import signal
 
-MQTT_HOST = os.environ.get('MQTT_HOST', '127.0.0.1')
+MQTT_HOST = os.environ.get('MQTT_HOST', '192.168.0.4')
 MQTT_PORT = int(os.environ.get('MQTT_PORT', 1883))
-CARBON_SERVER = os.environ.get('CARBON_SERVER', '127.0.0.1')
+CARBON_SERVER = os.environ.get('CARBON_SERVER', '192.168.0.4')
 CARBON_PORT = int(os.environ.get('CARBON_PORT', 2003))
 
 LOGFORMAT = '%(asctime)-15s %(message)s'
@@ -103,6 +103,20 @@ def on_message(mosq, userdata, msg):
                     logging.info("Topic %s contains non-JSON payload [%s]" %
                             (msg.topic, msg.payload))
                     return
+            elif type == 's':
+                '''JSON: try and load the JSON string from payload and use
+                   subkeys to pass to Carbon'''
+                try:
+                    st = json.loads(msg.payload)
+                    print st['AM2301']
+                    for k in st['AM2301']:
+                        if is_number(st['AM2301'][k]):
+                            lines.append("%s.%s %f %d" % (carbonkey, k, float(st['AM2301'][k]), now))
+                except:
+                    logging.info("Topic %s contains non-JSON payload [%s]" %
+                            (msg.topic, msg.payload))
+                    return
+
 
             else:
                 logging.info("Unknown mapping key [%s]", type)