Versatile Thermostat: a full feature thermostat (energy, door/window, presence, motion, preset, ... management)

Hi Jean-Marc, can you see a way to control a 2-speed fan? My fan (actually it’s an evaporative cooler, but details are hidden by virtual switches) is simply exposed as 2 switches: Low (on/off) & High (on/off). I’m wanting to say if difference between actual temp & target temp is (e.g.) 0.5 - 2.00 degrees, turn on low fan. If difference is over 2.00 degrees, turn on high fan.
Thanks!

Hello, have a look to the release 3.3.x it does exactly what you expect :innocent:

Hello @blaal02 , no sorry I don’t know how to do that simply. This is a very specific need. VTherm was really not developped to control fan but to control heater or AC.

You have to do that with your own automation (which should be quite easy to do).

Hi @jmcollin,
My use case is an Air Conditioner, but maybe a slightly unusual one (though evaporative/swamp coolers are quite common in the US Desert Southwest - UT, NV, AZ). I’ll have a go at it!
However, the more general case of heating & AC having high & low settings is quite common with US forced air systems (and becoming more so). The common “Smart” hardware thermostats here (ecobee, Nest… ) have 2-stage heating/cooling support.

If someone succeeds to do a PR it will be welcomed but I will have no way to test it. So there is nothing I can do for your use cases.

Sorry for that.

Not testable - That does make it harder!!
I’ll see if I can come up with anything good enough to share.
Thanks, Sandy

Dear Jean-Marc, after having spent some time with Versatile thermostat, I have a few questions & suggestions:

  1. Please add a note to all configuration options: Which of them are relevant for both thermostat types (thermostat over switch, thermostat over another thermostat), which only for one of the two? E.g. „Device Power“, „Power percent to use in security mode“, „Power management attributes configuration“ is only relevant when controlling a switch but not when controlling a TRV. This makes it easier to identify what needs to be configured and what not. Or maybe even hide/grey out options that are irrelevant to the chosed mode.
  2. Could you add some words of explanation in the configuration, e.g. „Minimal activation delay“, „Cycle duration“, „Use power management“ are options I did not understand easily.
  3. I suggest to rename the two thermostat types to „Control a thermostatic radiator valve (TRV)“ and „Control a heating system with on/off switch (e.g. electric heater)“ because “thermostat over another thermostat” is just too confusing.
  4. When configuring window/motion/power/presence management (checking the boxes at the first config page, then just clicking submit without filling in anything) a lot of entities are created, which then are not deleted when reconfiguring and not checking these boxes. Not sure if this is a bug or a limitation in HA, but it would be nice if there is a “cleanup” of the entities when completing the configuration
  5. I suggest renaming the entity “last temperature date” to “last temperature measurement”
  6. It would be great if you could gradually replace the french screenshots in the documentation by english screenshots.
  7. Is „motion delay“ in motion detection the time until a thermostat will be turned to comfort when motion is detected or the time until a thermostat will turn to eco when no motion is detected? Or both? That’s unclear and should be explained. Also, I’d love to set both options independent of each other: I’d want to quickly go to comfort but wait for 10 minutes of inactivity before going to eco (e.g. when reading a book or watching tv I don’t move so frequently).
  8. If I change a value on my TRV manually, should this change be reflected in Versatile Thermostat? Currently, I don’t see any changes in the Versatile Thermostat entity, although the underlying entity does show the change properly. This feels like a bug.
  9. For how long should vTherm keep a manually set temperature before reverting to comfort/eco/…modes?
  10. When using vTherm to control a TRV, what does the “cycle” do? vTherm sends the target temperature based on eco/comfort/boost to the TRV and it stays that way until changed, so what’s the cycle for? Same question for the “minimum activation delay”. Isn’t that something that’s only relevant for central heating systems but not when just adjusting the target temperature on a TRV?
  11. Can you suggest any way to easily switch multiple rooms at once from eco to comfort/…? How would I switch a room to another preset from e.g. a template? I didn’t see that in the documentation.

Thanks a lot for all your work!

Hello @aleco ,

Thank you for your suggestion. I will try to better explain the 2 types in README in the next release. I got so many question about that.
Basically:

  1. VTherm over a switch: is this type, the VTherm is controlling directly a switch. The control is done by calculating a percentage of on vs off state at each cycle. If the room is cold, the percent will be near 100%. The percent is decreasing when temperature of the room is increased. This is very suitable for electrical radiator directly controlled by a switch,

  2. VTherm over a climate (and not over a thermostat): in this type, VTherm is controlling an existing climate entity (the underlying climate) that controls the heating device. So VTherm doesn’t see the heating device directly but send preset temperatures, starts or stops the underlying climate. It that case, you can considering adding the feature of VTherm to your existing installation without having to change it. This is suitable for all cases that are not possible with the VTherm over switch. I use it for a reversible AC system typically. It can be suitable for TRV, AC, floor heating system, pellet system, …

I hope this is more clear.
I keep your others questions to add response in the README, the explainations above should give you many answers.

Jean-Marc, thanks for the explanation. As for the two general modes:

I do find it important to visualise which of the available configuration options are relevant for which of the two modes.

Regarding the explanation: While I’m not a native speaker myself, I’d suggest to use the following for the two modes in the documentation and/or configuration screen:

  • Control of a switch: Versatile thermostat will regulate the length of a heating cycle and the pauses in-between by controlling a binary on/off switch. This mode is e.g. suitable for an electrical radiator controlled by a switch.
  • Control of a thermostat: Versatile thermostat will regulate the target temperature of a climate entity. Common examples for this mode are the control of thermostatic radiator valves (TRV), air-conditions (AC), floor heating systems and pellet heating.

Besides that, I’m looking forward to the solution of three questions/issues, mentioned above:

  1. Can motion detection turn the heating on instantly but delay turning it off for e.g. 10 minutes? I don’t have mmWave presence sensors and my motion sensors turn off when one is e.g. sitting at a desk. I don’t want my TRVs to switch between eco and comfort every time the sensor detects motion or stops detecting motion, as changing the valve is loud, uses lots of battery power and isn’t good for the flash memory of the TRV. So I’d want to switch to comfort as soon as I enter the room but then it should stay at comfort even if I don’t move for 5-10 minutes.
  2. What happenes when people adjust the target temperature manually on a TRV? E.g. my child, his grandparents or some friends. For how long will Versatile Thermostat keep this target temperature, when will it reset to a schedule/programming? Can I configure this duration?
  3. How do I change a VTherm instance mode to eco/comfort/boost? Is this the way? It’s missing from the documentation.
action:
  - service: climate.set_preset_mode
    data:
      preset_mode: comfort
    target:
      device_id: [redacted id of the device]

Thanks again!

Yes. There is two parameter you can use:

  1. There is delay before change describe in the documentation: GitHub - jmcollin78/versatile_thermostat: A full featured Thermostat for Home Assistant: presets, window, motion, presence and overpowering management
    The delay parameter gives you the ability . The detector should on or off during this delay to switch the VTherm,
  2. The minimal activation delay, which prevent to switch on/off two often. This parameter is in the last configuration page (advanced): “minimal_activation_delay”: “Minimal activation delay”. Let say you put 5 min, there an activation could not be less than 5 min.

When switched to manual, a VTherm stays on manual preset until another preset is set. If you have a Scheduler (like me), the manual will end at the next schedule event (which set a preset on my configuration)

Like any other Thermostat in Home Assistant: you click on the preset you want, or you call the climate.set_preset_mode service. You example seems good.

I suggest you give it a try and it will be more clear on how its works. It is sometimes not easy to describe things in documentation (and my English is not my best skill …)

Thanks, so if I want to heating to turn on 1 minute after detecting motion and stay on as long as motion is detected while allowing an inactivity for 15 minutes I’d use:

Motion delay (seconds): 60
Minimal activation delay (seconds): 900

Is that correct? Because the way I read the documentation the “minimal activation delay” only defined the minimum duration of a cycle but not the situation I’m describing, e.g.:

  1. room empty: heating is off
  2. someone enters the room, motion is detected: a timer starts
  3. motion is still detected after 1 minute: heating turns on
  4. no motion for 12 minutes: heating stays on
  5. motion again: timer resets
  6. no motion for 14 minutes: heating stays on
  7. motion again: timer resets
  8. no motion for 16 minutes (so above the 15min limit): heating turns off

As for translations, I do have a friend that is a professional translator of technical documentation, so I could maybe be of assistance. It might result in a better quality if you’d write the documentation in french and let others translate it.

As for experimenting with the setup, it’s not so easy as I am in the planning phase and still need to purchase a lot of equipment (e.g. cheap motion sensors for all rooms).

And as for the manual switch, there seems to be a bug then, as in my case the underlying climate entity updates in the lovelace UI when changing the temperature directly on the TRV, but VTherm does not update the current target temperature in the lovelace UI.

Right !

Not exactly, the VTherm doesn’t switch itself on or off but the preset is changed when a motion is decteted for a period. But your case is still right.

This is not mandatory. It is may be more suitable to use the presence sensor in that case. It’s working well with a cumulative presence detector like this (in templates.yaml):

- binary_sensor:
    - name: home_occupied
      unique_id: home_occupied
      state: "{{is_state('person.jmc', 'home') or is_state('person.chr', 'home') or .... }}"
      device_class: occupancy

Then you can use this binary_sensor as ‘presence detector’. I use the motion sensor for rooms in which I go rarely (music studio for instance and my desk). Beware that motion sensor goes off if you are in the room but not moving.

I just test it and you are right. Chaning target temp on the underlying thermostat doesn’t update on VTherm. This is not really a bug because it was never expected like to work like this (VTherm keeps it preset) but this could be an interesting feature. I have opened a feature ticket here: In VTherm over climate, changing target temp on underlying should update the target temp in the VTherm · Issue #110 · jmcollin78/versatile_thermostat · GitHub

I will try to implement it next week.

Jean-Marc, thanks. In that case I think the documentation and the naming can be improved. I suggest the following to make clear, what the settings are for:

  • motion_on_delay: Switch heating mode to higher heating only when motion is detected for at least XXX seconds
  • motion_off_delay: Switch heating mode to lower heating XXX seconds after last motion detected

Also I wonder why they are on two different configuration panels, shouldn’t they both be on the same panel?

That’s exactly what I’m hoping to prevent with the above setting. Heating should stay on for a while, even if there’s no motion all the time.

Well, yes and no. In my case there are rooms in the house in which I stay for a while with only little movement (working, reading, watching TV,…). But sometimes when I’m busy I don’t use these rooms for days. So I want to control these with motion sensors.

Thanks for fixing it. I do think the dashboard UI should always display the target temperature which is currently set.

Thank you @aleco for your suggestions. The best thing you can you do is to open a PR direclty on Github with the suggestions you provide me. It will make this change much more easier for me.

This is fixed in the 3.4.0 release. Please have a look and let me know if it is ok from your point of view.

I’m not yet able to provide a pull request as I’ve only been using HA a few weeks until now and am neither familiar with python nor Jinja. But I opened two issues on Github.

Yes, it works, thanks a lot!

I was talking about a PR on the README.md

Hi @jmcollin, just fint this thermostat and it looks interesting as I would like to optimize my heating.
I’v already read the docs and it seems very clear, my gas heater has on.of contact, so that’s OK. All heating is underfloor (water) heating.
Then my house has multiple zones, each with their own valve (also on/off), so the logic would be if one valve opens, I need to switch the heater on.
So I would have 1 thermostat per zone.
Now comes the issue, is there any way to distribute the heating demand over time ? For example, if all 3 zones request 33%, it would be interested to first open zone 1 for 1/3 of time, then zone 2 and then zone 3. Else there is the risk that they open simultaniously.

Hello @GeertV ,

You may not have seen it but it is already implement the only think is that all switch should be added to the same VTherm. There is no way to make all VTherm communicate to distribute the heating. Each VTherm is independant.

Other you can do (it do it myself), is to use the power regulation : you define a maximum of power, and when VTherm wish to activate a switch it checks before if power is available. You will find this in the documentation at power management (or energy management).

Many thanks for your help, multiple switch on 1 thermostat I understand, but I will have multiple thermostats each with their switch. So It would be nice if they could distribute their starting time for example (master-slave).
I don’t see how I could use the power regulation, it’s water heating (with gaz).

Unfortunately it is not possible for the moment and not easy to do (communications channels between mutlitple VTherm taht should share informations).

yes :joy: