Переделана обработка сообщений MQTT в связи с переходом на прошивку Sonoff-Tasmota...
[weathermon.git] / weathermon-mqtt
index 6c5fd378d949bcefddb8194820febff88f6e44fe..1d96410178be7c4a5817876d79ffcd0d9088e46e 100755 (executable)
@@ -5,17 +5,26 @@ import sys
 from ConfigParser import ConfigParser
 import MySQLdb
 from pprint import pprint
+import json
+from dateutil.parser import parser
+tparser=parser()
 
 def on_message(mosq, obj, msg):
   topic=msg.topic
-  payload=msg.payload
-  try:
-    c = database.cursor()
-    c.execute('CALL meteo.submit_mqtt(%s,%s,NULL)', (topic,payload))
-    database.commit()
-    print topic,payload
-  except:
-    print "Failed to submit data"  
+  payload=json.loads(msg.payload)
+  timestamp=tparser.parse(payload['Time'])
+  for sensor_type in payload:
+    if sensor_type != 'Time':
+      sensor_data=payload[sensor_type]
+      for param in sensor_data:
+        try:
+          value=sensor_data[param]
+          c = database.cursor()
+          c.execute('CALL meteo.submit_mqtt(%s,%s,%s,%s,NULL)', (topic,sensor_type,param,value))
+          database.commit()
+          print topic,sensor_type,param,value
+        except:
+          print "Failed to submit data"  
 
 def Topics():