X-Git-Url: https://git.rvb.name/weathermon.git/blobdiff_plain/2b43b1c28e9ced6c475904604df1c99b78cd8a71..df46c1d6c7aa6058b5507fff9636f1f0684dd05b:/bin/weathermon?ds=sidebyside diff --git a/bin/weathermon b/bin/weathermon index 2314e1a..bd9ca80 100755 --- a/bin/weathermon +++ b/bin/weathermon @@ -1,6 +1,7 @@ #!/usr/bin/lua local json = require("json") +local signal = require("posix.signal") require "wm_util" @@ -156,9 +157,6 @@ function processJson(str) end if not (sensor_type==nil or sensor_id==nil or sensor_type=='' or sensor_id=='') then - if next(sensor)==nil then - sensor["command"]="alarm" - end local record = {} for k,v in pairs(sensor) do storeRecord(sensor_id,sensor_type,k,v) @@ -184,7 +182,7 @@ function processJson(str) if not mqtt_client:socket() then mqtt_client:reconnect() end - mqtt_client:publish(mqtt_path,v,0,0) + mqtt_client:publish(mqtt_path,v,0,false) mqtt_client:loop() end end @@ -247,7 +245,10 @@ function processLine(str) return '{'..name..'}' end end) - mqtt_client:publish(mqtt_path,v,0,0) + if not mqtt_client:socket() then + mqtt_client:reconnect() + end + mqtt_client:publish(mqtt_path,v,0,false) mqtt_client:loop() end end @@ -288,7 +289,10 @@ function processLine(str) return '{'..name..'}' end end) - mqtt_client:publish(mqtt_path,msg_body,0,0) + if not mqtt_client:socket() then + mqtt_client:reconnect() + end + mqtt_client:publish(mqtt_path,msg_body,0,false) mqtt_client:loop() end if alarm_exec then @@ -307,6 +311,19 @@ end getConfig(arg[1]) +signal.signal(signal.SIGTERM, function(signum) + + printLog("Terminating...") + local pids = get_children() + for k,v in pairs(pids) do + printLog("Terminating subprocess "..tostring(v).."...") + signal.kill(v,signal.SIGTERM) + end + printLog("Exiting...") + os.exit(0) + +end) + if backlogdb or logdb then local dbdriver = require "luasql.sqlite3" env = assert(dbdriver.sqlite3()) @@ -391,6 +408,7 @@ while 1 do io.close(f) end) end + end) end