Skip to content

Add heating schedule setter for circuits#701

Open
lackas wants to merge 1 commit intoopenviess:masterfrom
lackas:feature/heating-schedule-setter
Open

Add heating schedule setter for circuits#701
lackas wants to merge 1 commit intoopenviess:masterfrom
lackas:feature/heating-schedule-setter

Conversation

@lackas
Copy link
Copy Markdown
Contributor

@lackas lackas commented Feb 3, 2026

Summary

Adds methods to set heating circuit schedules:

  • setHeatingSchedule(schedule) - set the heating schedule for a circuit
  • getHeatingScheduleModes() - get available schedule modes (e.g., reduced, normal, fixed)

This complements the existing getHeatingSchedule() method and follows the same pattern as setDomesticHotWaterCirculationSchedule().

Fixes #539

Test plan

  • Added test for getHeatingScheduleModes() using Vitocal300G test data
  • All tests pass

@lackas lackas force-pushed the feature/heating-schedule-setter branch from 93e6ce0 to c23842b Compare February 3, 2026 09:20
@lackas
Copy link
Copy Markdown
Contributor Author

lackas commented Feb 3, 2026

See also PR #368 which adds setDomesticHotWaterSchedule() - similar pattern for DHW schedules.

}

@handleAPICommandErrors
def setHeatingSchedule(self, schedule):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we type this?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sure! The schedule structure is a nested dict (day keys → list of time slot dicts), so the most accurate type would be quite verbose. Would dict be sufficient, or do you have something more specific in mind? Note that the existing setDomesticHotWaterCirculationSchedule has the same untyped schedule parameter — happy to type that one too while we're at it.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Then lets go with a dict, the we at least have something.

@CFenner CFenner marked this pull request as draft February 12, 2026 08:23
@lackas
Copy link
Copy Markdown
Contributor Author

lackas commented Feb 18, 2026

@CFenner Friendly ping — any thoughts on the typing approach for the schedule parameter? Happy to go with dict or something more specific, whatever you prefer.

@lackas lackas force-pushed the feature/heating-schedule-setter branch from 5684a19 to 3adbd0b Compare February 18, 2026 09:46
@lackas lackas marked this pull request as ready for review February 18, 2026 09:46
@lackas
Copy link
Copy Markdown
Contributor Author

lackas commented Feb 18, 2026

Added dict type hint to setHeatingSchedule and list return type to getHeatingScheduleModes. Rebased on latest master. Ready for review.

Adds ability to set heating circuit schedules via the API, complementing
the existing getHeatingSchedule() method.

Fixes openviess#539
@lackas lackas force-pushed the feature/heating-schedule-setter branch from 3adbd0b to 0e75f2d Compare February 18, 2026 09:47
@lackas
Copy link
Copy Markdown
Contributor Author

lackas commented Mar 13, 2026

Hey @CFenner,

I wanted to ping you regarding this PR, but also flag something that might be related: over the past few days it seems like several setter endpoints have disappeared from the Viessmann API. For example, I can no longer trigger a one-time DHW charge via Home Assistant in a PV automation on my Vitocal 300-G — something I had been using regularly.

I just ran a fresh dump_secure() across all four of my devices (E3_TCU68_x14, E3_VitoCharge_06, Heatbox3, CU401B_G) and none of them report any setter commands anymore — zero commands entries across all features. It looks like Viessmann may have quietly(?) removed or restricted setter functionality on their API side.

Interestingly, the ViCare app still seems to work fine for controlling the devices. Have you ever looked into how the app does its job — whether it uses the same API or something different?

Have you noticed the same? I'm wondering if this affects the scope of PRs like this one as well, or whether it's worth documenting this on the PyViCare side.

Would love to hear your thoughts — and happy to help investigate further if useful.

Grüße aus Köln! 🙂
Christian

@CFenner
Copy link
Copy Markdown
Member

CFenner commented Mar 13, 2026

⛷️

See home-assistant/core#165440

& ViCare discord channel

@redlegoman
Copy link
Copy Markdown

⛷️

See home-assistant/core#165440

& ViCare discord channel

Not sure what you are trying to day here - is it a temporary issue? Or will we need paid accounts?

do you have a link to the discord channel?

@CFenner
Copy link
Copy Markdown
Member

CFenner commented Mar 13, 2026

do you have a link to the discord channel?

It's in the readMe.

@lackas
Copy link
Copy Markdown
Contributor Author

lackas commented Apr 7, 2026

@CFenner Friendly ping on this one too — still merges cleanly against master. Happy to adjust anything if you have feedback on the approach.

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.

Setting heating schedule

3 participants