Meanwhile, if your timer is set based on the changes to the preferences, I suggest you add a condition using the persistent store to verify if they actually changed. Eg.
for id, value in pairs(device.preferences) do
local oldPreferenceValue = device:get_field(id)
print("oldPreferenceValue " .. oldPreferenceValue)
local newParameterValue = device.preferences[id]
print("newParameterValue " .. newParameterValue)
if oldPreferenceValue ~= newParameterValue then
device:set_field(id, newParameterValue, {persist = true})
print("change device parameter")
end
end