summaryrefslogtreecommitdiff
path: root/mh-z19.lua
blob: fe269b8e476364e763a4278571af0ee01ce36699 (plain)
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
local mhz19 = {}

local c_read = string.char(0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79)

mhz19.co2 = nil
mhz19.temp = nil
mhz19.tt = nil
mhz19.ss = nil
mhz19.uu = nil

function mhz19.query()
	return c_read
end

function mhz19.parse_frame(data)
	local head, cmd, co2h, co2l, temp, tt, ss, uh, ul = struct.unpack("BBBBBBBBB", data)
	if head ~= 0xff or cmd ~= 0x86 then
		return false
	end
	mhz19.co2 = co2h * 256 + co2l
	mhz19.temp = temp - 40
	mhz19.tt = tt
	mhz19.ss = ss
	mhz19.uu = uh * 256 + ul
	return true
end

return mhz19