26.08.2016, 06:14
Here is Bluetooth device presence script which changes value of respective grp addresses based on Bluetooth device appearance.
Code:
require('ble')
-- enable ble
ble.up()
list = {}
-- mac -> group address mapping
known = {
['88:0F:10:10:F2:8A'] = '1/1/1',
['88:0F:10:4A:2C:36'] = '1/1/2',
}
ctime = os.time()
function callback(addr)
local now, delta
now = os.time()
delta = now - ctime
if addr then
if not list[ addr ] then
log('BLE found ' .. addr)
if known[ addr ] then
grp.write(known[ addr ], true, dt.bool)
end
end
list[ addr ] = now
end
-- check for missing devices each 5 seconds
if delta < 0 or delta > 5 then
for addr, time in pairs(list) do
delta = now - time
if delta < 0 or delta > 60 then
log('BLE missing ' .. addr)
list[ addr ] = nil
if known[ addr ] then
grp.write(known[ addr ], false, dt.bool)
end
end
end
ctime = now
end
end
ble.scan(callback)