bosch-thermostat / home-assistant-bosch-custom-component

HA custom component for Bosch thermostats
Apache License 2.0
234 stars 44 forks source link

water_heater.set_temperature error #34

Closed ciechompl closed 3 years ago

ciechompl commented 4 years ago

Describe the bug Trying to create automation to control water_heater during holiday mode. For that I'm using water_heater.set_temperature service. Whenever I call this service error occur:

2020-06-24 14:09:53 ERROR (MainThread) [bosch_thermostat_client.circuits.ivt_circuit] Setting temperature not allowed in this mode. Temperature is probably out of range MIN-MAX!

water_heater behave strange .. sometimes it sets temperature, sometime not, cant' really reproduce it. The only time when temperature it being set is when indeed my set i within min_temp - max_temp threshold but those are changing somehow automatically and I see no way how to change it. during tests I saw even min_temp and max_temp set to 0 ! ... don't know how. It has been reverted back when I changed operation_mode from heat_pump into performance (or vice versa)

Expected behavior temperature to be set as desire

screenshots before service call: image

image

Service call: image

Version

Debug SCAN https://jsonblob.com/0cd2e7f1-b60d-11ea-add9-3fec6e3ef106

Additional context in general seems like operation_modes are not in line what my KM200 is been able to set. When I change operation_mode in the component to heat_pump, than in the Buderus app I see message: "Can't show current working mode as this mode is not supported by application" ... On the other hand when I set in the app "auto" or "manual" or "off" mode it is showed in the component as "heat_pump" all the time despite what I've set in the app.

pszafer commented 4 years ago

Thanks for feedback.

What temperature are you trying to set?

I'll start from the end because it is interesting and if modes are wrongly recognized than setting temperature can't work. DHW program heat_pump is bosch program HCprogram and as far as I know it is not supported by the app. It suppose to follow HC1 program and in this program setting temperature is forbidden by KM200.

Can you make more scans?

ciechompl commented 4 years ago

What temperature are you trying to set?

15°C .. idea behind is to automate "holiday mode". As away_mode is not supported (at least this is what I got as an error when tried to run water_heater.set_away_mode:

2020-06-24 18:15:17 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.140283686289808] 
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 130, in handle_call_service
    connection.context(msg),
  File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1295, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 209, in handle_service
    self._platforms.values(), func, call, required_features
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 454, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 597, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 485, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 303, in async_service_away_mode
    await entity.async_turn_away_mode_on()
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 270, in async_turn_away_mode_on
    await self.hass.async_add_executor_job(self.turn_away_mode_on)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 266, in turn_away_mode_on
    raise NotImplementedError()
NotImplementedError

So, I figured out that the simplest way will be to set water_heater to really low (but still safe) temperature during my vacations :) 15°C seems to be good enough in order to not let water frozen during winter time :) and not to high that I could not effort to during a summer :-)

more scans:

  • switch to heat pump and see this messages in buderus app and wait 5 minutes -> make scan

https://jsonblob.com/38327e80-b630-11ea-add9-7375f0d4368c

  • switch in app to auto and wait 5 minutes -> make scan

https://jsonblob.com/4b572bf6-b634-11ea-add9-cfb92616b9f4.

  • switch in Home Assistant operation mode to performance, wait 1 minute and make scan.

https://jsonblob.com/c38e8353-b635-11ea-add9-5975ec06a8e5

this time water_heater behaved differently ... when switched to performance, it is sets to 15°C (one of my previous service calls from earlier today when got errors) and in the entity itself I can change temperature manually. Previously, whenever I changed to performance mode , temperature field in water_heater been diapering.

in the app this is still "auto" (from previous step) but to be honest I do not know what is a difference between "performance" and "heat_pump"

after this step this is how I see water_heater state:

image

please notice min/max tems .. they have changed (don't know how and why) compering what we had in the morning (see my first post)

Further I notice this new error in the log ... but I'm not sure after each of the steps above ... looking at the time it si most probably just after second scan

2020-06-24 17:34:03 ERROR (MainThread) [bosch_thermostat_client.encryption.base_encryption] Unable to decrypt: b'U0\'\xb1\x1a1\x9d\xbbr\xc6\xbf\xf8S\x8f\xc0f\xcdy\xa2;\xe4d\xbe\x0e\xfd\xb3\x11\x9b\xf8\xa9\x85*\x83\x9e\x8f\xf1Q\x83\xa2\xd2\xcd\'\x8a\xb5\t\xbb\xcd\x0cG\xd8ko\xbc\x17\xe8\x89\xcab\xf1\x96 \xbd\xeba\x10\x9f\xf8\xde{\xf2a\xd3\xff\x90\xe0-<\xcb\xb5\x17\xec\x11\xde)\xf5\x14\xb3\x056\x98\x94\x04\xc8\xf3!/E=\n\xa5\xad8\xce")\xc1=\x13\x19Y)\x80;\xcc\xe2k\xbaG\xeaDkgz\t\xb8D\xe7\xb0_Jd\x87\xc7\x03\x1aP<;\x01\x9b\x1e~\xcf\xf6\x95\xdaU\xe0\r)k\x0c?\x903\x99\xa1@\\\xa6 \x8f\xa9v\xc8\x03\x047\x89\xd8-\rKSY\xcdf\x18\xb1\xa3\xde\xe7\xcb\x17\x1b\x7f:\x0bM\xf9\xc3\xfd\xe3bAg\x93\x92\xe7\xde\xee\x8f\x95\xc4,v\xb8\x06\\\x1a\xe0\xc9\x04wg\\\\9\xd7x\x9c\x93\xb5\x0e' with error: 'utf-8' codec can't decode byte 0xb1 in position 3: invalid start byte
pszafer commented 4 years ago

About holiday mode, I tried to implement it, but home assistant doesn't have anything like scheduler/calendar and for bosch holiday mode is like different virtual device, which in fact just change operation mode of DHW to off.

In HC there is something called suWi (which I'm also in progress of adding) and it just make sure that your system wouldn't freeze. I don't know how it works for DHW. I will study your json's this weekend.

About unable to decrypt, it is normal in debug scan to have these messages, some of URI's are impossible to decrypt.

ciechompl commented 4 years ago

thank you so much in advance :) ... just to add one more scan :) Right now we are at "night" mode set automatically by my schedule in the Buderus itself.

water_heater looks like this:

image

pls note min/max temps and setpoint

scan result: https://jsonblob.com/38c0b9d4-b668-11ea-add9-13f1f3699464

in the app I see mode "auto" but instead of temperature there is "off"

ciechompl commented 4 years ago

@pszafer any findings ? :)

pszafer commented 4 years ago

for now I'm trying to add sensors from all circuits to HA. just don't have enough time lately :/

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.