I have purchased 3 z-wave Eurotronics TRVs and now I am trying to figure out how to put it all together (HA and the TVRs). The TRVs are installed and showing up in HA. From what I can see I have full access to valve control (amongst other things)
In each of the 3 rooms I have external temperature sensor (bluetooth) and I would like to use that sensor rather than the one that is in the TRV. With that in mind I am thinking of an automation that would look at that external temperature sensor and for example:
if the temperature is lower then target - open the valve 100%,
if the temperature is on the target - close the valve 50%
if the temperature is 2C above the target close the valve
Target temperature would be set using input number.
Maybe you can make automation to set teperature offset on TRV to match temperature of the bluetooth sensor (offset = bluetooth temp - TRV temp), leaving the rest for the device.
This way you won’t loose additional features of the TRV (like how to behave when window opens)
I’m not familiar with scripting in HA yet, so I won’t tell you how to do that specifically, but that should do the trick.
For adjusting internal themperature to external sensor; it works, but offset is limited to 5deg. I noticed situations in winter, when difference between internal measyre and externat sensor were uo to 10deg, so this was effectively screewing setup.
For linking external sensor to TRV directly; currently it is only possible via MQTT. It is described in some other topic on he forum. It requires specific configuration of TRV, obviously to accept external sensor. Then automation can be used to ‘upload’ its value to valve. Here is code I’m using:
- id: "Sync Mirek Valve to External Temperature Sensor"
alias: sync mirek valve to external temperature sensor
description: ""
trigger:
- platform: state
entity_id: sensor.multi_sensor_mirek_office
condition: []
action:
- service: mqtt.publish
data:
topic: zwave/_CLIENTS/ZWAVE_GATEWAY-zwavejs2mqtt/api/sendCommand/set
payload: >-
{ "args": [ { "nodeId": 58, "commandClass": 49, "endpoint": 0 },
"sendReport", [ "01", "02",
"{{states('sensor.multi_sensor_mirek_office') | float(20)}}" ]]}
mode: single
It is needed to adjust node ID and temp sensor name in above code. Defauls fro float is set to 20, so in case of external sensor failing, this is temperature uploaded to TRV.
Hi Mirek,
I read that discussion but unfortunately I am running z-wave JS HA addon.
The thing I struggle to understand is the whole temperature offseting on the thermostat.
How syncing that with external sensor will affect the heating?
Setting the offset on the device is sort of calibration of internal temperature setting. So for example if the TRV shows temp of 23 and actual temp is 20, you can set the offset to -3 and this will cause TRV to think that actual temp is 20. Good idea, however there are limitations. First, as I explained earlier, max offset that can be set is 5 deg. It might be too small, as during winter season temp of valve might be closer to tem of radiator rather than actual air temp in the room. This is what I experienced. I also found that actual difference between TRV reported temp and actual tem is not linear, so it might require sort of automation to dynamically adjust offset to reliable temperature sensor. I even had such automation implemented, but it failed as max offset could be high enough.
Disabling internal sensor and using external one as source of temperature is way more accurate, as it gives TRV reliable information about what is happening inside the room. The drawback is that it can be done either using some dedicated Aeotec temp sensor that be paired directly with TRV or using MQTT method I described. For me it was no brainer, as I have all my Zwave devices configured using Zwave JS to MQTT integration.
Once external sensor is configured, TRV itself will control valve opening to to get as close with temp to target as possible. So this works quite well and does not require any additional automation to reach target temp in the room.
Finally probably the most complex case is to configure TRV to control valve opening from HA and use some automation to open/close the valve based on temperature measured from any sensor. While probably this would give th emost of control, it is hard to implement in practice, as writing good algorithm to control valve opening based on temp and its current state is not easy. At least I found no one readily available for HA…
Not sure, frankly speaking… as far as I recall generic thermostat gives on/off type of controll, while having fully controllable valve in place, can give way more accurate control over temperarture. Obviously, if no link between external sensor and TRV can be made, then probably this is the solution!
You don’t need a link between them. HA and generic thermostat is all you need.
Really!
Yes it gives on/off but that is enough. You can if you want create a template value to what the valve position should be in given the temperature in the room.
It’s not a hard thing.
My setup is fairly simple, I don’t have a boiler to think about since we live in an apartment.
If there is need for heat it sets the target temperature to 5 degrees Celsius higher than the set temperature of the generic thermostat.
That is to ensure the internal temp sensor does not turn it off.
Then when no more heat is needed it sets it to 0 degrees.
Since the apartment keeps the heat quite long it’s not much of an issue, the cycle time is fairly long.
Latest update to the z-wave JS addon messed things up with my TRVs so that gave me the motivation to move over to zwavejs2mqtt addon.
That is now up and running and I’ll be looking at the mqtt route.
Thanks
can u please show your YAML for this solution?
I think thats the solution for my Danfoss-TRV because i can’t find any solutiuon to link my DTHERMZ6 TRV with my z-wave-room sensor.
Hi,
First of all, I would like to say node red I am learning right now. Can you give me the YAML code for the generic thermostat?
It would be really great!
Nice, thanks. I have an another Question. How do you switch your thermostat on the radiator? I have a thermostat from Danfoss and can only set the target temperature.
Yes.
So if the boolean/switch/group turns off then I set the temperature with climate.set_temperature to 0 degrees.
If it turns on then I set it to {{ generic thermostat set temp + 5 }}