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/ 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:

@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

  - 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.

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.

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

alias: Prog Radiateur chambre parentale
description: “”

  • platform: state
    • input_boolean.commande_radiateur_chambre_parentale
  • choose:
    • conditions:
      • condition: state
        entity_id: input_boolean.commande_radiateur_chambre_parentale
        state: “off”
      • 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”
      • 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?

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.