Checking logic periodically to re-trigger action on Heating


I’m trying to setup some heating automation using PLEG and irule :

  1. Use the Fibaro sensors I have as triggers for turning the heating on.
  2. I’m using a multi switch to determine which sensor is being used as the determination, so for example I press the Lounge button on irule which will make the temperature sensor active inthat room.
  3. To determine the setpoint temperature I want to control the room at I use an input variable onirule which asks me to enter the desired temperature. This in turn sends the setpoint to the multi string addon.
  4. I can then do a simple multi string set point < actual temp on the fibaro sensor to trigger the heating or not as the case may be.

The question I have is… how do I test the logic every 30 minutes and resend the command to the vera as the heating shutdown down automatically every 40 minutes or so. Ive tried :

cheatingon; now and
!cheatingon; now

but both these return “true” if I add the “now” for some reason.

I would also like to have a manual timed heating routine so set the heating to stay on for 1 hour, 2 hours, and 4 hours too and I’m not sure how to do this.



This post on re-sending the last command every X minutes works for me:,28809.msg206151.html#msg206151

For 1 hour, 2 hour , 4 hour manually triggered ‘boost’ actions, I use the standard Vera scenes instead of PLEG.

You need to review the getting started guide to see how sequence expressions work.
HINT: 1) Sequence Expressions only look at timestamps, not the current value of the input (i.e. it does not care if the input is TRUE or FALSE)
2) NOW is always after or the same as some previously detected timestamp.

You could have a MULTI-STRING variable that contains the duration of your MANUAL timer.
Then have a MULTI-SWITCH trigger the manual operation.

Trigger ManualHeat - tied to multi-switch
Property ManualTime - set to the appropriate Multi-Swtich Value
Schedule ManualTimer - On-Auto Trigger, Off Interval 1 minute (we will override it later)

ManualOn ManualHeat
ManualOff !ManualHeat

ManualOn Send the heat on comand(s)
Trigger ManualTimer r with a timer value of {(ManualTime)}
ManualOff Send the heat off command(s)


Say you have some condition:

HeatOn Temp < 72

And you want the actions for HeatOn to be sent every 30 minutes while the HeatOn is satisfied.

Then change to:
Add Input Schedule HeatTimer - On Self re-trigger, -Off interval 30:00 min.

HeatOn Temp < 72
Send HeatOn and ((Send; HeatOn) or (Send;!HetaTimer)
Turn Repeats ON for the Send condition.
Then for the Actions for Send , actually send the commands to turn on Heat, and trigger the timer HeatTimer

Send will be evaluated every time the Temp changes and HeatOn is true or every 30 minutes, which ever is shorter.

Thanks Richard, I will try something later. Ive read the guide a couple of times i tried to reference it when attempting the logic but couldnt figure it out.

Im assuming the 2 sections of the reply are for the 2 queries… thanks!

How do I use the multiswitch value to overide the 1 minute trigger, by autotrigger do you mean self re-trigger?



Yes I meant self retrigger

How do I set up the manual timer action?

“ManualOn Send the heat on comand(s)
Trigger ManualTimer r with a timer value of {(ManualTime)}”

Sorry iif im being dense!

I had a small bug … I used {(ManualTimer}) instead of {(ManualTime)} (I edited my original and your last post)

So what part are you having problems with ? ManualTime or ManualTimer ?


I dont understand how to set the maunaltimer. Do I do it from advanced menu and choose counter, like the image?

My first response:

You could have a MULTI-STRING variable that contains the duration of your MANUAL timer.

PLEG does not have any user interface other than allow/disallow. So you need other plugins to interface with the User.
Here I recommend the Multi-String plugin … It allows you to enter a Value that PLEG can detect.
The format of the string for manual time is:
SS - number of seconds, can be larger that 60, i.e. 90 is the same as 1:30
MM:SS - minutes and seconds, MM and SS can be larger that 60, i.e. 120:00 is the same as 2:00:00
HH:MM:SS - Hours, minutes, and seconds.


I understand the principle of what you describe but not how to set an action to use the multi string and incorporate it into the timer :

Trigger ManualHeat - Ive set this to a button on the multi switch
Property ManualTime - Ive set this to value 5 on my multi strong
Schedule ManualTimer - On-Auto Trigger, Off Interval 1 minute (we will override it later) See image (I think this is OK)

ManualOn ManualHeat (Straightforward even for me :slight_smile:
ManualOff !ManualHeat (Straightforward even for me :slight_smile:

ManualOn Send the heat on comand(s) (Straightforward even for me :slight_smile:
Trigger ManualTimer r with a timer value of {(ManualTime)} … What I dont know is how to do this, can you take a screen grab of an example of this bit?
ManualOff Send the heat off command(s) (Straightforward even for me :slight_smile:

Thanks (and apologies)


You do not use an Action for the MultiString … it’s a Device Property Input.

It reads the value from the MultiString variable ManualTime in order to set the timer.

You indicated you wanted to be able to change the timer value. If you do not need to change the timer value … you can hard code your delay.

To start a timer, add the PLEG device itself as the device for the action, there you will see an action for StartTimer, it has two arguments, one for the TimerName, and one to override the timer delay definition.

Hi Richard…

Now I understand, I have the timer set to the multi string and it tiggers with multi switch and runs for the time I have set… but when the timer ends the heating remains on? Ive tried to use “Random Delay” and “Off Interval” on the schedule but neither triggers the heating off.


Post a PDF of your Status Report. (There are plenty of free PDF printers).


Ive added 2 pdfs… one when the timer is active one when its complete and the ManualHeat remains true leaving the heating on.


Some changes (I previously left this out)


EndTimer: !ManualTimer

Action for EndTimer Turn Off HeatTimer (Heat TimingSwitch 7)

Great that’s done it! Thanks.