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 preset to boost doesn't work #7

Open
foxy82 opened this issue Jan 5, 2020 · 7 comments
Open

Setting preset to boost doesn't work #7

foxy82 opened this issue Jan 5, 2020 · 7 comments

Comments

@foxy82
Copy link
Collaborator

foxy82 commented Jan 5, 2020

Error when selecting boost as a preset from the front end:

2020-01-05 18:06:52 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.140299356821008] Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 133, in handle_call_service connection.context(msg), File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call await asyncio.shield(self._execute_service(handler, service_call)) File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service await handler.func(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 205, in handle_service self._platforms.values(), func, call, service_name, required_features File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 336, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 358, in _handle_service_platform_call await getattr(entity, func)(**data) File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 421, in async_set_preset_mode await self.hass.async_add_executor_job(self.set_preset_mode, preset_mode) File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/warmup/climate.py", line 218, in set_preset_mode raise InvalidStateError homeassistant.exceptions.InvalidStateError

@foxy82
Copy link
Collaborator Author

foxy82 commented Jan 5, 2020

What should we do to boost? Set to max temp for an hour?

Set to a few degrees higher for an hour?

Something else?

@artmg
Copy link
Collaborator

artmg commented Jan 5, 2020

It appears that the override temperature is the desired floor temperature, rather than the air temperature so I think your first idea works well:

override_temperature = max_temp
override_duration_mins = 60

@foxy82
Copy link
Collaborator Author

foxy82 commented Jan 5, 2020

It depends if your heating is targeting a floor or air temp I believe.

@artmg
Copy link
Collaborator

artmg commented Jan 5, 2020

so if heating_target= floor then as above. If =air then +4 for an hour. We could have this as a default value for boost_air_increase in the config so users can override, and maybe boost_minutes defaulting to 60

@artmg
Copy link
Collaborator

artmg commented Jan 15, 2020

Oh, and perhaps a little additional logic. If run_mode = override then duration = duration + boost_minutes, else as above. That way additional presses of boost increase the duration incrementally.

@rct
Copy link
Collaborator

rct commented Feb 20, 2022

On a related note, when the thermostat is set to override (boost) outside of Home Assistant, it does not show the mode change correctly in Home Assistant. For me the mode changes to auto during override and back to heat when the override is complete. This might be related to #19 - override is mispelled.

Also here's the trackback with hopefully better formatting

2022-02-15 08:06:02 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [2593853272]
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 185, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1495, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1530, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 209, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 663, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 896, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 700, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 486, in async_set_preset_mode
    await self.hass.async_add_executor_job(self.set_preset_mode, preset_mode)
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/warmup/climate.py", line 218, in set_preset_mode
    raise InvalidStateError
homeassistant.exceptions.InvalidStateError

@artmg
Copy link
Collaborator

artmg commented Feb 24, 2022

Thanks @rct - I'm inclined to agree with your reasoning for the 'setting outside of HA' issue. However this specific traceback indicates perhaps a different problem.

So set_preset_mode throws an InvalidStateError in line 218 of climate.py. So the set_preset_mode function, and in fact the return of proerty preset_mode, both have logic for only Home and Away modes, so disregard the fact that
when setting the available presets it does include Boost mode as an option.

I am not sure how we would like into the API to see what is delivered/returned for boost mode, but I think that's the extra case that needs coding here.

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

3 participants