My current pet project is to implement a PID control with my Eurotronic Z-Wave TRV. Fortunately, latest zwave-js can easily switch it into “manufacturer mode”, so that I can set the valve position from 0 to 99. I know that this cannot map linearly to the heat power of the heater. But in my naivety, I thought that there was at least a reproducible, monotonic mapping of numeric percentage to valve position. Well, I thought. Naively.
I want to share my observations and would like to hear from others whether they can confirm it or make differing observations. It may be that the creator of this device was stoned while engineering it, or that my sample is simply broken. Be that as it may, the manufacturer Eurotronics is not helpful at all.
I would have assumed a stepping motor working in this device. However, I think that the actuator seems to “measure” the counter force (caused by the spring in the valve) to find its set point. This is of course much less accurate and reproducible. But for instance, setting a valve position in unmounted state, the motor drives forever.
If I set >= 30, and then x <= 20, the valve is completely closed. This is perfectly potty because coming from < 30, it closes at 8. Setting the value x again opens the valve again.
Generally, it seems that the device entres another mode >= 30 and switches back <= 20. The domain inbetween does not exhibit odd behaviour like completely closing the valve. You have to set 20 or below for that. Likewise, going from 20 upwards and back to 20 again is okay, unless you reach 30.
My concluson: Stay below 30 by all means. The heating is at max at 29 anyway.
Approaching a set point from lower values means I have to send it twice. The motor moves after both updates. I assume that the valve moves slower than the motor so that the second adjustment is necessary. On the other hand, my vales are brand new.
The valve opening is not 100% reproducible. In particular, the low limit where it is just closed is mostly 8 for me, but occasionally, can also be 9 or 10. Even with double-sending. By the way: The 8 is probably specific to my valve, however, the 20 and 30 from above seem to stay the same even across re-mountings. So they are probably a firmware issue.
You’re correct, the Eurotronic Z-Wave isn’t a stepper motor, it’s a standard motor & gearbox with regulation through current detection. As I’m sure you know, it uses this to sense the top of the valve pin in a fully open position and then the closed position during initialisation. Small changes to the TRV body, such as tightening the mounting or removing and replacing the TRV, cause errors and the device will need to be reinitialised (makes sense due to the detection method, I suppose).
If you disassemble the unit you’ll find that there is a small window into the gearbox and an IR detector on the PCB which monitors the rotations of the main gear - a rudimentary rotary position sensor. For this reason the resolution of the device is poor.
It’s designed to suit many different types of TRV heads and hence tries to mange the valve over a wide actuator range. Some TRV valves are “short-throw” (~5mm) and some are “long-throw” (~10mm). Are you sure that your valve is maximising the actuator’s range?
That unit is also known for over-shooting in terms of the internal PID control. I don’t find it too bad, but it can remain open (~20%) when the sensor is >2 degrees C above the setpoint. Annoying.
From what I have seen, Eurotronic have not been very engaging with customers/opensource in terms of product issues and fixes and for this reason I’m not buying their newest Comet WiFi TRV.
Thank you for your report! It contained valuable information.
I have not experienced yet this “remain open” situation, although I have read about it already.
I think my valve has a rather short free way. I assumed that the range 0…99 is mapped to the measured valve depth. After all, the TRV itself jumps to values > 80 if I set the desired temperature very high.
The IR detector is surprising given that even a step of 1 may land at the wrong site.
My calibration work is not yet finished but it seems that if you stick to the following rules, the mapping is monotonic and reproducible (modulo small inaccuracies of the actuator):
Keep the valve position below 30
When going up with the valve setting, send the value again after 3 seconds
I tried to perform some testing on a spare TRV here, but I now notice that it does not respond to individual valve commands (command 38, endpoint 0), as you said.
How do I force the TRV into “manufacturer mode”, I do not see it on zwave-js (10.3.1)?
I relation to the valve - I measured my valve’s nipple height and travel (distance):
4.0mm (fully open), 2.9mm fully closed. So I have just 1.1mm of travel!
If you can tell me how to put the device into manufacturer mode, I can test the operation of the TRV a little bit more to see if the relationship between the mapping is linear or log. I would be willing to bet that it’s linear and that could explain why there is very little difference between 30% to 100% as the water pressure is high enough to pass significant volume at 30% open. In my mind the mapping should be logarithmic so for for example that ~70% of the 1.1mm of travel represented 10% on the multilevel switch (38-0).
I use the same version of zwave-js. Here, I see in the “Thermostat Mode” tab the “[58-64-0-mode] Thermostat mode” setting. Here, I select “[31] Manufacturer specific”. After that, in the “Multilevel Switch” tab, I can set the valve position.
I know this error message. But it went away in zwave-js 10.3.1. I use zwave-js currently directly because my HA instance is not yet properly set up.
There is a low-level alternative that I used before it started working in zwave-js: In HA, I go to “developer tools” – “services”. There, “target” is the device, “Command Class” is 64, and “value” is 31. Then, the TRV is in manufacturer-specific mode and one can set the valve position.
Hope this contributes to this topic.
In my project I use the same kind of actuators. At least the mechanical part.
( https://www.aliexpress.com/item/1005004776313453.html ).
On the radiator I’ve installed flow regulators to control the amount of heat running into the radiator. The result is a very short travel of the valve pin.
Currently operating the TRV’s with the smartlife app. Seems the valve opening is nearly random.
In my project the target is to heat per room. In smartlife I succeeded nearly. Through scenes a wifi switch is controlling the boiler on/off.
Take care I damaged my boiler already once.
The wifi trv is acting the same as a conventional thermostatic head. It’s closing bit by bit reaching temperature setpoint. Still asking for heat with to less flow (< 8%), putting the boiler in stress/failure. With normal valves installed looks like the pressure ( how many valves are open) in the system is influencing the motor travel / force needed to shift the pin. Note: The manuafacturer of these TRV released an firmware update to increase the motor torque.
This moment I’m migrating the devices into HA local tuya hoping to solve the problem.
In smartlife app in the mode selection of the TRV it’s possible to select “on”, “off”, “manual”, “auto”. In mode “on” the valve degree is 100%, in “off” 0%. I hope to use the control on/off and the “current temperature” sensor only. HA automation etc must complete the project.
Any suggestions?
Hi, yes, that’s a common problem.
Modern boilers have a bypass device (boiler bypass valve) which allows over-pressure from the feed loop (hot water out) to escape into the return loop (warm return) instead of getting stuck in the heating chamber when all of the TRV’s close.
If your boiler does not have one fitted then you need to leave one radiator ‘open’ on each zone (no TRV) so that the pressure can release.
I can’t reproduce this. I set the command class as per the link above and I can see that the layout has changed for the ‘Multilevel Switch v1’, but I still can’t seem to control the valve directly. I tried sending the command twice from the UI. I also rebooted the TRV and also re-interviewed the node.
Thank you that you took the time for this. Yesterday, I found out that the starting point for the valve had shifted von 8 to 6. Since almost the whole temperature change happens within three units, this means that basically, I can only make the valve fully open or fully closed. A real PID control is completely out of the question. Frankly, the Eurotronic has turned out to be cheap and unreliable technology.
And in the Z-Wave world there are virtually no alternatives.
Since I also have a ZigBee stick I will look there.