Repository navigation
Description
Describe the solution you are looking for
Hi @bouwew, @CoMPaTech,
My setup is an Adam with an OpenTherm boiler that reports more datapoints in /core/domain_objects than python-plugwise currently exposes. I'd like to add this data and then bring it to Home Assistant as sensors. Before I open a PR, I'd like to check whether you want this and how you'd like it structured.
What I'd add (only when the boiler/gateway actually reports it):
From point_log on the heater_central:
dhw_flow: DHW flow rate (L/min)open_therm_oem_fault_code,open_therm_application_specific_fault_code,open_therm_oem_diagnostic_code: raw codes. What they mean depends on the boiler, so they're exposed as plain integers.
From cumulative_log on the heater_central (new for heater_central):
burner_starts,failed_burner_starts,failed_burner_flame_ignitionsburner_operation_time,dhw_burner_operation_time,dhw_burner_startscentral_heater_pump_operation_time,central_heater_pump_startsdhw_pump_operation_time,dhw_pump_starts
On thermostats:
maximum_modulation_level(%), which some OpenTherm thermostats connected to an Adam report
How I've implemented it so far (open to changing any of it):
- A new
HEATER_CENTRAL_COUNTERSdict inconstants.py, read by a small_appliance_counters()helper that runs only for the heater. - New units:
TIME_HOURS(h),UNIT_COUNT, andVOLUME_FLOW_LITERS_PER_MINUTE. Values in hours or counts are returned asintthrough anINTEGER_FORMATcheck informat_measure(). - Keys use the existing
dhw_short form throughDATA(...), the same waydhw_temperaturedoes. - I extended the test JSONs and the manual fixtures. Devices that don't report a value simply don't get the key, so existing setups don't change.
Questions:
- Do you want this in python-plugwise at all, or only some of it? For example, are the raw fault codes useful enough to include?
- Are the key names OK, or would you prefer other names or prefixes?
- Do you have a preference for how to handle the new units and the int formatting?
- Would you like this to go through plugwise-beta first before core?
For transparency: I wrote this with help from an AI coding assistant. I've reviewed and tested the changes and can explain all of it.
Thanks!
Is your feature request related to a problem? (optional)
An Adam with an OpenTherm boiler may already reports burner/pump counters, operation times, DHW flow and OpenTherm fault/diagnostic codes in /core/domain_objects (depending on boiler), but python-plugwise doesn’t expose them. Because of that they can’t be used in Home Assistant, for example to track burner starts (wear) or to see a fault code when the boiler locks out.
Describe alternatives you've considered
- Reading /core/domain_objects directly with a REST sensor in Home Assistant. This works, but it’s fragile and every user would have to set it up themselves.
- Adding only the counters and leaving out the raw fault/diagnostic codes, since what those codes mean depends on the boiler. I’m happy to narrow it down to that if you prefer.
- Starting in plugwise-beta instead of here. I’m happy to follow whatever route you prefer.
What type of installation are you running?
Home Assistant Container
How did you install python-plugwise (or plugwise) for short
Home Assistant Core
What kind of Plugwise device is having issues?
Smile: Adam (including Lisa, Tom, Floor)
What firmware version is your Plugwise product at?
3.12.6
Your setup
I have a bosch prolline next boiler
Additional context
Work-in-progress branch: https://github.com/bilhert/python-plugwise/tree/feature/extra-boiler-sensors
Activity
bouwew commentedon Nov 10, 2026
Hi @bilhert , Tom and I discussed this in the past, our thought was that 99% of the users will not be interested in the detailed info-bits.
For instance, the OpenTherm codes, they have no meaning to a typical user unless you translate them to actual meaningful messages. These codes are meant to be judged by a service engineer. I would object to showing the raw codes.
Same for the successful starts and failed starts, only experts know what is normal and not normal. Again a service engineer will be able to judge this. I would not be against adding these but I think some users might come to a wrong conclusion about the state of their boiler 🙂
And I would characterize these as "too much information".
Same for all these
..._times, too much information.Again, I'm not against adding these.
I would not object to adding
dhw_flowandmaximum_modulation_level, these could be useful.bouwew commentedon Nov 10, 2026
Also, I would propose that you move everything under
HEATER_CENTRAL_COUNTERStoHEATER_CENTRAL_MEASUREMENTS.And put the
_appliance_counters()call in_appliance_measurements().And change the name of the
_appliance_counters()to something that containscumulativeas it collect the cumulative log measurements.bilhert commentedon Nov 10, 2026
Hi @bouwew ,
Thank you for your quick response, and for explaining the reasoning from your earlier discussions.
I understand that some of these values can be considered too much information. My main reason for adding them is that the Adam already provides them, so the technical cost is low, and users who are interested (for advanced automations, or just out of curiosity) can use them. Because the entities are disabled by default and marked as diagnostic, they won’t clutter the interface for anyone else. There’s also a practical use with the Adam: when users lower the maximum boiler temperature for better condensing efficiency, or change setpoints through HA automations, burner starts show whether that causes the boiler to short-cycle.
On the fault codes, I’d like to make one case. My boiler documents the codes reported in open_therm_oem_diagnostic_code in its manual, which makes a “notify me when the boiler is in fault” automation simple and useful. The number can also be fed into a lookup that shows the matching description. I agree the meaning is boiler-specific and not every manufacturer documents it this well, but for users who do have that documentation it would be valuable. With the entity disabled by default, users without it won’t be affected.
I’ve already updated my code with the suggestions from your previous comment. I’d like to open a PR so you can review everything in context. If you’d prefer that I leave out some of the datapoints, let me know and I’ll remove them before opening the PR
Thanks again!
bouwew commentedon Nov 11, 2026
Good point, disabled-by-default is a good way of hiding them.
Please go ahead and open a PR, thanks!
bilhert commentedon Nov 11, 2026
Thank you for your feedback, the PR can be found [here] (#949)