Skip to content

feat(heat pump): add operating state, heat production and power limit getters - #836

Open
jeremiahpslewis wants to merge 2 commits into
openviess:masterfrom
jeremiahpslewis:feat/heat-pump-operation-data
Open

jeremiahpslewis wants to merge 2 commits into
openviess:masterfrom
jeremiahpslewis:feat/heat-pump-operation-data

Conversation

@jeremiahpslewis

@jeremiahpslewis jeremiahpslewis commented Oct 4, 2026 •

Copy link
Copy Markdown

Expose operating state, heat production and power limitation data already returned by the bulk feature fetch.

Changes:

  • HeatPump: add getters for current heat production and power consumption, including units; defrosting status; four/three-way valve position; secondary-circuit current and target operating states; and secondary-circuit current and target valve positions, including units.
  • HeatingDevice: add heat production summaries for heating and domestic hot water, including units and daily, monthly and yearly totals. These are available to boilers and Vitovalor devices too.
  • Device: add power consumption limit, unit, status and limitation source getters for the §14a EnWG status report.
  • Compressor: add getSpeedUnit().

Following the [review feedback](#836 (comment)), the fractional compressor speed fix and the three missing @handleNotSupported decorators, together with their regression tests, have been split into a separate fix PR so they can appear under bug fixes in the release notes.

Validation on Python 3.12:

  • Full test suite: 824 passed, 30 skipped.
  • ruff check .: passed.
  • The feature and fix branches merge cleanly and together reproduce the original PR’s production changes.

… getters

Expose data points newer heat pumps (Vitocal 250-A, 252-A, 222-S, 200-A)
already report in the bulk feature fetch:

HeatPump:
- getHeatProductionCurrent / getPowerConsumptionCurrent (+ units) for the
  device-level heating.heat.production.current and
  heating.power.consumption.current
- getDefrostingActive (heating.outdoor.defrosting)
- getFourThreeWayValvePosition (heating.valves.fourThreeWay.position)
- getSecondaryCircuitOperationState (+ Target)
- getSecondaryCircuitFourThreeWayValvePosition (+ Target, Unit)

HeatingDevice (boilers and the Vitovalor report it too):
- getHeatProductionSummary{Heating,DomesticHotWater}{Unit,CurrentDay,
  CurrentMonth,CurrentYear,LastMonth,LastSevenDays,LastYear}

Device:
- getPowerConsumptionLimit (+ Unit, Status) and
  getPowerConsumptionLimitationSource for the §14a EnWG status report

Compressor:
- getSpeed returns a float, the Vitocal 252-A reports 38.5 rps
- add getSpeedUnit
- getMotorChamberTemperature, getAmbientTemperature and
  getOverheatTemperature raise PyViCareNotSupportedFeatureError instead
  of KeyError when the sensor reports notConnected without a value

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018X7DnQrHxgcWGosVT94sUL
@jeremiahpslewis
jeremiahpslewis marked this pull request as ready for review October 4, 2026 09:45
@lackas

lackas commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator

Looks good to me, and the notConnected fix also helps Home Assistant, which reads getOverheatTemperature. I'd split the compressor changes (the three decorators and getSpeed returning a float) into their own fix PR, so the type change shows up in the release notes as a fix rather than inside a feature.

Keep the new operating-state, heat-production, power-limit and speed-unit
getters in this feature PR. Move fractional compressor speed and unsupported
temperature handling, along with their regression tests, to the independent
fix/compressor-speed-and-unsupported-temperatures branch.

This branch has not been deployed

No deployments
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

Successfully merging this pull request may close these issues.

2 participants