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

I plan to use Versatile with the Wiser solution (its integration within HA seems to work smoothly) for electric heater (thermostat + actuator) Does anyone already implemented that set up? I suppose I should configure a Vtherm over a climate to make it work.

Hi Daniel,

I have been using Versatile Thermostat for a few days now and I am facing similar issues with the Sonoff TRVZBs. One major problem is that the temperature adjustment through the external temperature sensor via the offset parameter is not working properly. In 4 out of 5 cases when I check, the value is either higher or lower than the actual temperature of my external temperature source. This results in either no heating or continuous heating. Additionally, the Sonoff TRVZB apparently randomly switches off (IDLE) within ~0.5 degrees of the target temperature while Versatile Thermostat still shows “heating”. Especially in the living room, where I use three thermostats, it constantly leads to one radiator being off, one being hot, and the other being lukewarm. The fact that the valve control is no longer properly addressed was not on my radar until now, but it is also a consequence.

I would like to test your workaround. So, if I understand correctly, I just need to create an automation that triggers when the hvac_action attribute changes to HEATING or IDLE. As a target, I then set the temperature directly in the thermostat to, for example, 30°C for heating and 7°C for IDLE. Correct?

What does the rest of your TRVZB thermostat configuration in the Versatile Thermostat look like? Standard? Or do I need to consider anything else besides the usual (e.g., not setting closing valves)?

By the way, is there no problem with the automation when Versatile Thermostat makes changes to the target temperature? Versatile Thermostat also writes this directly into the thermostat. For example, when switching from Eco to Comfort or when I manually adjust the temperature?

Edit: I just checked it. The automation seems to work in principle. However, Versatile Thermostat immediately overwrites the target temperature again with the “correct” preset temperature. The same thing happens, of course, when I switch to another mode (eco, comfort) or adjust the temperature. How did you solve this?

I have added the temperature of the Versatile Thermostat as an additional trigger in the automation. I now always increase the “Set Temperature” of the TRVZB directly by +5°C above the original set temperature. This ensures that the thermostat always heats and doesn’t go into IDLE 0.5°C before reaching the target temperature, while the Versatile Thermostat still thinks it’s still heating.

The initial tests are extremely promising. The automation ensures that the TRVZB states are now always consistent with those of the Versatile Thermostat. As a result, the temperature control via the valve now works perfectly. The target temperature is now maintained much more stably (+/- 0.1°C on average) and, more importantly, is actually reached. Also, all 3 TRVZBs in the living room now run “synchronously” and don’t completely diverge (one on, one off, one warm, another cold, another hot).

This must be a problem that every TRVZB user has. Why don’t others notice it? Is there perhaps some way to implement this workaround directly in Versatile Thermostat?

alias: WOHNZIMMER Temperaturanpassung TRV_WZ / VT_WOHNZIMMER
description: Temperaturanpassung fĂŒr Heizung WOHNZIMMER
triggers:
  - entity_id: climate.vt_wohnzimmer
    attribute: hvac_action
    trigger: state
  - entity_id: climate.vt_wohnzimmer
    attribute: temperature
    trigger: state
actions:
  - delay: "00:00:05"
  - target:
      entity_id:
        - climate.trv_wz_1
        - climate.trv_wz_2
        - climate.trv_wz_3
    data:
      temperature: >
        {% if is_state_attr('climate.vt_wohnzimmer', 'hvac_action', 'heating')
        and state_attr('climate.vt_wohnzimmer', 'temperature') != none %}
          {{ ((state_attr('climate.vt_wohnzimmer', 'temperature') | float + 5) / 0.5) | round(0) * 0.5 }}
        {% else %}
          7
        {% endif %}
    action: climate.set_temperature
mode: single

Hi, I’m still fighting to migrate the logic from KNX to HASS. Perhaps someone can help me 

Current situation: On KNX a cover actor is controlling my 3 valve to mange the floor heating. There is logic that steers the target temperature based on a calculated heating curve.
Achievements so far:

  • climate defined in configuration.yaml
  • cover address defined in knx.yaml (id: cover.heating)
    Is there any chance to modify VT to accept a cover id? I tried also boiler in the settings, but no way.

Thanks,

Hello @danieljclark ,

Thank you for this very interesing post. In the french forum many people seems to not need this workaround, but others have.

Does changing the target temp to a high value have some drawback like display is wrong or somethink like that ?
I think the Sonoff climate on HA will display a “wrong” setpoint then. Does the TRV display also this “wrong” value ?

If it is “heating” then I don’t think the TRVZB accepts a new position that is less open than it’s present position (or 0 for closed).

:+1:

Hello @Gregwelldone

Yes Wiser solution have been succesfully integrated. It has been done with an over_cliamte VTherm. I think you don’t have the choice.
If you read French I can send you the thread about this.

Hello @b4rRa,

Yes, When a setpoint is changed on VTherm it does two thing:

  1. send the setpoint to the Sonoff climate (the underlying device),
  2. send to valve openess percent to the valve through the opening degree number entity.

I think point 1 is useless for valve openness and does only display a correct value as setpoint.

Is there perhaps some way to implement this workaround directly in Versatile Thermostat?

This feature is not dedicated to Sonoff TRVZB. This is the point. I consider this hack like awful personaly (but I understand the point).

EDIT : one better hack is to force the calibration offset to something like -12°c to force heating. Can you check this with your hack (or direclty in the calibration entity) and remove the calibration offset from the VTherm conftguration.

Let me know. This could be taken into account into VTherm because it don’t beraks the setpoint.

Merci pour la reponse. Ou puis je trouver la discussion sur le sujet?

Hello if you don’t use closing degree, you should set it to 100

Search Wiser in this french forum or claim for help: Integration schneider Wiser à home assistant - Entraide Home Assistant - Home Assistant Communauté Francophone

Le thread principale de Versatile thermostat est ici : Nouveau thermostat type proportionnel avec gestion des presets / portes et fenĂȘtres / dĂ©tection de mouvement / gestion de prĂ©sence et surconsommation - #2720 par Jean-Marc_Collin - IntĂ©gration - Home Assistant CommunautĂ© Francophone

On y parle de Wiser.

Hello together,
I have Sonoff TRVZB (FW 1.2.1) in every room with different amount of devices per room. From what I have learned till today (latest version 7.2.2) is that I have to setup the VT with only the opening degree setup (closing degree is 100% in my Z2M settings). I also found out that the calculation of the temperature calculation runs wild after some time. So I also removed that entity from the VT settings and wrote an automation script for every room, which calculates the calibration offset and applies it to the thermostats:

alias: Kalibrierung WOHNZIMMER
description: Kalibrierung fĂŒr Heizung WOHNZIMMER
triggers:
  - trigger: time_pattern
    minutes: "*"
conditions: []
actions:
  - repeat:
      for_each: "{{ trvs }}"
      sequence:
        - variables:
            external_temperature: "{{ state_attr(vt, 'current_temperature') }}"
            internal_temperature: "{{ state_attr(repeat.item.entity_id, 'current_temperature') }}"
            calibration_offset: "{{ states(repeat.item.calibration_entity) | float(0) }}"
            new_calibration: >-
              {{ calibration_offset + external_temperature -
              internal_temperature }}
        - target:
            entity_id: "{{ repeat.item.calibration_entity }}"
          data:
            value: "{{ ([[-12.8, new_calibration] | max, 12.6] | min) | round(1) }}"
          action: number.set_value
variables:
  vt: climate.thermostatwohnzimmer_versatile
  trvs:
    - entity_id: climate.thermostatesszili
      calibration_entity: number.thermostatesszili_local_temperature_calibration
    - entity_id: climate.thermostatesszire
      calibration_entity: number.thermostatesszire_local_temperature_calibration
    - entity_id: climate.thermostatwozili
      calibration_entity: number.thermostatwozili_local_temperature_calibration
    - entity_id: climate.thermostatwozire
      calibration_entity: number.thermostatwozire_local_temperature_calibration
mode: single

This is an example for my living room with 4 heaters which are represented in 1 VT. If you want to use it you only have to change the variables section and naming/description headers. This is valve setup in vt:

Using this configuration solves all my problems :slight_smile:

Hello @schlund ,

I think you was talking about temperature offset calibration. What do you mean by “runs wild” ?

This is exactly what is done by VTherm. I don’t understant what you have to do that ? What are the triggers ?

What a strange idea
 And why does it solve your problem ? What was the problem is not clear for me.

Hello and thanks for your reply.

Problem:
I oberserved that sometimes (2-3 times a week per room) either the devices stop heating before reaching the target temperatur, also sometimes the target temperature was exceeded by more than 1.5 degrees. Whenever this happened, I was able to observe that the local temperature which is set by vt was different to the temperatur reported by the external sensor (which is set up in vt).
Example observation
actual temp: 18.6
set target temp: 20.5
local temp (trv1): 23.3
local temp (trv2): 21.6
→ heaters are cold.
same happens the other way around, local temperature lower than actual temperature causes heating way above target temperature.

Thats why I’m doing the calculation by myself with the script, which solves the problems I am observing.

Hello,

It this solves your issue, setting the calibration offset entity into VTherm should solve the issue the same way, because it does the same thing.

Hello,
I just started using Versatile and while I think I made a correct basic setup, I would like to explorer some additional concepts on this.

I’m using SonOff zigbee TRVs, so I’m using “thermostat over a climate”, selecting the native TRV climate, also using the valve direct control, so that it can setup both opening/closing degree and change the temperature offset based on an external temperature sensor.

My questions so far are:

  1. How the hysteresis works or how can be configured? Like is there a way to configure how much lower than the target temperature the room should be for the thermostat begin heating?

  2. How often the temperature calibration offset is performed? Sometimes it stays out of sync for several minutes

  3. Which is the difference between “Heating” and “Heat”?


    The second one should be Idle, based on the 2 temperatures, while the first one is still on heating mode even if the temperature is 0.1° over the target

  4. Is there a way to disable the TPI algorithm? With 5 TRVs (based on temperatures) I often have a single TRV in heating status with the opening at 50% or less (sending the circulator pump in distress). If the heating TRV is only one why not open 100% at full blast? I’m also having a different situation where I have multiple TRV open at low percentage (like 30% and 50%). wouldn’t it be correct that the proportional percentages between different valves would be recalculated on the basis of 100%? So 60% and 100%?

Thank you to everyone that will have the patience to reply.,

Thankyou all for the interesting discussion.

Wondering if there is a consensus on what’s the best setting for Sonoff TRV?

I think I have similar problem:


These 2 Versatile T. reached target temperature, but they are still on heating

Hello, for this kind of issue, you must provide the type of VTherm (over_switch, over_climate, 
).

For over_climate the hvac_action=heating comes from the underlying device (the controlled climate entity). If the underlying device doesn’t have one, VTherm tries to simulate one but it is not reliable (VTherm have no way to know if the underlying is heating or not).

For over_valve, hvac_action=heating is set when the valve open percent is > min.

For over_switch it is set when the switch is on.

Hi,
I’m using 5 Sonoff TRV in 5 different rooms.

I have 5 different over_climate configurations, as follow:

It is my understanding that the TRV climate is (should be?) entirely ignored, so that playing with the open/close degree can heat the radiator even if the climate remains on idle.

Even in this latest screenshot you can see the first TRV that it reached the target temperature but it’s still on heating

Hi all,
I’ve just managed to setup VT with 10 SONOFF TRVZB, I can now manually choose the preset mode for each TRV to trigger heating on/off. May I ask what’s best way to schedule the heating, via calendar, scheduler or any other suggestions? I’m very new to HA so would need UI access to setup. Thanks a lot in advance!

1 Like