X-Git-Url: https://git.rvb.name/openhab-process.git/blobdiff_plain/9e115a08e80fa89413335716477f8436523141dd..5b22968fed23a6b2f4438fbe344c52bea5143be7:/mqtt-bt/scan-beacons?ds=sidebyside diff --git a/mqtt-bt/scan-beacons b/mqtt-bt/scan-beacons index 3c6a230..1709e93 100644 --- a/mqtt-bt/scan-beacons +++ b/mqtt-bt/scan-beacons @@ -87,8 +87,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 +100,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={} @@ -155,12 +160,9 @@ function process_packet(packet) else type='unknown' details=dump(bytes) - printLog(details) +-- printLog(details) end - if mqtt_client then - if not mqtt_client.connected then - mqtt_client:connect(mqtt_id) - end + if not (type=="unknown") then mqtt_path=string.gsub(mqtt_topic,"{(.-)}", function (name) if name=="type" then @@ -171,7 +173,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 @@ -218,7 +225,9 @@ if mqtt_host then if mqtt_user then mqtt_client:auth(mqtt_user, mqtt_passwd) end + mqtt_client:connect(mqtt_id) end inp = open_dump() + read_loop()