Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting temperature for reduced/normal/comfort programs not possible as Vitodens 300-W (E3) changes to standby program at certain outside temperatures #290

Open
stef-g opened this issue Dec 23, 2022 · 9 comments

Comments

@stef-g
Copy link

stef-g commented Dec 23, 2022

I am using a Vitodens 300-W (E3) and use automations in Home Assistant to set the temperature for the "reduced" program based on a schedule (or for program "normal" would make no difference, whatever program you would define on the Vitodens schedule). Problem is that if outside temperature has certain values, the Vitodens switches to program "standby" (even though it should stay in "reduced" but the device doesn't, I can see that in Home Assistant or in ViGuide). If this happens, the automations fail since for program standby the temperature cannot be set (I am not a coder but believe this happens here:"return self.service.setProperty(f"heating.circuits.{self.circuit}.operating.programs.{program}", "setTemperature", ...").

Seems to me there should be additional code if the current program is standby to choose i.e. reduced (or in my case I would prefer to always only set temperature for program reduced as I want to automate via Home Assistant and do not care about the ViCare schedule with the different programs for reduced, normal and comfort.

There is a similar issue described in the Home Assistant ViCare integration but no useful answers. Believe PyViCare would be the place to take care of this. Here I only found a closed issue where the solution was to either return an error or value null if someone wants to set target temperature for program standby (since obviously for standby you can not set a temperature). But the real problem people have is that probably certain Viessmann devices dynamically in the background change to standby program based on a outside temperature that is higher than the current target temperature of the circuit.
Example situation I have right now: at the moment at night the outside temp is 13 degrees C and my current program based on the Vitodens/ViGuide schedule is "reduced" with a target temperature of 3 degrees. In ViGuide and Home Assistant it shows that it is in program standby. This is not the case if the outside temperature drops lower. Now my automation to set the temperature at 5:00 am fails since it is in standby. If outside temperature is lower it works fine.

Thank you so much for your support. I am not a coder and am not familiar with GitHub, so pls. excuse if I chose the wrong place for this issue.

@adorobis
Copy link
Contributor

adorobis commented Dec 24, 2022

If you don't want to rely on the Viessmann schedule you can set vicare to forcedNormal mode. I believe it will never switch back to standby automatically.
Another option is that you can just check the state of vicare climate entity and set the temp only if it is not in standby mode. Or switch it on first before changing the temp

@stef-g
Copy link
Author

stef-g commented Dec 24, 2022

If you don't want to rely on the Viessmann schedule you can set vicare to forcedNormal mode. I believe it will never switch back to standby automatically.

ForcedNormal is not possible. I can either not set a Viessmann schedule and then it is on reduced, or set normal for 24/7 and then it is always on normal. But in any case it goes to standby automatically if the target circuit room temperature is i.e. set to i.e. 3 degrees at night and the outside temperature is i.e. higher than 7 degrees. Tried that over and over. A forcedNormal is not possible. If I try and set the preset program through the Home Assistant integration it always throws an error that the command is not known by the Viessmann API.

Another option is that you can just check the state of vicare climate entity and set the temp only if it is not in standby mode. Or switch it on first before changing the temp

Well, but then it would stay on 3 degrees. But the whole point is that I want to be able to set the temperature via HA automation in the morning from 3 degrees to i.e. 20 degrees. But since it is in program standby I cannot due this (at least with he Home Assistant integration which is based on PyVicare, as it just attempts to set the te mperature of the program that is in use at the time.
The Viessmann API would allow to set the temperature per circuit and per program. But it is just not possible I guess with PyVicare or the Home Assistant integration (and as such it is pretty useless with my Vitodens since it has the described behaviour.

I guess I will have to try and use the PyScript integration in Home Assistant to be able to set the temperature for the reduced or normal program. Unfortunately I am not a coder and might have a hard time.

In case anyone could help I would appreciate a lot!

Merry Christmas to all :-)

@stef-g
Copy link
Author

stef-g commented Dec 27, 2022

Was able to use a workaround for my Vitodens 300-W (E3) by implementing a script via pyscript in Home Assistant as suggested by @hnykda here: #240 (comment)

With this you can use a service to set the temperatures for programs reduced, normal and comfort independently of the current program in use. And it works fine independently from the current mode of the heater, even when it is in standby.

Anyways, a standard implementation in PyViCare or in the Home Assistant ViCare integration by @oischinger would be great at some point.

@modem-man-gmx
Copy link

I don't entirely understand all details, but if I got it right, this is finally a request to offer reading and writing the required temperatures of the Vitodens schedule (and perhaps read/write the time plan).
If this is your request, I will also request it.

TL;DR:
setting another temperature required value on my Vitodens 200w, it seems the heating always just overwrites the required value of the recently running schedule. This can be one of: "reduced (16°C)", "normal (20°C)" or "comfort 23°C". The other family members don't care and don't have insight to such details. This often results in accidentally setting "reduced" to 23°C, resulting in overheating the home the whole night.
With PyViCare functions to read and restore the schedule and temperatures after some time (or before next schedule switchpoint), one could create functions like "override required temperature until HH:MM (next timepoint)" or like "override required temperature temporarily and prolog this for next hh:mm time span".

Or is this a bit too different from your question? Then I'd like to create a new request.

@hnykda
Copy link

hnykda commented Oct 29, 2023

I am not sure I follow fully, but I don't think pyvicare can do anything about that. It's not supported by the API/Viessman, therefore pyvicare can't support it. See what stef-g posted above for a workaround via setting the programs.

@modem-man-gmx
Copy link

Hmm, @hnykda, I am in doubt about yout Answer "It's not supported by the API/Viessman".
As far as I understood the writing of @stef-g, this is more or less supported by Viessmann API, otherwise the workaround could not work.
And at the Viessmann support page, I at least found a question about writing the entire schedule with some advice how to read and write it - it was just the missing enumeration in the question.

@hnykda
Copy link

hnykda commented Oct 29, 2023

I forgot this thread is about Vitodens 300 and not my Vitodens 100, so you might be right, I will shut up.

@modem-man-gmx
Copy link

Oh, sorry, I don't want to tell you to be silent! It is quite possible that different Vitodens devices, or generations, or even firmware variants are supporting very different features and API generations. So, at least it was also my mistake to expect we're all talking about exactly the same thing.

Finally, your pointer to V300 is even useful to me, because I own a V200. Since your last comment I will first rethink, if I should blindly follow all the effort of the issue240 workaround. Or if it is a better plan to start verifying if (my) V200 would even support it.

Thank you at least for this!
:-)

@hnykda
Copy link

hnykda commented Oct 29, 2023

No worries, on offense or anything, you didn't tell me so, I was joking 😁 .

Yeah, what I would do is to find an actual API call (like, ideally a curl command with all the necessary arguments and stuff) and see if you can make it. I think I did something like that for 100w, and I simply couldn't find it (therefore concluded it's not in the supported 100w API).

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

No branches or pull requests

4 participants