X-Git-Url: https://git.rvb.name/openhab-process.git/blobdiff_plain/e06b837b3b3ec837665eb7c0539636c7b000664a..daa57f38fb9540a14593936b6886d47800abce9c:/mqtt-bt/scan-beacons diff --git a/mqtt-bt/scan-beacons b/mqtt-bt/scan-beacons index 98c3993..b73d674 100644 --- a/mqtt-bt/scan-beacons +++ b/mqtt-bt/scan-beacons @@ -1,4 +1,4 @@ -#!/usr/bin/env lua +#!/usr/bin/lua function getConfig(configname) @@ -49,7 +49,9 @@ end function mqtt_encode(str) if (str) then str = string.gsub (str, "\n", "") + str = string.gsub (str, ":", "-") str = string.gsub (str, "/", "-") + str = string.gsub (str, " ", "_") end return str end @@ -72,11 +74,12 @@ end function open_dump() - f = assert(io.popen ("hcidump --raw")) - run_command("kill `pgrep hcitool`") - run_command("hciconfig hci0 down") - run_command("hciconfig hci0 up") - f_null = assert(io.popen ("hcitool lescan --duplicates")) + run_command("/bin/kill `/usr/bin/pgrep hcidump`") + run_command("/bin/kill `/usr/bin/pgrep hcitool`") + f = assert(io.popen ("/usr/bin/hcidump --raw")) + run_command("/usr/bin/hciconfig hci0 down") + run_command("/usr/bin/hciconfig hci0 up") + f_null = assert(io.popen ("/usr/bin/hcitool lescan --duplicates")) return f @@ -87,8 +90,8 @@ function dump(o) local s = '{ ' for k,v in pairs(o) do if type(k) ~= 'number' then k = '"'..k..'"' end --- s = s .. '['..k..'] = ' .. dump(v) .. ',' - s = s .. dump(v) .. ',' + s = s .. '['..k..'] = ' .. dump(v) .. ',' +-- s = s .. dump(v) .. ',' end return s .. '} ' else @@ -100,6 +103,11 @@ function trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end +function mqtt_pub(path,value) + printLog("Pub "..path.." "..value) + return mqtt_client:publish(path,value) +end + function process_packet(packet) local bytes={} @@ -151,13 +159,13 @@ function process_packet(packet) end if type=="ibeacon" then printLog(string.format("{type:'ibeacon',mac:'%s',uuid:'%s',major:'%s',minor:'%s',power:%d,tx:%d}",mac,uuid,major,minor,power,tx)) - details=uuid..'/'..major..'/'..minor..'/' + details=uuid..'/'..major..'/'..minor else type='unknown' details=dump(bytes) - printLog(details) +-- printLog(details) end - if mqtt_client then + if not (type=="unknown") then mqtt_path=string.gsub(mqtt_topic,"{(.-)}", function (name) if name=="type" then @@ -168,7 +176,12 @@ function process_packet(packet) return '{'..name..'}' end end) - mqtt_client:publish(mqtt_path,tx) + + if not pcall(mqtt_pub,mqtt_path,tx) then + printLog('Reconnecting MQTT...') + mqtt_client:connect(mqtt_id) + end + end end end @@ -219,4 +232,5 @@ if mqtt_host then end inp = open_dump() + read_loop()