diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-10-02 23:52:52 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-10-03 17:15:23 +0200 |
commit | 1d8bec95253ee8a88a85cb88be521f28b23504aa (patch) | |
tree | 5d61cd1d4f091286a4b423523bbb56b492b8022e /mqtt-bridge/inter.lua | |
download | esp-playground-1d8bec95253ee8a88a85cb88be521f28b23504aa.tar.gz esp-playground-1d8bec95253ee8a88a85cb88be521f28b23504aa.tar.bz2 esp-playground-1d8bec95253ee8a88a85cb88be521f28b23504aa.tar.xz esp-playground-1d8bec95253ee8a88a85cb88be521f28b23504aa.zip |
wip of serial commands to mqtt bridge.
Diffstat (limited to 'mqtt-bridge/inter.lua')
-rw-r--r-- | mqtt-bridge/inter.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/mqtt-bridge/inter.lua b/mqtt-bridge/inter.lua new file mode 100644 index 0000000..eb64a98 --- /dev/null +++ b/mqtt-bridge/inter.lua @@ -0,0 +1,73 @@ +function inter_parse(line) + print("inter_parse: line="..line) + + line = string.sub(line, 1, string.find(line, "\r")) + + local cmd = nil; + local i = string.find(line, ":") + if i == nil then + print("inter_parse: invalid line: no command, line="..line) + return + end + local cmd = string.sub(line, 1, i - 1) + print("inter_parse: cmd="..cmd) + + local args = {} + last = i+1 + while i ~= nil do + local key + local value + + i = string.find(line, " ", last) + + arg = string.sub(line, last, i) + print("inter_parse: arg: "..arg) + j = string.find(arg, "=") + if j == nil then + key = arg + args[key] = true + print("inter_parse: key="..key.."=true") + else + key = string.sub(arg, 1, j-1) + value = string.sub(arg, j+1) + print("inter_parse: key="..key..", value="..value) + end + if i == nil then + break + end + last = i + 1 + end + + return cmd, args +end + +local cb +-- require('inter'); inter_init(); +-- cmd:abc=123 xyz=qwe woot +function inter_on_line(line) + print("line:"..line) + + local cmd, args = inter_parse(line) + if cmd == nil then + return + end + +-- print("cmd="..cmd) +-- for k, v in pairs(args) do +-- print(k.."="..tostring(v)) +-- end + if cb then + cb(cmd, args) + end +end + +function inter_init(callback) + -- uart.setup(id, baud, databits, parity, stopbits, echo) + -- uart.setup(0, 115200, 8, 0, 1, 0) + -- uart.setup(0, 9600, 8, 0, 1, 0) + cb = callback + + tmr.alarm(0, 1000, 0, function() print("still alive!"); end) + uart.on("data", "\r", inter_on_line, 0) + print("inter ready: callback.."..tostring(cb)) +end |