Very simple virtual thermostat piston


#1

I hooked up my heating system to a Fibaro relay, so now I’m trying the mimic my old thermostats’ settings (with the added benefit of it not activating in Away Mode now). All I need help with is the first block really, once I get that I can copy that block to other time frames during the day. For testing I can obviously trigger and turn on the heater (Switch 44) at 0600 am everyday. Easy trigger.
What I’m NOT able to achieve is satisfy a set of parameters between a set time to control the heating… dynamically.

2) What is the expected behavior?
What I’m trying to achieve is this…

IF time is between 6am and 12 pm
IF {House_Temp} is less than {Desired_Temp}
IF Location mode is either Home or After Sunset.
Turn on Switch 44.
Otherwise, if any of these IF’s is not active, turn off Switch 44.

And I would like my presence sensor to leave during this time and come back, and still activate/deactivate Switch 44 if needed.


#2

Do you want Switch 44 to turn on only when all these are true, or if any of them are true?


#3

Hi @michicago yes if they are all true , then turn on Switch 44.
Or they all become true, turn on Switch 44.

I could do a trigger Time trigger at 6am, and check all the conditions, but that wouldn’t work if Mode changed to Away, and back to Home during those hours. Is execute every minute my only option?


#4

You have lots of different conditions to consider. Here is one option I threw together. You might also need to look for mode changes if you are concerned about that but take a look and see if this does what you need. I didn’t remove or update your time based directives but note that this will turn off the heat in the evening if you leave (and back on when you come back).


#5

Thank you @guxdude this looks like the kind of advanced piston I was looking for. I’m going to import it and start testing it out. One question on the very first IF statement, I’m wondering if " IF Thermostat 1 temperature drops below {Desired Temp}" will trigger at 6am and 1630? IF Thermostat 1 is already below the {Desired Temp}? Should I change that to “IF Thermostat 1 IS below {desired Temp}”? I’m looking forward to using it now. Will report back…


#6

This will not trigger at the given time which is why I left your specific time events in. If you change to ‘is’, then it won’t trigger properly at the in between times. Essentially, you will have several independent triggers: temperature goes high, temperature goes low, someone arrives or leaves, 6 AM, 4:30 PM, and 10 PM. This is the only way I could figure to cover all your cases.


#7

What you’re trying to do should be very simple unless I’m missing something… this should do it. You can make it so your desired setpoint is a variable again, but with it only used in one location in the piston it doesn’t make it any easier to edit - just adds an unnecessary process step.

You can add another condition in the top to restrict by home modes (Home, After Sunset, etc.) but I don’t know if it’s necessary since you’ve already got time restrictions and presence sensors in the piston. I just left them out to keep it simple and avoid making it fail to run when you expect it to.