Hi
I would like to know the best practises to map a device id (based upon the known 'hometable' and another variable)?
For example, see partial scene below. Each device has a specific timeout. The way I did in the main scene doesn't seems to be a best practise since I'm repeating again the device id, gathered from the hometable.
Using the name (for example local BuzzerId = (jT.Woongedeelte.Buzzer)) neither (I think). But how should you do it in a way you can link the device id with a timeout value in your configuration setting of a scene so you an use it in a loop.
Hope it's clear. Thanks.
-- Main scene ----
-- loop through DevicesID's
for i, id in ipairs(DevicesIDs) do
-- Mapping between ID's and timeout
if id == 76 then timeout = TimeOutBuzzer
else if id == 91 then timeout = TimeOutFonteinSwitch
else if id == 97 then timeout = TimeOutFontein
else if id == 120 then timeout = TimeOutStroomBuiten
else if id == 138 then timeout = TimeoutAlarmRGB
end
end
end
end
end
-- Check if the device is on, else end
if (( tonumber(fibaro:getValue(id, "value")) > 0 )) then
log("Device "..fibaro:getName(id).." With Id " ..id.." is active (On)")
local tempDeviceState0, deviceLastModification0 = fibaro:get(id, "value");
-- Check if the device is on for longer then timeOuts, the switch off device.
if (( tonumber(fibaro:getValue(id, "value")) > 0 ) and (os.time() - deviceLastModification0) >= timeout) then
fibaro:call(id, "turnOff");
local Message = "Device " ..fibaro:getName(id).." With Id " ..id.." on for too long. Stopped."
info("[INFO] Message is "..Message)
fibaro:startScene(SMsgHsceneID, {Message, targetMail}) -- send SmMsg e-mail
end
end
end