šŸ”„ Advanced Heating Control

Seems like AHC is fighting against Better Thermostat. This is the calculated temperature:

"changes": {
  "climate.hmip_etrv_2_i9f_00395f29a42d13": [
      {
        "mode": "heat",
        "temp": 23.5
      }
    ]
  },

Canā€™t give more support here because of BT.

Before I started using AHC, I was using BT. However, I have already deactivated the individual virtual thermostats. The thermostat is set to manual, and no one else is accessing it.

Ok, but anything sets this abnormal temperature. Did you check your logbook, too? The only change from AHC is 23.5Ā°C set temperature, but not those values above the local thermostat temperature.

I searched through all the logs, and it seems that only AHC is controlling it.

Logger: blueprints.panhans.heatingcontrol
Quelle: components/system_log/__init__.py:331
Erstmals aufgetreten: 12. Januar 2025 um 11:34:31 (201 Vorkommnisse)
Zuletzt protokolliert: 19:19:45

AHC - Change - Advanced Heating Control V5 - Wohnzimmer Trigger ID: calibration_aggressive_mode_above_temp_thermostat_current_temp_change Thermostat: climate.hmip_etrv_2_i9f_00395f29a42d13 Mode: heat New Target Temp: 23.0 Current Target Temp: 22.5
AHC - Change - Advanced Heating Control V5 - Wohnzimmer Trigger ID: calibration_popp_change Thermostat: climate.hmip_etrv_2_i9f_00395f29a42d13 Mode: heat New Target Temp: 22.5 Current Target Temp: 23.0
AHC - Change - Advanced Heating Control V5 - Wohnzimmer Trigger ID: calibration_aggressive_mode_above_temp_thermostat_current_temp_change Thermostat: climate.hmip_etrv_2_i9f_00395f29a42d13 Mode: heat New Target Temp: 22.0 Current Target Temp: 22.5
AHC - Advanced Heating Control V5 - Wohnzimmer automation delayed: False
AHC - Change - Advanced Heating Control V5 - Wohnzimmer Trigger ID: calibration_aggressive_mode_above_temp_thermostat_current_temp_change Thermostat: climate.hmip_etrv_2_i9f_00395f29a42d13 Mode: heat New Target Temp: 22.0 Current Target Temp: 21.0

I have now restarted the automations again. Now it seems to be working. The radiator is currently only slightly warm. I will keep an eye on it.

However, one thing is still not entirely clear. Today, everyone was out of the house, and I am not sure if the ā€œaway temperature offsetā€ is working. Do you think the update I installed today will fix this? Can you check this based on my configuration? That would be my last point, then I wonā€™t bother you anymore! :smiley: :smiley:

1 Like

Yes, works in my setup :wink:

Hi @panhans
Thanks for creating the blueprint!
I tried to go through all the conversations but there are to many to filter what is important for me and what is not relevant so my question might allready have been answered :thinking:

I have a Danfoss Ally - changed ā€œCalibration Entity Key Wordā€ to ā€œexternal_temperature_sensorā€. Seems to be correct but could you please confirm?

I still get below error which is not straigh forward for me to understand :wink:

Could you please advice what to change?

Logger: homeassistant.helpers.template
Kilde: helpers/template.py:2746
FĆørste forekomst: 14.48.19 (4 forekomster)
Senest logget: 14.50.26

Template variable warning: ā€˜is_periodical_popp_calibrationā€™ is undefined when rendering ā€˜{% set n = namespace(dict=) %} {% if is_native_calibration_trigger %} {% for valve in valves_dph %} {% set calibration_entity = device_entities(device_id(valve)) | expand | selectattr(ā€˜domainā€™,ā€˜inā€™,ā€˜numberā€™) | selectattr(ā€˜entity_idā€™, ā€˜searchā€™, input_calibration_key_word) | map(attribute=ā€˜entity_idā€™) | first %} {% set min_val = state_attr(calibration_entity,ā€˜minā€™)%} {% set max_val = state_attr(calibration_entity,ā€˜maxā€™)%} {% set step = state_attr(calibration_entity, ā€˜stepā€™) | float(1) %} {% if rounding_mode == ā€˜manualā€™ %} {% set step = input_calibration_step_size | float(1) %} {% endif %} {% set current_temp = state_attr(valve,ā€˜current_temperatureā€™) | float(20) %} {% set new_state = value_temperature_sensor | float(current_temp) %} {% set old_state = states(calibration_entity) | float %} {% if is_aggressive_mode_calibration %} {% set temp_diff = state_attr(valve,ā€˜temperatureā€™) | float(target_temperature) - value_temperature_sensor | float %} {% if temp_diff * factor < input_aggressive_mode_range * -1 %} {% set new_state = new_state + input_aggressive_mode_offset * factor %} {% elif temp_diff * factor > input_aggressive_mode_range %} {% set new_state = new_state - input_aggressive_mode_offset * factor %} {% endif %} {% endif %} {% if step <= 1 and max_val | string | count < 4 %} {% set round_size = iif(ā€™.ā€™ in (step | string), (step | string).split(ā€˜.ā€™)[1] | length, 0) %} {% set new_state = ((new_state | float(0) / step) | round(0) * step) | round(round_size) | float %} {% else %} {% set new_state = new_state * 100 | int %} {% set old_state = old_state | int %} {% endif %} {% set update_calibration = old_state != new_state %} {% if is_periodical_popp_calibration and not update_calibration %} {% set last_updated = [calibration_entity] | expand | map(attribute=ā€˜last_updatedā€™) | first %} {% set update_calibration = as_datetime(current_time_stamp) - timedelta(minutes=20) >= last_updated %} {% endif %} {% if update_calibration %} {% set n.dict = n.dict + [(calibration_entity, [{ā€˜valueā€™: new_state, ā€˜valveā€™: valve}])] %} {% endif%} {% endfor %} {% endif %} {{ dict.from_keys(n.dict) }}ā€™

Thanks in advance :slight_smile:

1 Like

Thanks for reporting. Please check out the latest version. :wink:

I feel a bit overwhelmed by the number of options in the scope of what I would like to do. My scenario seems rather simple, but I am unsure on how to best tackle it:

  • I have a base temperature (BTP), when present.
  • Once per week, I need another temperature (WSP), per schedule, when present.
  • I would like to decrease to the temperature (A), when absent. It seems the away offset is not fit for that, is it? Or maybe switch off.
  • As the cherry on the cake, I would like to keep an option for a presence based schedule temperature (PBS).
    Thanks in advance for helping me out there.

Do you mean with present if a person is home?

Somebody is home ā†’ comfort
Nobody is home ā†’ eco

Is this like the first point just with another comfort temperature?

If you set persons you can enable an option in temperature tweak section to turn the climates off if nobody is home or you can go with frost protection to lower the target temperature.

I think this can be done in the presence section easily, right?

Newbie here, Thought i could set each thermostat to a schedule and independent temperature but it seems the multiple schedules are for holidays etc, not TRVā€™s. Am I right in thinking this can only control the entire house on a global temp and schedule?

Yes, indeed.

You can setup as many automations as you like, e.g. one for each room.

Thanks for fast reply. Didnā€™t know I was already 4 releases (5.2.9) behind when downloading blueprint for about 4 days ago - you are working fast :smiley:
Do I need to manually download an updated blueprint in the future to get updates or will it somehow popup that there is a new update?

You can setup the AHC Latest Version Sensor (link in the first post) and create a notification automation based on this sensor.

For updating just hit the following button in the blueprint overview:

2 Likes

@panhans
I am still using your blueprint and I really like it, big thanks again for this one!

I know that you created a documentation for this blueprint, but would you mind to share your setup with us? How have you setup your TRVs, your external sensors, the automation in general. Maybe a tutorial video on YouTube would really help to understand every aspect of the blueprint.

For example I didnā€™t know that you could create a sensor that shows the newest version of the blueprint.

Have you plans in that direction?

BR

Is the best path to use ā€œHeating Schedule Adjustmentsā€?

Calendar check could be an option as well, but it is not part of AHC any more, is it?

I came back with some more test. Without persons etc. simple as possible temperature trigger is not happening. Temperature it changes, it triggers the automation but it doesnā€™t open the TRV.
Last two traces:
Log-1 - Pastebin.com and Log-2 - Pastebin.com
Current config:

alias: "Living room: Advanced Heating Control"
description: ""
use_blueprint:
  path: panhans/advanced_heating_control.yaml
  input:
    input_trvs:
      - climate.living_room_radiator_right
    input_hvac_mode: auto
    input_temperature_sensor: sensor.living_room_th_sensor_2_temperature
    input_temperature_comfort_static: 22.5
    input_persons: []
    input_windows:
      - binary_sensor.living_room_windows_sensor
    input_mode_winter: binary_sensor.heating_winter_mode
    input_startup_delay:
      hours: 0
      minutes: 0
      seconds: 35
    input_schedulers: []

image

Well I started to get complains that smart heating is not that smartā€¦

Would it be possible to add a custom time value for Liming Protection? My thermostat controls a valve, that needs several minutes, before it opens, when the thermostat sets heating to ON. I guess there is some kind of capacitor in that valve, because when the thermostat sets heating to OFF, the valve will close after a few minutes.

In this situation, the Liming Protection will not make any sense to me. What do you think?

Thank you!

You need at least an entity that triggers the comfort mode. Just take an input boolean for guest mode or presence sensor. With your configuration the eco temperature is always set.