home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
71.63k stars 29.93k forks source link

OpenTherm Gateway - there is no service for a temporary of constant change of room setpoint #52128

Closed user34756361233 closed 3 years ago

user34756361233 commented 3 years ago

The problem

In the latest release of the Opentherm Gateway integration it is possible via the integration configure button to set (or unset) a Temporary Setpoint Override Mode. This should make it possible to send commands like TC=20 (set room point temperature to 20 C forever) or TT=15 (set roompoint temperature to 15 C untill the thermostats next program step).

I can't find any service that makes it possible to use this setting.

The sources contain the following services non of which produce TT of TC commands towards the otgw SERVICE_RESET_GATEWAY = "reset_gateway" SERVICE_SET_CH_OVRD = "set_central_heating_ovrd" SERVICE_SET_CLOCK = "set_clock" SERVICE_SET_CONTROL_SETPOINT = "set_control_setpoint" SERVICE_SET_HOT_WATER_SETPOINT = "set_hot_water_setpoint" SERVICE_SET_HOT_WATER_OVRD = "set_hot_water_ovrd" SERVICE_SET_GPIO_MODE = "set_gpio_mode" SERVICE_SET_LED_MODE = "set_led_mode" SERVICE_SET_MAX_MOD = "set_max_modulation" SERVICE_SET_OAT = "set_outside_temperature" SERVICE_SET_SB_TEMP = "set_setback_temperature"

What is version of Home Assistant Core has the issue?

core-2021.5.4

What was the last working version of Home Assistant Core?

-

What type of installation are you running?

Home Assistant Container

Integration causing the issue

opentherm gateway

Link to integration documentation on our website

https://www.home-assistant.io/integrations/opentherm_gw

Example YAML snippet

---
#
# OpenTherm Gateway: https://www.home-assistant.io/integrations/opentherm_gw/ 
#
#
#
alias: Update iSense thermostat with preset
description: >-
id: d16b2f76-ef1c-406a-8d2f-83b913850dd8
trigger:
- platform: state
  entity_id: light.studeerkamer_plafond
action:
- service: opentherm_gw.set_???????
  data_template: 
   gateway_id: otgw
   temperature: "{{ states('input_number.temperature_room')|float }}"
mode: single

Anything in the logs that might be useful for us?

no logs because no service is known to me

Additional information

No response

probot-home-assistant[bot] commented 3 years ago

Hey there @mvn23, mind taking a look at this issue as its been labeled with an integration (opentherm_gw) you are listed as a codeowner for? Thanks! (message by CodeOwnersMention)

mvn23 commented 3 years ago

The Override Mode setting defines how the climate entity controls the OpenTherm Gateway. To set the target temperature, use the climate.set_temperature service with the opentherm_gw climate entity as the target.

user34756361233 commented 3 years ago

Ok, missed that. Thank you for the very quick answer!

user34756361233 commented 3 years ago

@mvn23 sorry to disturb you again; TT or TC is determined by the setting in the config screen of the OpenTherm integration. Is there another way to set this beside in the config screen? Reason behind my question is that I would like to send TC from a "away" script but in al other cases I want to send a TT.

Tia

Han

mvn23 commented 3 years ago

At present there is no way to change this on a per-call basis. The reason behind this limitation is the fact that we're leveraging a service call from the climate component, rather than implementing our own version of existing functionality. The climate component is generic by design and has no support for this functionality, nor is it likely to be implemented there.

The easiest way to achieve what you want is most likely to implement your thermostat program in Home Assistant entirely. Then you will have full control over all conditions that may result in a temperature change and act accordingly. Another option is to create an additional automation that counters any programmed temperature changes if certain conditions are met (e.g. with an input_boolean).

user34756361233 commented 3 years ago

Thx for your extensive explanation; building my own thermostat in HA is way over my head ;-)

mvn23 commented 3 years ago

No need to build a whole thermostat, that's what the integration is for. I'm only suggesting to move the program from your thermostat to Home Assistant to allow for greater control. Just creating a few automations with time triggers and climate.set_temperature service calls should do the same thing your thermostat is doing now. Example:

alias: Set temperature to 20°C in the morning
mode: single
trigger:
  - platform: time
    at: '07:00'
action:
  - service: climate.set_temperature
    data:
      temperature: 20
    target:
      entity_id: climate.thermostat

You can then disable the program on the thermostat, making the difference between TT and TC irrelevant. Instead, you can just disable some of the timed automations in your "away" script (using automation service calls) to achieve the same effect (ignoring timed temperature changes).

user34756361233 commented 3 years ago

That, sir, is another way of looking at things! Had not thought of that at all. I'll have a go in that direction. Thanks again!