Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenTherm #31

Open
SerialDestructor opened this issue Jan 5, 2024 · 6 comments
Open

OpenTherm #31

SerialDestructor opened this issue Jan 5, 2024 · 6 comments

Comments

@SerialDestructor
Copy link

The way I read it in the docs, a heater can either be on/off or proportional. However, many boilers (at least, in NL) can only be modulated using a heating water setpoint. I could use a mapping to specify the upper and lower bounds supported by my boiler, but that feels like a hack.

Ideally, one could configure:

  • The 'off' value (for example: 0 or 10 degrees)
  • The 'minimal' value (for example: 45 degrees)
  • The 'maximal' value (for example: 74 degrees)

Some rooms require a higher setpoint range (for example: ones who have subpar isolation) to maintain the temperature, in other cases lower values might be sufficient. So it might even be a good idea to specify the boundaries per room.

I'm using an OpenTherm gateway, which has native integration in Home Assistant.

@vindaalex
Copy link
Owner

Currently the master thermostat supports on-off by PWM or proportional valve opening. Combining this with a heating water temperature might be possible and that based on the master thermostat valve output, a secondary output is created for the temperature setpoint. It will be quite complex as the scheduling when room actuators open-close could thereby also result in varying temperature setpoints. This will require additional scheduling complexity and quite some time to develop. I also wonder if it will result in a stable generic usable controller.

In addition, this requires generation of additional output that needs to be implemented. Adding regular changing attribute is discouraged due to the possibility of large database files and should be included as sensors. In the future I would like to investigate if some other attributes can be converted to sensors as well but I haven't started looking at it yet.

The idea sounds as a nice addition but I'm afraid it will take a lot of time to develop, so currently I do not expect it to be implemented, at least, not in the near future.

Adding a separate script/automation that based on the master valve state and which rooms are active varies the temperature setpoint might be the quickest option. This would also give you the option the experiment a bit if it works as expected.

@SerialDestructor
Copy link
Author

Thanks for your writeup! Building a proper multizone thermostat seems even more involved than I thought in the beginning - hats off.

I understand that the PID proportional valve might be going away. How do I pull the percentage of the master thermostat in that case? I need some number (between 0 and 100) to script my own setpoint logic.

@vindaalex
Copy link
Owner

I'm not familiar with OpenTherm (yet). For Honeywell evohome i read varying reviews regarding using on-off versus OpenTherm, where on-off is less sensitive to errors and opentherm might give limited improvement. Modern gas heating systems seem to quite well regulate water temperature themselves. So it might be worth to try both methods and see which one fits you best.

I wonder is my assumption correct how you would and could operate withopentherm?

  • the multizone thermostat master defines when the gas heater has to switch on and off.
  • a custom script/automation checks which rooms require heat ( control_output > 0) and sets the water temperature.

The master would in such case be linked to a one-off relay that switches the gas heater on-off. This would be the most basic (and robust) implementation.

In addition to fully use the OpenTherm potential, a HA script. It should have a list with each room and the required water temperature setpoint (optionally varying with outdoor temperature. Is such case do not include the weather compensation in the multizone thermostat as you will be double compensating). This script checks per room:

  • if it requires heat (control_output> 0)
  • the required water temperature
    Then the max water temperature would be send to the opentherm gateway.

I hope the above makes some sense.

@vindaalex
Copy link
Owner

vindaalex commented Jan 8, 2024

The master valve_pid is a pid controller that checks control_output of satellites with proportional valve, and tries to force the valve opening to be close to the specified maximum position, by reducing the control_output of the master.

The idea behind it was that heating is more efficient with a as low as possible water temperature in combination with maximum flow. But i think it conflicts too much with other control loops.

@SerialDestructor
Copy link
Author

Regarding EvoHome, I had the system and it works in the cases it was designed for. Not all houses are equal. The problem is that you can't change a lot of parameters, the environment has to be compliant for EVH, not the other way around.

For example, sometime it sets the water setpoint to 29 degrees. In a room with bad isolation, that isn't going to do you any favors. But, depending on the weather, a setpoint between, say, 45 degrees (warmer outside) and 75 degrees (cooler outside) makes a lot of difference in how efficient your boiler runs. Ideally, return temps should be below 50 degrees for maximum efficiency (at least - what I've been told) and the Delta T (difference between originating and return) should be as high as possible.

Now, a big remark i that I haven't thoroughly tested this yet, but I can confirm varying setpoints actually made a difference with manual testing.

I don't know what modern boilers do, but I have a pretty clear picture of what mine does: Just fire until the setpoint temperature has reached. When the water temp starts dropping, fire until the setpoint has been reached again. Now I know, N=1 and my boiler (Nefit ProLine Nxt HRC24/CW3) might not be as sophisticated as, for example, a Remeha Calenta Ace, but I never have been able to test one of those myself.

My current system is 'dumb' on/off: if a room is below a requested temperature, heat until it's at the requested value. I have a 0,5 degree tolerance which is higher for the cold side (for example: start heating at 17,6, stop at 18,1). The climates entities control the radiator valves, heating is turned on or off based on the state of those valves. It isn't sophisticated at all. but for the past year basically cut my gas usage in half so I know I'm on the right track.

With OpenTherm, setpoints and boiler fire are two separate things. You can set a setpoint, nothing will happen until the CH enable bit has been set. Now, you don't interface with OT directly, but in the case of OTGW you need to repeat both the central heating state and the setpoint each minute (which is good - it acts as a failsafe if HASS goes kaput).

Flow is - like you said - indeed an issue. The minimum heating capacity of a boiler is much more important than the maximum. In my case, I have a custom NodeRED function that picks a second radiator to open if there is only one room that has heat request. If I don't, the boiler can't move away the heat in time and will excessively cycle (flame on/off), which shortens the lifetime of the ionisation stick.

@vindaalex
Copy link
Owner

Hi, Did you continue with the evaluation of the multizone thermostat and coupling to opentherm?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants