22.09.2023, 20:07
(22.09.2023, 06:31)RomansP Wrote:(20.09.2023, 15:03)Novodk Wrote:(20.09.2023, 12:51)admin Wrote: You need to create a resident script that executes ow.list() every second or so. Then you can perform required action when a device with a given ID is present or not.
A bit out of my comfort zone
Do you have any example code, in that direction to get me started?
Hello Novodk.
This is resident script for you.
Code:require('ow')
function findDifferences(list, prev_list)
local new_ids = {}
local removed_ids = {}
-- Check for new IDs
if list then
for id, _ in pairs(list) do
if not prev_list or not prev_list[id] then
table.insert(new_ids, id)
end
end
end
-- Check for removed IDs
if prev_list then
for id, _ in pairs(prev_list) do
if not list[id] then
table.insert(removed_ids, id)
end
end
end
return new_ids, removed_ids
end
list = ow.list()
local new_ids, removed_ids = findDifferences(list, prev_list)
if #new_ids > 0 then
log("New IDs:")
for _, id in ipairs(new_ids) do
log(id, list[id])
end
end
if #removed_ids > 0 then
log("Removed IDs:")
for _, id in ipairs(removed_ids) do
log(id, prev_list[id])
end
end
prev_list = list
Thank you RomansP
Is it correct that the script adds the rfid tag ID to a table and after a short time it removes it again?
If that is the case, how do I use the information from that table?