Page 1 of 1

Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)

Posted: Sunday 08 November 2020 8:53
by besix
Hi
I noticed that the script that worked ok in the lastest beta 2020.2 (build 12554)
stopped working.
The entire script below

Code: Select all

return 
{
    on = 
    {
     timer = {'every 2 minutes and between 4 minutes after sunrise and 58 minutes after sunset , between 59 minutes after sunset and 3 minutes after sunrise'},
     devices = {'Opady'}
    },
    logging =   
    {
        level = domoticz.LOG_DEBUG, 
        marker = 'Oczko ogród',
    },
    execute = function( dz, item)
                       
        if item.isTimer then 
            dz.log('Time trigger is: ' .. item.trigger,dz.LOG_INFO )
            if (dz.time.matchesRule('between 4 minutes after sunrise and 58 minutes after sunset') and dz.devices('Opady').state == 'Off') then
                dz.devices('Gniazdo Oczko').switchOn()
                dz.log('Oczko włączone')
            elseif (dz.time.matchesRule('between 59 minutes after sunset and 3 minutes after sunrise') or dz.devices('Opady').state == 'On') then
                dz.devices('Gniazdo Oczko').switchOff()
                dz.log('Oczko wyłączone') 
            end
    end
end
}
This is probably related to the time rule, because if I leave it only every 2 minutes, then it works

Code: Select all

return 
{
    on = 
    {
     timer = {'every 2 minutes'}
     devices = {'Opady'}
    },
    logging =   
    {
        level = domoticz.LOG_DEBUG, 
        marker = 'Oczko ogród',
    },
    execute = function( dz, item)
                       
        if item.isTimer then 
            dz.log('Time trigger is: ' .. item.trigger,dz.LOG_INFO )
            if (dz.time.matchesRule('between 4 minutes after sunrise and 58 minutes after sunset') and dz.devices('Opady').state == 'Off') then
                dz.devices('Gniazdo Oczko').switchOn()
                dz.log('Oczko włączone')
            elseif (dz.time.matchesRule('between 59 minutes after sunset and 3 minutes after sunrise') or dz.devices('Opady').state == 'On') then
                dz.devices('Gniazdo Oczko').switchOff()
                dz.log('Oczko wyłączone') 
            end
    end
end
}
What has changed in dzVents and what can I do to fix it?
Time.lua does not support timeRules ?

Re: Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)

Posted: Sunday 08 November 2020 12:28
by waaren
besix wrote: Sunday 08 November 2020 8:53 timer = {'every 2 minutes and between 4 minutes after sunrise and 58 minutes after sunset , between 59 minutes after sunset and 3 minutes after sunrise'},
Although it might have done something in earlier versions, this rule was never supported. In fact I don't understand what it should do.

Should it trigger:

Code: Select all

every 2 minutes 24/7
every 1 minute between 4 minutes after sunrise and 58 minutes after sunset
every 1 minute between 59 minutes after sunset and 3 minutes after sunrise
?

Please elaborate in text when you want the script to be triggered.

Re: Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)

Posted: Sunday 08 November 2020 12:35
by dannybloe
Indeed, this should be split into separate rules. And's and comma's are not supported. The reason it might have worked is purely coincidental, perhaps due to how dzVents parses the rules.

Re: Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)

Posted: Sunday 08 November 2020 13:19
by besix
Thanks for the answers.
After your suggestions I changed the script and this is probably what I expect. I don't know why I made it so complicated myself.

Code: Select all

return 
{
    on = 
    {
     timer = {'every 2 minutes and between 4 minutes after sunrise and 58 minutes after sunset'},
     devices = {'Opady'}
    },
    logging =   
    {
        level = domoticz.LOG_DEBUG, 
        marker = 'Oczko ogród',
    },
    execute = function( dz, item)
                       
        if item.isTimer then 
            dz.log('Time trigger is: ' .. item.trigger,dz.LOG_INFO )
            if (dz.time.matchesRule('between 4 minutes after sunrise and 58 minutes after sunset') and dz.devices('Opady').state == 'Off') then
                dz.devices('Gniazdo Oczko').switchOn().checkFirst()
                dz.log('Oczko włączone')
            else
                dz.devices('Gniazdo Oczko').switchOff().checkFirst()
                dz.log('Oczko wyłączone') 
            end
    end
end
}
This first script, however, worked in earlier versions of dzVents

Re: Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)

Posted: Sunday 08 November 2020 13:36
by waaren
besix wrote: Sunday 08 November 2020 13:19 After your suggestions I changed the script and this is probably what I expect. I don't know why I made it so complicated myself.
Your rule

Code: Select all

'every 2 minutes and between 4 minutes after sunrise and 58 minutes after sunset'
Use an unsupported syntax.
If you want the script to be triggered every 2nd minute between 4 minutes after sunrise and 58 minutes after sunset, the rule should be

Code: Select all

'every 2 minutes between 4 minutes after sunrise and 58 minutes after sunset'
If you want the script to be triggered every two minutes 24/7 and every 1 minute between 4 minutes after sunrise and 58 minutes after sunset the rules should be

Code: Select all

'every 2 minutes',
'every minute between 4 minutes after sunrise and 58 minutes after sunrise',

Re: Timing rule as trigger no longer works lastest beta 2020.2 (build 12554)  [Solved]

Posted: Sunday 08 November 2020 17:38
by besix
waaren wrote: Sunday 08 November 2020 13:36 If you want the script to be triggered every two minutes 24/7 and every 1 minute between 4 minutes after sunrise and 58 minutes after sunset the rules should be

Code: Select all

'every 2 minutes',
'every minute between 4 minutes after sunrise and 58 minutes after sunrise',
thanks a lot for your help. Your last tip is what I needed