X-Git-Url: https://git.rvb.name/weathermon.git/blobdiff_plain/444842767097ad2061fa973e41c3568a90edadb4..6691228bdeefd3ae7857c0aa4b8c76fa5f770a94:/server/weathermon-mqtt diff --git a/server/weathermon-mqtt b/server/weathermon-mqtt index 025deec..d591abe 100755 --- a/server/weathermon-mqtt +++ b/server/weathermon-mqtt @@ -1,4 +1,4 @@ -#!/usr/bin/lua +#!/usr/bin/lua5.1 local random = math.random local json = require "json" @@ -13,20 +13,36 @@ local function uuid() end function process_MSG(mid, topic, payload) - print(topic, payload) pcall(function(topic,payload) payload = json.decode(payload) local time = os.date(payload['Time']) + if not time then time = os.date(payload['time']); end + local model = payload['model'] + local id = payload['id'] + if not model then + device = payload['device'] + if device then + model = device['model'] + id = device['ieeeAddr'] + end + end for sensor_type,sensor_data in pairs(payload) do - if sensor_type ~= "Time" and sensor_type ~= "TempUnit" then - for param,value in pairs(sensor_data) do - conn:execute(string.format("CALL meteo.submit_mqtt('%s','%s','%s','%s',NULL)", topic,sensor_type,param,value)) + if sensor_type ~= "Time" and sensor_type ~= "TempUnit" and sensor_type ~= "model" and sensor_type ~="id" and sensor_type ~= "time" and sensor_type ~= "device" and sensor_type ~="linkquality" and sensor_type ~= "battery" and sensor_type ~= "last_seen" and sensor_type ~= "voltage" then + if model then + conn:execute(string.format("CALL meteo.submit_mqtt('%s','%s','%s','%s',NULL)", topic,model,sensor_type,sensor_data)) conn:commit() - print(topic,sensor_type,param,value) - end + print(string.format("%s/%s (%s) -> %s", topic, model, sensor_type, sensor_data)) + else + for param,value in pairs(sensor_data) do + conn:execute(string.format("CALL meteo.submit_mqtt('%s','%s','%s','%s',NULL)", topic,sensor_type,param,value)) + conn:commit() + print(string.format("%s/%s (%s) -> %s", topic, sensor_type, param, value)) + end + end end end end, topic, payload) + conn:execute('select 1') -- will fail if connection to DB broken end uci = require "uci"