problem with time.matchesRule

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

Post Reply
ronaldbro
Posts: 327
Joined: Thursday 15 November 2018 21:38
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: Netherlands
Contact:

problem with time.matchesRule

Post by ronaldbro »

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?

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,
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: problem with time.matchesRule

Post by waaren »

ronaldbro wrote: Wednesday 22 January 2020 22:38 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.
Thx for reporting. Is indeed a bug
I need to investigate further and also find out why integration tests did not notice.
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
ronaldbro
Posts: 327
Joined: Thursday 15 November 2018 21:38
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: Netherlands
Contact:

Re: problem with time.matchesRule

Post by ronaldbro »

Thanks waaren
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: problem with time.matchesRule

Post by waaren »

ronaldbro wrote: Wednesday 22 January 2020 23:27 Thanks waaren
Should be fixed in V4.11638
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
ronaldbro
Posts: 327
Joined: Thursday 15 November 2018 21:38
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: Netherlands
Contact:

Re: problem with time.matchesRule

Post by ronaldbro »

I just updated and the problem is fixed.
Thanks Waaren
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest