problem with time.matchesRule
Posted: Wednesday 22 January 2020 22:38
Hi waaren,
I use a function to itter through a list to get the desired color temperature depending on the time. This worked flawless for some time, but since one or two weeks (I think) it doesn't work anymore. After some investigation it seems time.matchesRule gives some false positives.
in the example below the rule 'between 07:55 and 08:00' is always true, and when I comment this line then 'between 19:45 and 20:00' will be always true.
Don't kwow if the problem started after an update of dzvents or after my migration to a raspberry pi 4.
Can you please help?
I use a function to itter through a list to get the desired color temperature depending on the time. This worked flawless for some time, but since one or two weeks (I think) it doesn't work anymore. After some investigation it seems time.matchesRule gives some false positives.
in the example below the rule 'between 07:55 and 08:00' is always true, and when I comment this line then 'between 19:45 and 20:00' will be always true.
Don't kwow if the problem started after an update of dzvents or after my migration to a raspberry pi 4.
Can you please help?
Code: Select all
autoSetpoints = {
{time = 'between 00:00 and 07:00', temp = 232, level = 20},
{time = 'between 07:00 and 07:05', temp = 224, level = 22},
{time = 'between 07:05 and 07:10', temp = 216, level = 24},
{time = 'between 07:10 and 07:15', temp = 208, level = 26},
{time = 'between 07:15 and 07:20', temp = 200, level = 28},
{time = 'between 07:20 and 07:25', temp = 192, level = 30},
{time = 'between 07:25 and 07:30', temp = 184, level = 30},
{time = 'between 07:30 and 07:35', temp = 176, level = 30},
{time = 'between 07:35 and 07:40', temp = 168, level = 30},
{time = 'between 07:40 and 07:45', temp = 160, level = 30},
{time = 'between 07:45 and 07:50', temp = 152, level = 30},
{time = 'between 07:50 and 07:55', temp = 144, level = 30},
{time = 'between 07:55 and 08:00', temp = 136, level = 30},
{time = 'between 08:00 and 19:00', temp = 128, level = 30},
{time = 'between 19:00 and 19:15', temp = 135, level = 30},
{time = 'between 19:15 and 19:30', temp = 142, level = 30},
{time = 'between 19:30 and 19:45', temp = 149, level = 30},
{time = 'between 19:45 and 20:00', temp = 156, level = 30},
{time = 'between 20:00 and 20:15', temp = 163, level = 30},
{time = 'between 20:15 and 20:30', temp = 170, level = 30},
{time = 'between 20:30 and 20:45', temp = 177, level = 30},
{time = 'between 20:45 and 21:00', temp = 184, level = 30},
{time = 'between 21:00 and 21:15', temp = 191, level = 30},
{time = 'between 21:15 and 21:30', temp = 198, level = 30},
{time = 'between 21:30 and 21:45', temp = 205, level = 30},
{time = 'between 21:45 and 22:00', temp = 212, level = 30},
{time = 'between 22:00 and 22:15', temp = 219, level = 30},
{time = 'between 22:15 and 22:30', temp = 226, level = 30},
{time = 'between 22:30 and 23:00', temp = 232, level = 25},
{time = 'between 23:00 and 00:00', temp = 232, level = 20}
},Code: Select all
GetAutoTemp = function(dz, scene)
local i = 1
local currentTemp = 0
while scene.autoSetpoints[i] ~= nil and currentTemp == 0 do
if dz.time.matchesRule(scene.autoSetpoints[i].time) then
dz.log('match = ' .. scene.autoSetpoints[i].time)
currentTemp = scene.autoSetpoints[i].temp
end
i = i + 1
end
return currentTemp
end,