Rule compare dayTime as trigger

Tags: #<Tag:0x00007f6173d7ea70> #<Tag:0x00007f6173d7e9a8>

I have a var lightOn of the DateTime format in my .rules file at which I want to triller the rule.
Unfortunately I’m unable to find a solution to do this. My approach with

   Time is lightOn

is not working.

I would be very happy about helpful suggestions on how to solve this problem.

You’ll want to look at various “alarm clock” examples for the techniques to carry out this task - “do something” at a time set by an Item state.

You cannot directly do what you are trying - run a rule at a variable time.
But you can run a rule when your Item changes (or once each day etc.) and have that rule set up a future event at the given time.

Adding to what rossko57 mentioned you can also have a rule turn on/off something at a random time.

Example for randomly turning lights off at a set time:

Group gExternalLights "External Lights" <light> 

Switch	Light_Porch	"Porch Lights [%s]" <light> (gExternalLights)
Switch	Light_Patio	"Patio Lights [%s]" <light> (gExternalLights)
Switch	Light_Deck	"Deck Lights [%s]" <light> (gExternalLights)


rule "Turn External Lights off from 23:30"
	Time cron "0 30 23 ? * * *"
	gExternalLights.members.forEach[ temp | 
		var int randomTime = (new java.util.Random).nextInt(1800)
		createTimer(now.plusSeconds(randomTime)) [|

I use this so all lights do not go off at the same time every night so it never appears that I am using automation and not home.

What if you’re still awake (and outside)…? :smiley:

As indicated by the other posts, you can’t trigger a Rule like that. However, also as shown, you can use Timers and a Rule that triggers at a certain time every night to recreate the Timer based on the value of lightOn.

I have a couple of reusable scripts in Jython that would do this for you. First there is item_init which lets you ad metadata to an Item to initialize it at startup. So you could create a LightOn Item DateTime Item and initialize it to an arbitrary time.

Next you could use the ephem_tod either as is or use it as inspiration to create something simpler. This similarly lets you set Item metadata on that same LightOn Item and it will sendCommand to a TimeOfDay Item. You can then use that to trigger your rule.

Once both are installed all you need to do is:

DateTime LightOn { init="16:15:00", etod="LIGHT-ON"[type="default"]

And make your rule:

    Item TimeOfDay received command LIGHT-ON

No coding required. But it does require setting up Jython with the Helper Libraries and copying the above to your config.

1 Like

Thank you all for your answers. I used a timer that triggers the needed action at lightOn.