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

I just read in the changelog for 5.3.3 that _last_regulation_change would now behave differently:

Only modify _last_regulation_change if new regulation is sent to thermostats by @ikoz in Only modify _last_regulation_change if new regulation is sent to thermostats by ikoz · Pull Request #351 · jmcollin78/versatile_thermostat · GitHub

I am not so familiar with the code of VTherm, could somebody outline the difference to previous versions?

It was just a bug. last_regulation_change could be change but no change have been sent (due to throttling). Nothing important I guess.

hey :slight_smile:
I was using better-thermostat for a while. It worked quite nice. However I also wanted to try VTerm. I’m not totally convinced yet, but I guess I like the approach :slight_smile:

My setup:

  • controlling Avatto thermostats over climate
  • I have an external temperature and contact sensors

There are two features I’m looking for and as my third point a misconfiguration problem:

  1. Is there a way to calibrate the local temperature of the TRV by VTerm? I really liked that feature in better-thermostat. Maybe I just didn’t get the naming

    1.1. If not, I would think about an automation that calculates the calibration and sets it. If I would do that, can there be an interplay with VTerm? Or in a more general way, does the local temperature calibration affect the calculated values for VTerm?

  2. Is there a way to have a different delay values for opened/closed state of my binary_sensor? Turn off thermostat after x seconds, but turning back on with a larger delay?*

  3. I still have issues to get the regulation settings. The bedroom is the coldest room, however the regulation is worst. Maybe my first wrong approach was to use “Self regulation” initially?

Here are my current settings:

Going to switch to no self-regulation now and hope to have progress. Before it was:

Advanced config is default:

_
*I’d hope to save energy by that. Normally, there is no need to turn on the radiator after an impact ventilation. After some minutes, the temperature usually get’s into “equilibrium” quite close to the preceding value. So if any, a small heat up is sufficient

Hello @lutz108 ,

Yes. You have an option in the self-regulation options, that allow to “use the internal temperature” of your device if it has one. With that option, VTherm will add the offset between room temp and device temp to each target temperature send to the device.

No. In the real life it is not really necessary.

To be sure of what happens, I need your VTherm attributes (Development Tools / States, copy/paste attributes formatted with </>) and regulation graphs as explain here: versatile_thermostat/README.md at main · jmcollin78/versatile_thermostat · GitHub

Is your “Schlafzimmer current temperature” the external temperature sensor (ie the room temperature) or the intern device temp ? It is look like internal temperature.

1 Like

Thanks already and in advance :slight_smile:

I hope the graphs are usable. With self regulation:

After turning off self regulation. The thermostat/climate entitiy was off this afternoon.

and the attributes of climate.schlafzimmer

hvac_modes: auto, heat, off
min_temp: 14
max_temp: 24
target_temp_step: 1
preset_modes: none, frost, eco, comfort, boost
current_temperature: 20
temperature: 18
hvac_action: heating
preset_mode: none
is_on: true
hvac_mode: heat
type: null
is_controlled_by_central_mode: true
last_central_mode: null
frost_temp: 14
eco_temp: 16
boost_temp: 23
comfort_temp: 21
frost_away_temp: 14
eco_away_temp: 17
boost_away_temp: 17
comfort_away_temp: 17
power_temp: 13
target_temperature_step: 1
ext_current_temperature: 13.6
ac_mode: false
current_power: null
current_power_max: null
saved_preset_mode: none
saved_target_temp: 17
saved_hvac_mode: null
motion_sensor_entity_id: null
motion_state: null
power_sensor_entity_id: null
max_power_sensor_entity_id: null
overpowering_state: null
presence_sensor_entity_id: null
presence_state: null
window_state: off
window_auto_state: off
window_bypass_state: false
window_sensor_entity_id: binary_sensor.opening_schlafzimmer
window_delay_sec: 30
window_auto_enabled: false
window_auto_open_threshold: 3
window_auto_close_threshold: 0
window_auto_max_duration: 30
window_action: window_turn_off
security_delay_min: 60
security_min_on_percent: 0.5
security_default_on_percent: 0.1
last_temperature_datetime: 2024-02-14T21:20:03.135322+01:00
last_ext_temperature_datetime: 2024-02-14T21:17:36.391156+01:00
security_state: false
minimal_activation_delay_sec: 10
device_power: 0
mean_cycle_power: null
total_energy: 0
last_update_datetime: 2024-02-14T21:22:04.271063+01:00
timezone: Europe/Berlin
temperature_unit: °C
is_device_active: true
ema_temp: 19.86
is_used_by_central_boiler: false
is_over_climate: true
start_hvac_action_date: 2024-02-14T20:54:41.217310+01:00
underlying_climate_0: climate.thermostat_schlafzimmer
underlying_climate_1: null
underlying_climate_2: null
underlying_climate_3: null
auto_fan_mode: auto_fan_none
current_auto_fan_mode: auto_fan_none
auto_activated_fan_mode: null
auto_deactivated_fan_mode: null
auto_regulation_use_device_temp: true
friendly_name: Schlafzimmer
supported_features: 401

The thermometer sure is the external device:
image

@lutz108 , this is really, really weird. This is like regulation (which is working) does nothing. The device heats even if target is much under the target temp.

Can you please add the climate.thermostat_schlafzimmer internal temperature and target temperature on the graph ? We will see how your device behave.

Can you post me also the attributes of the TRV (in Development Tools / State) please ?
You should see a current_temperature and a temperature attribute.

Are local_temperature and current_temperature equal?

[...]
  - entity: climate.thermostat_schlafzimmer
    attribute: local_temperature
    yaxis: y1
    name: local T°
  - entity: climate.thermostat_schlafzimmer
    attribute: current_heating_setpoint
    yaxis: y1
    name: setpoint
[...]

and the attributes of climate.thermostat_schlafzimmer

hvac_modes:
  - auto
  - heat
  - "off"
min_temp: 5
max_temp: 35
target_temp_step: 1
current_temperature: 18
temperature: 18
hvac_action: idle
battery_low: false
child_lock: UNLOCK
current_heating_setpoint: 18
error: null
frost_protection: "OFF"
linkquality: 119
local_temperature: 18
local_temperature_calibration: 0
running_state: idle
scale_protection: "OFF"
schedule_friday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_monday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_saturday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_sunday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_thursday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_tuesday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
schedule_wednesday: 06:00/21.0 08:00/16.0 12:00/21.0 14:00/16.0
system_mode: heat
friendly_name: Thermostat Schlafzimmer
supported_features: 385

The plot clearly indicates that it’s using the internal temperature when heating is triggered :thinking:

Also there is no Temperature calibration set

I’ve removed better-thermostat and versatile-thermostat from my HACS, checked if any related resource existed and reinstalled VTerm. Let’s see how it will behave this weekend. However “Schlafzimmer” went off immediately…

Regarding local_temperature_calibration, all thermostats are at value of 0. So maybe there is some miscommunication?

I’ve also installed mqtt explorer to check the messages.

Hi
I just received my modul NodOn SIN-4-FP-21 ZIGBEE 3.0, added to zigbee2mqtt, but I don’t found them on Versatile.
Somebody tell me I need to create a Switch Helper and after that create automation to push module to comfort when switch is on and eco when is off.
But don’t know how to do that.
Thanks.

hello,
i had the same problem and solve it using a virtual swicth and an automation, see below

alias: Prog Radiateur chambre parentale
description: “”
trigger:

  • platform: state
    entity_id:
    • input_boolean.commande_radiateur_chambre_parentale
      condition:
      action:
  • choose:
    • conditions:
      • condition: state
        entity_id: input_boolean.commande_radiateur_chambre_parentale
        state: “off”
        sequence:
      • device_id: 8336a831708c8aa239f76087042707ce
        domain: select
        entity_id: 30f368340394228d33fe850f4c206d28
        type: select_option
        option: “off”
    • conditions:
      • condition: state
        entity_id: input_boolean.commande_radiateur_chambre_parentale
        state: “on”
        sequence:
      • device_id: 8336a831708c8aa239f76087042707ce
        domain: select
        entity_id: 30f368340394228d33fe850f4c206d28
        type: select_option
        option: comfort
        mode: single

I’m thinking about using this thermostat implementation that seems really really complete to me.

Assuming that I already know how much time before I had to heat up a room to find it with the exact temperature, how can anticipate the heating per-room using this integration? Maybe forcing room presence in the right moment?

1 Like

Hello @JanickGers85 ,

What I do, it do force presence, when I leave the working place. So that heating will start a few in advance (one hour for me). But this is not totally satisfying: you have to use a dedicated sensor, when I’m on another place that the working place, it doesn’t work, …

Is there a way to have more than four entities controlled by the same VTherm? I have a room with five radiators, with each having its own TRV.

I don’t get something. I have set versatile thermostat to control my AC via climate. I have set it to light self-regulation, ac-mode and use internal temperature. All of that is working great, I can heat and cool. I have set my mode temps and set it to comfort mode, which is 23⁰C.

Now problem is that it never starts, unless I do it myself. Almost never switches it off either (one time it switched it off, not sure exactly why).
For example, my sensor was reporting 21.5⁰C and with 23⁰C set temp, AC was still off. Once started, it altered original climate temp to ensure heating and once 23⁰C was reached, original climate set temp got reduced to stop heating. But it didn’t switch off, just keeps going. Actual AC stopped pump and kept fan running, basically started manage what to do when no heat is asked. It kept running like that for an hour or more, until I changed vtherm to auto mode and still nothing changed. After another half hour I just turned it off manually.
So is that expected behaviour? I was under impression that vtherm suppose to start and stop AC by itself.

Also, are there hysteresis settings? or are these hardwritten? if so, what are they?
Thank you.

Versatile Thermostat never start of stop the thermostat unless for opening window detection.

It is a human decision to turn on/off heating. This to avoid an auto start of heating when you don’t want it.

Great integration Jean-Marc, I set it (and the scheduler) up last week and used it over the weekend and it largely worked as expected! I’ve been looking for a way to simplify my hvac management automations, and this looks like a keeper, will allow me to retire a dozen+ node red automations. Thank you for providing to the community!

I wanted to share my lessons learned as an American using Versatile Thermostat with an American-style central hvac system (Nest smart thermostat with central AC and central gas furnace). As the documentation is written with an eye towards European-style heating systems (what the heck is a ‘TRV’ and why is AC an after-thought??), I had to do some trial-and-error to get it configured to work as desired, and wanted to share some pointers with Americans looking at this to simplify their HVAC automations.

First, level setting my situation. I have a single Nest thermostat integrated into HA, I have window sensors on all my windows, and I have a pretty solid presence detection setup. I had a page of node-red automations that:

  • turned off/on my hvac when any window is opened/all windows are closed,
  • set my hvac target temps to higher/lower when my house is occupied or vacant
  • set my hvac target temps to higher/lower temps at night when we’re sleeping (we prefer a colder house when sleeping).
    Versatile Thermostat (with the Scheduler integration) does all of these things for me.
    Note: These comments assume you already installed Versatile and the Scheduler companion and their cards via HACS.

First, for those with central HVAC controlled through a smart thermostat like Nest or Ecobee, its important to select the “thermostat over climate” option when you add the new VT integration.
In the ‘Main Attributes’ screen, you really just need to provide a name (your choice) and the room temperature. You can use your Nest/Ecobee’s temperature entity. Ignore/use default for the Last Seen Room Temperature, Cycle Duration, and Device Power (I don’t believe they’re relevant to central HVAC systems). I left the 3 checkboxes as their default. ‘Enable control by central entity’ box checked and the other two (use additional central main config, used by central boiler) unchecked. I don’t know what any of those 3 actually do, or if they’re relevant to central hvacs.
On the 2nd main attribute screen, provide a sensor that tracks the outdoor temperature. This is just from your local weather integration (or if you have an outdoor temperature sensor in your HA). I use PirateWeather for my local weather. I don’t think this is used by VT-over-climate, but it’s a required field so feed it something. For the Min and Max temperature allowed, enter the absolute min/max temperatures you’d ever want to set your target temps to (it accepts Fahrenheit just fine). I have pets that are home alone, so I put 64 and 78 in here. If you are fine with hotter/colder extremes, put them in there. For Temperature Step, just put 1 (most smart thermostats on Fahrenheit only go to the single digit unlike our European friends with their tenth of a Celsius precision).
For Features: I use Window Detection and Presence Detection and unchecked motion and power management. I didn’t want motion to be considered (I’m not always moving in front of my Nest), and I don’t know what power management does.
For Underlyings: This is where you actually point the VT integration to your Nest/Ecobee/whatever smart thermostat. Just select your ‘climate.nest’ or whatever in the 1st underlying climate and leave the rest blank. (Presumably if you have multiple thermostats, you’d add them here, but I have no experience with that). Select “AC Mode”. I kept the next 4 inputs as default (“no auto-regulation”, “0.5” reg threshold, “5” reg min period, “high” auto fan mode). I checked the “use internal temperature of the underlying”. Don’t know what it does, but seemed harmless and maybe it would simplify stuff as my Nest provides its own temp sensor.
For Presets: No clue what this does, I unchecked it . I think i tried checking it once and didn’t see any difference. VT has Comfort, Boost, and Eco presets which I’ll talk to at the end of this post.
For Window Detection: Give it your input_boolean that is on when any window is open, and off when all windows are closed (I had already created one for my node-red automations, a simple template sensor that turns on/off based on the state of my group.all_windows that I built around all my window sensors). Uncheck the ‘use central window config’ (again, no clue what this does). On the 2nd Window Detection screen, set your time delay for how long a window has to be open for VT to turn off hvac (I set mine to 10 seconds for when I wanna open a window to let a bug out without power cycling my hvac). Action should default to turn off which is correct.
For Presence Detection, leave the ‘use central presence temp’ unchecked. No clue what it does. On the 2nd page, provide your ‘presence detected’ input_boolean (similar to windows above, just create a template sensor based on all of your residents home/away status).
For Advanced parameters, ignore it, doesn’t seem relevant to centrally-controlled HVAC systems.

At this point, the final line should read ‘all done’, click that and it’ll create and save.

Setting up your temperature targets:
Now pull up the integration/device page for your VT and you’ll see a list of “Controls” entities like Boost, Boost ac, Boost ac Away, Boost away, Comfort, Comfort ac, Comfort away, etc. The key here is to understand that you have three ‘presets’ (Boost (rocket ship), Comfort (couch), and Eco (leaf)) and then 4 target temperatures for each preset. So Comfort is your heater target temp for when you’re home and in comfort mode. Comfort ac is your AC’s target temp for when you’re home and in comfort mode. Comfort away is your heater’s target mode when you’re away (likely lower than your when-at-home temp), and Comfort ac away is your AC’s target mode when you’re away (likely higher than your when-at-home AC target). Then the same 4 target temp options for Boost and Eco presets which you can use or ignore as you want.
For example, my Comfort AC is 72, and my Comfort AC Away is 78. This means when VT determines I’m home, it’ll set my Nest to 72/Cooling. When VT determines I’m away, it’ll set my Nest to 78/Cooling. Similar concept for setting my heat with Comfort (70) and Comfort Away (64).
You cannot change the name or icons, so you’ll just have to choose a preset for a particular situation. Personally, I use ‘Comfort’ for my normal, during the day temp ranges. I use ‘Boost’ for sleeping when I want it colder, and I don’t use ‘Eco’ at all.
VT will auto-switch between, say, Comfort and Comfort away when you have your hvac set to Heat and you leave/return. Or it will auto-switch between Comfort ac and Comfort ac away when you have your hvac set to Cooling and you leave/return.
Basically, this is where you set your target temperatures for the various permutations of home/away, sleep/daytime.
I ignore Frost cause it’s not relevant to my home, but I assume you could set both to the minimum temp range you specified.

That’s the basics. Now you should have a thermostat that sets higher/lower temps based on your presence, and turns on/off based if your windows open/close.

Setting up your Schedules (to change between presets at set times)
The next is setting up the Scheduler integration helper to change between presets. I have mine setup to go to ‘boost’ mode at 10pm, and then back to ‘comfort’ at 530am because that’s when I generally go to sleep and wake up and I have the boost temps set lower cause I like to sleep in a cold room.

That’s way too much info, but hopefully this helps someone with US-style central HVAC that is struggling to understand which configuration items are relevant/needed.

Nice report ! Thank you for this.

I hope you install the last releases which fixes some issue with °K unit.

I’ve been using Versatile Thermostat over two Zwave Thermostats for a couple of months now with great success.

But recently I noticed that after a while the thermostat card may be showing no presets (all grey). In this situation, it also does not respond to occupancy changing by changing temperature set point, however the green occupancy icon does toggle correctly.

But reloading the Versatile Thermostat integration will immediately return it to normal operation.

Not seeing anything unusual in the logs, and not sure where to look further?
Any ideas?

Is VTherm able to handle an AC for cooling, combined with a TRV for heating?

I have added both as underlying devices, but I can only switch between Off and Heat in the VTherm climate entity. Do I have to configure anything to get a Cool or Auto Mode?