From da1217b18bb4dc9547501b1d99b12e73b45df230 Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Sat, 29 Jul 2017 16:16:37 -0400 Subject: [PATCH] 1Wire utilities --- util/ow-ds18b20.lua | 20 ++++++++++++++++++++ util/ow-scan.lua | 13 +++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 util/ow-ds18b20.lua create mode 100644 util/ow-scan.lua diff --git a/util/ow-ds18b20.lua b/util/ow-ds18b20.lua new file mode 100644 index 0000000..85b1613 --- /dev/null +++ b/util/ow-ds18b20.lua @@ -0,0 +1,20 @@ +return function(tq, pin, addr, power, k) + local function doread() + ow.reset(pin) + ow.select(pin, addr) + ow.write(pin,0xBE,power) + + local data = string.char(ow.read(pin)) + for i = 1, 8 do data = data .. string.char(ow.read(pin)) end + + if data:byte(9) == ow.crc8(string.sub(data,1,8)) + then k(data:byte(1) + 256*data:byte(2)) + else k(nil) + end + end + + ow.reset(pin) + ow.select(pin, addr) + ow.write(pin, 0x44, power) + tq:queue(1000,doread) +end diff --git a/util/ow-scan.lua b/util/ow-scan.lua new file mode 100644 index 0000000..9b063a3 --- /dev/null +++ b/util/ow-scan.lua @@ -0,0 +1,13 @@ +return function(pin, reset) + local x = {} + local addr = nil + if reset then + ow.reset(pin) + ow.reset_search(pin) + end + repeat + addr = ow.search(pin) + x[#x+1] = addr + until (addr == nil) or (#x > 10) + return x +end -- 2.50.1