Переход на отображение через lcdd, мелкие правки и доработки.
[weathermon.git] / bin / weathermon
index 2314e1a4122cf8fe02f5e1950b0d8ff6397592ad..bd9ca80200d5e226cddfce4c1c212d98463f8aa8 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/lua
 
 local json = require("json")
 #!/usr/bin/lua
 
 local json = require("json")
+local signal = require("posix.signal")
 
 require "wm_util"
 
 
 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
   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)
     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  
         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
         mqtt_client:loop()
       end  
     end
@@ -247,7 +245,10 @@ function processLine(str)
                 return '{'..name..'}'
               end      
             end)
                 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
           mqtt_client:loop()
         end  
       end
@@ -288,7 +289,10 @@ function processLine(str)
               return '{'..name..'}'
             end      
           end)
               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
         mqtt_client:loop()
       end
       if alarm_exec then
@@ -307,6 +311,19 @@ end
 
 getConfig(arg[1])
 
 
 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())
 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
         io.close(f)
       end)  
     end
+
   end)
     
 end
   end)
     
 end