Viessmann: add heat pump power, temperature and target readings - #32219
Draft
ickeundso wants to merge 5 commits into
Draft
Viessmann: add heat pump power, temperature and target readings#32219ickeundso wants to merge 5 commits into
ickeundso wants to merge 5 commits into
Conversation
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.
Contributor
There was a problem hiding this comment.
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
usageparameter but only allows the fixed valueaux; if no other usage types are expected, you might simplify by inliningusage: auxto 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.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 gaugelimittemp:heating.dhw.temperature.main— the device's DHW targetAll 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
energyreading: 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 docsand template tests pass.