Skip to content

Viessmann: add heat pump power, temperature and target readings - #32219

Draft
ickeundso wants to merge 5 commits into
evcc-io:masterfrom
ickeundso:feat/viessmann-heatpump-measurements
Draft

Viessmann: add heat pump power, temperature and target readings#32219
ickeundso wants to merge 5 commits into
evcc-io:masterfrom
ickeundso:feat/viessmann-heatpump-measurements

Conversation

@ickeundso

@ickeundso ickeundso commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

The Viessmann heat pump template only wired heating.dhw.oneTimeCharge. With no power reading, the loadpoint falls back to the current×phases×230V estimate and shows a wildly wrong charge power (up to ~11 kW while the compressor actually draws ~1.3 kW).

Charger template additions:

  • power: heating.power.consumption.current — real electrical input power (kW → W)
  • temp: heating.dhw.sensors.temperature.dhwCylinder — domestic hot water temperature on the loadpoint gauge
  • limittemp: heating.dhw.temperature.main — the device's DHW target

All readers use the single device feature-list endpoint with a shared 120s cache: the Viessmann API has a strict daily request quota (shared with the ViCare app), and per-feature polling exhausts it within hours (HTTP 429). Since the http plugin caches by URL, identical-URL readers share one request per cache window (~720/day). Deliberately no energy reading: the API exposes no monotonic lifetime counter, and with power present evcc integrates energy itself.

Also adds a meter template (usage: aux) reading the same consumption value, for showing the heat pump in the energy flow when it is not configured as a charger.

Verified against a live Vitocal 250-A. make docs and template tests pass.

The Viessmann heat pump template only wired heating.dhw.oneTimeCharge. With
no power reading, the loadpoint fell back to the current*phases*230V estimate
and displayed a wildly wrong charge power (up to ~11 kW while the compressor
draws ~1.3 kW).

Charger template:
- power: heating.power.consumption.current (real electrical input, kW -> W)
- temp: heating.dhw.sensors.temperature.dhwCylinder (domestic hot water)
- limittemp: heating.dhw.temperature.main (DHW target)

All readers use the single device feature-list endpoint with a shared 120s
cache. The Viessmann API has a strict daily request quota (shared with the
ViCare app); per-feature polling exhausts it within hours (HTTP 429). evcc's
http plugin caches by URL, so identical-URL readers share one request per
cache window (~720/day). No energy reading on purpose: the API exposes no
monotonic lifetime counter, and with power present evcc integrates energy
itself.

New meter template (usage: aux) reading the same consumption value, for
showing the heat pump in the energy flow without configuring it as a charger.

Verified against a live Vitocal 250-A.
@github-actions github-actions Bot added devices Specific device support heating Heating enhancement New feature or request labels Jul 28, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • The same Viessmann features URI plus auth block is duplicated multiple times across charger and meter templates; consider extracting this into a shared anchor/include to keep configuration DRY and easier to adjust if the endpoint or auth parameters ever change.
  • The meter template exposes a usage parameter but only allows the fixed value aux; if no other usage types are expected, you might simplify by inlining usage: aux to avoid an unnecessary configuration option in the UI.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The same Viessmann features URI plus auth block is duplicated multiple times across charger and meter templates; consider extracting this into a shared anchor/include to keep configuration DRY and easier to adjust if the endpoint or auth parameters ever change.
- The meter template exposes a `usage` parameter but only allows the fixed value `aux`; if no other usage types are expected, you might simplify by inlining `usage: aux` to avoid an unnecessary configuration option in the UI.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@ickeundso
ickeundso marked this pull request as draft July 28, 2026 08:38
The power/temperature data points require the One Base (E3) device
generation; the API's feature list is self-describing per installation and
older hardware/firmware may not provide them. On such devices the readers
would fail every cycle, regressing setups that worked with the plain
oneTimeCharge template.

Add a `measurements` option (default on) that gates the power/temp/limittemp
readers, and document the device dependency with a pointer to the Viessmann
developer portal in the template description.
The device feature-list URL was repeated in every reader and command. Compute
the device base once from a new advanced `uri` parameter defaulting to
https://api.viessmann-climatesolutions.com/iot/v2. Viessmann has moved the
API domain before (viessmann.com -> viessmann-climatesolutions.com), so
making the base configurable avoids a template change next time and helps
with proxy setups.
Existing installations do not carry the new parameter, so on upgrade the
default applies to every setup. With the readers enabled by default, devices
without the One Base (E3) data points would start failing every cycle.
Default to off so upgrades are strictly unchanged and the readings are an
explicit opt-in; wording of description and help adjusted accordingly.
ickeundso added a commit to ickeundso/evcc that referenced this pull request Jul 28, 2026
In the factory configuration the built-in Heizwasser-Durchlauferhitzer
(electric booster heater) may be activated automatically for hot water
preparation, i.e. also during the boost that evcc triggers. Add a note to
the template description explaining how to prevent that: have the
contractor lock the booster approval for DHW ("Freigabe
Heizwasser-Durchlauferhitzer", per the Vitocal operating instructions) or
select the "Efficient" DHW mode in ViCare where available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devices Specific device support enhancement New feature or request heating Heating

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant