-
Notifications
You must be signed in to change notification settings - Fork 1
/
_analize.lua
103 lines (100 loc) · 2.63 KB
/
_analize.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
do
-- for PU-112
if gotRAW[6] > 15 and gotRAW[6] < 20 then
local itms = string.format("%02d", gotRAW[5]) or "lost5"
local coms = string.format("%02d", gotRAW[6]) or "lost6"
local ttp = itms.."/scen"..coms
local tp = {}
local top ={}
top[ttp] = "ON"
table.insert(answer,top)
gotRAW = {}
publ()
return
end
-- end for PU-112
local analize = function()
local itm = gotRAW[5]
local itms = string.format("%02d", gotRAW[5])
local ttp = itms.."/state"
local tp = {}
local top ={}
top[ttp] = "ON"
local swOff = function(tttp, tm, tr, call)
return function()
tr:alarm(tm, 0, function()
local an = {}
an[tttp] = "OFF"
table.insert(answer, an)
publ()
if call then call() end
end)
end
end
if gotRAW[6] ~= 6 and _G.runbrt[itm] ~= nil then _G.runbrt[itm].stopbr = 1 end
if gotRAW[6] == 0 then
top[ttp] = "OFF"
table.insert(answer,top)
elseif gotRAW[6] == 1 or gotRAW[6] == 2 or gotRAW[6] == 3 or gotRAW[6] == 5 then
table.insert(answer,top)
elseif gotRAW[6] == 4 then
local d = itms.."/changed"
tp[d] = "ON"
table.insert(answer,tp)
elseif gotRAW[6] == 6 then
if gotRAW[8] == 0 then
top[ttp] = "OFF"
end
table.insert(answer,top)
elseif gotRAW[6] == 130 then
if gotRAW[11] == 0 then top[ttp] = "OFF" end
table.insert(answer,top)
elseif gotRAW[6] == 0x15 then
local temp = 0
local hempH = gotRAW[9]
local hempL = gotRAW[8]
temp = bit.lshift(bit.band(hempH, 0x0F),8) + hempL
if (temp > 0x7FF) then
temp = temp - 0x1000
end
temp = temp * 0.1
local newitm = itms.."/temp"
tp[newitm] = temp
if gotRAW[10] ~= 0 then
local newit = itms.."/humi"
tp[newit] = gotRAW[10]
end
table.insert(answer,tp)
elseif gotRAW[6] == 20 then
tp.lowbat = itms
table.insert(answer,tp)
elseif gotRAW[6] == 25 then
local function close25()
local im = itm
if _G.stop25[im] ~= nil then
_G.stop25[im].func = nil
tmr.stop(_G.stop25[im].tmr)
tmr.unregister(_G.stop25[im].tmr)
_G.stop25[im].tmr = nil
_G.stop25[im] = nil
end
end
close25()
table.insert(answer,top)
local tm = gotRAW[8] * 5 * 1000
if gotRAW[7] == 6 then
tm = (bit.lshift(gotRAW[9], 8) + gotRAW[8]) * 5 * 1000
if tm > 6870947 then tm = 6870947 end
end
if tm > 0 then
stop25[itm] = {}
stop25[itm].tmr = tmr.create()
stop25[itm].func = swOff(ttp, tm, stop25[itm].tmr, close25)
stop25[itm].func()
end
end
gotRAW = {}
publ()
end
analize()
end