projects
/
weathermon.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Больше не поддерживается вариант на python.
[weathermon.git]
/
weathermon.lua
diff --git
a/weathermon.lua
b/weathermon.lua
index af387297ccd5274478816d74928dd5baf4ae199b..3208e304e0d2643f07021edca2b9b9cd7f8c1e8f 100755
(executable)
--- a/
weathermon.lua
+++ b/
weathermon.lua
@@
-1,7
+1,7
@@
#!/usr/bin/lua
#!/usr/bin/lua
-require("json")
-require("socket")
+
json =
require("json")
+
socket =
require("socket")
function startswith(String,Start)
if String then
function startswith(String,Start)
if String then
@@
-83,6
+83,7
@@
function getConfig(configname)
end
logging = cur.get(config,"logging","enabled")
end
logging = cur.get(config,"logging","enabled")
+ touch_file = cur.get(config,"logging","touch_file")
serial_port = cur.get(config,"serial","port")
serial_baud = cur.get(config,"serial","baud")
serial_port = cur.get(config,"serial","port")
serial_baud = cur.get(config,"serial","baud")
@@
-125,6
+126,13
@@
function getConfig(configname)
end
end
+function touch()
+ if touch_file then
+ local file = io.open(touch_file, 'w')
+ file:close()
+ end
+end
+
function sleep(sec)
socket.select(nil, nil, sec)
end
function sleep(sec)
socket.select(nil, nil, sec)
end
@@
-153,7
+161,10
@@
end
function printLog(str)
if logging=="on" then
capture("logger -t weathermon "..str)
function printLog(str)
if logging=="on" then
capture("logger -t weathermon "..str)
- else
+ print(str)
+ elseif logging=="syslog" then
+ capture("logger -t weathermon "..str)
+ elseif logging=="stdout" then
print(str)
end
end
print(str)
end
end
@@
-172,10
+183,12
@@
function submitValue(type,id,param,val)
command = command.." -u "..web_user..":"..web_pass
end
command = command.." -u "..web_user..":"..web_pass
end
- command = command.." \""..url.."\""
+ command = command.." \""..url.."\"
2>&1
"
result = capture(command)
result = capture(command)
+ touch()
+
end
function processJson(str)
end
function processJson(str)
@@
-186,7
+199,7
@@
function processJson(str)
for key,value in pairs(msg) do
if value then
for key,value in pairs(msg) do
if value then
- if key=="model" then
+ if key=="model"
or key=="device"
then
sensor_type=value
elseif key=="id" then
sensor_id=value
sensor_type=value
elseif key=="id" then
sensor_id=value
@@
-198,9
+211,16
@@
function processJson(str)
end
end
end
end
+ if not sensor_id then
+ sensor_id = web_devid
+ end
+
if not (sensor_type==nil or sensor_id==nil or sensor_type=='' or sensor_id=='') then
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
for k,v in pairs(sensor) do
for k,v in pairs(sensor) do
- printLog("Type = "..sensor_type..", ID = "..sensor_id..", Param = "..k..", Value =
"..v
)
+ printLog("Type = "..sensor_type..", ID = "..sensor_id..", Param = "..k..", Value =
\""..v.."\""
)
submitValue(sensor_type,sensor_id,k,v)
if mqtt_client then
mqtt_path=string.gsub(mqtt_topic,"{(.-)}",
submitValue(sensor_type,sensor_id,k,v)
if mqtt_client then
mqtt_path=string.gsub(mqtt_topic,"{(.-)}",
@@
-221,7
+241,7
@@
function processJson(str)
end
end
else
end
end
else
- printLog("Cannot parse sensor input: "..
msg_body
)
+ printLog("Cannot parse sensor input: "..
str
)
end
end
end
end
@@
-334,12
+354,12
@@
end
getConfig(arg[1])
if mqtt_host then
getConfig(arg[1])
if mqtt_host then
- MQTT = require "
paho.mqtt
"
- mqtt_client = MQTT.
client.create(mqtt_host, mqtt_port
)
+ MQTT = require "
mosquitto
"
+ mqtt_client = MQTT.
new(mqtt_id
)
if mqtt_user then
if mqtt_user then
- mqtt_client:
auth
(mqtt_user, mqtt_passwd)
+ mqtt_client:
login_set
(mqtt_user, mqtt_passwd)
end
end
- mqtt_client:connect(mqtt_
id
)
+ mqtt_client:connect(mqtt_
host,mqtt_port
)
end
if serial_port then
end
if serial_port then
@@
-355,7
+375,7
@@
else
return
end
while 1 do
return
end
while 1 do
- line=serialin:read()
+ line=serialin:read(
"*l"
)
if line == nil then
break
end
if line == nil then
break
end
@@
-363,6
+383,6
@@
while 1 do
if startswith(line,'{') then
processJson(line)
else
if startswith(line,'{') then
processJson(line)
else
-
processLine(line)
+ processLine(line)
end
end
end
end