🔥 Advanced Heating Control

I thought you wanted to get the config? :slight_smile:
But there is nothing to trace, it just doesn’t fire when using the on or off boolean for the presence as a test

Hi,

replying to my own post (2206):

I found, that I used an old blueprint version (4.x). I updated to the actual version 5.09. I read that for “Physical Temperature Change” to work, it is required to have entities for ECO and Comfort temperature defined.
I created “dummy” entities of the type “input-value”, set the min value to 19,5 degrees, the max value to 20,5. My heating plan configures the temperature to 20 degrees.

If i now decrease the valve manually to 17,5 degrees, the temperature will be set correctly, seconds later, it will be set to the min value of my dummy entity (==> 19,5) and then the temperature is set according to the heating-plan (==> 20,0).

Here the commented extract from the log file.

Manually increasing the temperature to 23,5 degrees shows the same behavior. Only difference is, that the max temperature of the dummy entity (==> 20,5) instead of the dummy min temperature is set.

Any ideas what going on there?

regards
Jens

@Tomibeck
Mode heat means manual mode. The automatic mode is the internal schedule. Its just the operation mode but not the currently active hvac mode (idle).
Some thermostats offer more modes but mainly they are just presets.

@victoroos
That’s not the config. It’s cut off. It’s just a blueprint snippet and starts with trigger variables. Just navigate to your automation and toggle to yaml mode.

Hey,
I now upgraded my Blueprint to V5 but my Frost Protection is still not working.
I set it to 12hours to test the function.
My presence is done via Iphone App and Geofence which is working good. I also checked that the person really was 12h away, which is true.
Can you help me?

All the best
Tino

alias: 🔥 WZ_Heating_Control_V2
description: ""
use_blueprint:
  path: panhans/advanced_heating_control.yaml
  input:
    input_trvs:
      - climate.hm_tc_it_wm_w_eu_leq1214931
    input_temperature_comfort_static: 20.5
    input_temperature_eco_static: 17.5
    input_adjustments:
      - time: "06:30"
        comfort: "20.0"
        calibration: "off"
      - time: "11:00"
        comfort: "20"
        calibration: "off"
      - time: "16:30"
        comfort: "20.5"
        calibration: "off"
      - time: "21:30"
        comfort: "19.5"
        calibration: "off"
      - time: "22:30"
        comfort: "18.0"
        calibration: "off"
    input_mode_party:
      - input_boolean.besuch
    input_party_legacy_restore: true
    input_persons:
      - person.tino
    input_people_leaving_home_duration:
      hours: 0
      minutes: 15
      seconds: 2
    input_away_offset: 2
    input_away_scheduler_mode: false
    input_away_presence_mode: false
    input_windows:
      - binary_sensor.hm_sec_sco_leq1468341
    input_window_legacy_restore: true
    input_window_open_temperature: 5
    input_frost_protection_duration:
      hours: 12
      minutes: 0
      seconds: 0
      days: 0
    input_frost_protection_temp: 16
    input_liming_protection: true
    input_mode_winter: input_boolean.heizautomatik

for the “Physical Temperature Change” is it still neccessarry to deactivate calibration and aggressiv mode?

:fire: Advanced Heating Control 5.1 :fire:

:new: force eco mode

:new: entity ids instead of numbers in temperature adjustments for eco or comfort possible

:adhesive_bandage: fix frost protection not triggering

:adhesive_bandage: fix physical change when windows are open

3 Likes

Hello,
I notice in the logs the following issue:

2024-12-02 22:55:19.951 ERROR (MainThread) [homeassistant.components.automation.bedroom_advanced_heating_control_2] Error rendering variables: ValueError: Template error: float got invalid i
nput 'None' when rendering template '{% set n = namespace(dict=[]) %}
{% if is_native_calibration_trigger %}

  {% for valve in valves_calibration_common %}

    {% set calibration_entities = device_entities(device_id(valve)) |
                                expand | selectattr('domain','in','number') |
                                selectattr('entity_id', 'search', input_calibration_key_word) |
                                map(attribute='entity_id') | list %}

    {% if calibration_entities | count > 0%}

      {% set calibration_entity = calibration_entities | first %}
      {% set step = state_attr(calibration_entity, 'step') | float %}
      {% set min_calibration_value = state_attr(calibration_entity,'min') | float %}
      {% set max_calibration_value = state_attr(calibration_entity,'max') | float %}
      {% set thermostat_temperature = state_attr(valve, 'current_temperature') | float %}
      {% set offset_old = states(calibration_entity) | float(0) %}

      {% set new_calibration_value = value_temperature_sensor | float - (thermostat_temperature - offset_old) %}

      {% if is_aggressive_mode_calibration %}           
        {% set temp_diff = state_attr(valve,'temperature') | float(target_temperature) - value_temperature_sensor %}

        {% if temp_diff * factor < input_aggressive_mode_range * -1 %}
          {% set new_calibration_value = new_calibration_value + input_aggressive_mode_offset * factor %}
        {% elif temp_diff * factor > input_aggressive_mode_range %}
          {% set new_calibration_value = new_calibration_value - input_aggressive_mode_offset * factor %}
        {% endif %}
      {% endif %}

      {% set new_calibration_value = iif(new_calibration_value > max_calibration_value, max_calibration_value, new_calibration_value) %}
      {% set new_calibration_value = iif(new_calibration_value < min_calibration_value, min_calibration_value, new_calibration_value) %}

      {% set round_size = iif('.' in (step | string) and not is_rounded_values, (step | string).split('.')[1] | length, 0) %}

      {% set offset_new = ((new_calibration_value | float(0) / step) | round(0) * step) | round(round_size) | float %}

      {% if (float(offset_old) - float(offset_new)) | abs >= float(input_calibration_delta) %}
        {% set n.dict = n.dict + [(calibration_entity, [{'value': offset_new, 'valve': valve}])] %}
      {% endif %}

    {% endif %}

  {% endfor %}
{% endif %}
{{ dict.from_keys(n.dict) }}' but no default was specified

Not sure if it needs some delay to get the value from the other sensor or something else

Ooh, I’m sorry, of course

alias: Livingroom heating
description: ""
use_blueprint:
  path: panhans/advanced_heating_control.yaml
  input:
    input_trvs:
      - climate.living_room
    input_temperature_sensor: sensor.ph_motion_lr_temperature
    input_temperature_comfort_static: 19.5
    input_temperature_eco_static: 16
    input_persons:
      - person.victor
      - person.floris
    input_schedulers:
      - schedule.lr_heating_sc
    input_away_offset: 4.5
    input_away_presence_mode: false
    input_away_scheduler_mode: true
    input_windows:
      - binary_sensor.livingroom_windows
    input_people_leaving_home_duration:
      hours: 0
      minutes: 5
      seconds: 0
    input_reset_temperature: true
    input_mode_guest: input_boolean.guest
    input_calibration_delta: 0.5
    input_mode_party: []
    input_min_instead_of_off: false
    input_physical_change: true
    input_presence_reaction_off_time:
      hours: 0
      minutes: 0
      seconds: 10
    input_presence_sensor: input_boolean.ha_test_toggle
    input_mode_outside_temperature: sensor.flawlessvictorious_outdoor_temperature
    input_mode_outside_temperature_threshold: 17.5
    input_presence_reaction_on_time:
      hours: 0
      minutes: 0
      seconds: 10
    input_away_presence_ignor_people: false
    input_scheduler_presence: schedule.lr_heating_motion_sc

I just tested something,
When ia llow teh away offset on presence based it works. However, I want to not apply the away offset but the eco temperature. Is that possible as well? Away si way lower then eco.

I’m a very happy user of this blueprint and have a feature request. This is inspired by the official Tado app.

Right now the weather adaptation is based on outside temperature. But what about sun condition? My apartment doesn’t need heating if the sun is shining even though outside is like 4-5 degrees. The apartment goes up to 22-23 in that case. So if that day is sunny, reduce heating.

since the update from 5.0.9 to the new 5.1 i got several errors like that:

Logger: homeassistant.components.automation.ahc_maria
Quelle: components/automation/init.py:689
Integration: Automatisierung (Dokumentation, Probleme)
Erstmals aufgetreten: 18:00:00 (3 Vorkommnisse)
Zuletzt protokolliert: 19:57:57

Error rendering variables: TypeError: unsupported operand type(s) for -: ‘str’ and ‘float’

There is no trace i can show!

Did you change something in the “heating adjustment” section? i think the problem is there!

- time: "07:30"
  eco: "18"
  calibration: "on"
- time: "18:00"
  eco: "15.5"
  calibration: "on"

should there be a . or a , at the eco at 18:00??

1 Like

@tasomaniac
I’d put this on my list.

@tco95ttocs
Yes, entity ids are possible now like:

- time: "07:30"
  eco: "input_number.another_number_entity"

But I’d just tested your adjustments and can not recreate this warning. I also use heating adjustments but can’t see such an error.

mmhh…i have 3 automations with this settings and 7 without, and only this 3 creates this error! the problem is, that the automation didn’t trigger and still run at comfort temp instead of eco temp! I will try one with the entity id, one with , and one with .

1 Like

15.5 also works for me. strange…

//EDIT: error found. sry :stuck_out_tongue:

:face_with_hand_over_mouth: :rofl: …i will test it

1 Like
- time: "6:30"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  scheduler: Winter Schedule
  comfort: "20"
- time: "11:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Winter Schedule
  comfort: "23"
- time: "14:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Winter Schedule
  comfort: "19"
- time: "18:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Winter Schedule
  comfort: "22"
- time: "21:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Winter Schedule
  comfort: "21"
- time: "6:30"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  comfort: "21"
  scheduler: Shoulder Schedule
- time: "11:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Shoulder Schedule
  comfort: "22"
- time: "14:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Shoulder Schedule
  comfort: "21"
- time: "18:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Shoulder Schedule
  comfort: "21"
- time: "21:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Shoulder Schedule
  comfort: "20"
- time: "6:30"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  scheduler: Summer Schedule
  comfort: "24"
- time: "11:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Summer Schedule
  comfort: "21"
- time: "14:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Summer Schedule
  comfort: "23"
- time: "18:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Summer Schedule
  comfort: "23"
- time: "21:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  scheduler: Summer Schedule
  comfort: "23"

Apologies, forgot to do that! Since I’ve adopted the v5 blueprint, the schedules arent working at all now… :frowning:

Can’t confirm this. Schedules are working fine since they are a base element of this blueprint.

I did some changes to the adjustments. Hopefully your issue is fixed now.

looks like its working now :slight_smile:

1 Like

Ok so i am looking for a way to control my trvs and my heater .
Found this blueprint and read alot thrue these post but i dont really understand how this works ,
i tried the blueprint entered my thermostat (nest thermostat that controls the heater pump) and a temp sensor i saved the blueprint and now i got an automation .

Do i add my trv’s as thermostats ? how do i control them then ?
First time using a blueprint so go easy on me :slight_smile:

What i want to do is use the trv’s to set the room temp and when a trv goes to heating it should activate the heater via the nest thermostat .

Is there maybe a youtube vid i can watch ?

Or is this not possible with the blueprint ?

Thank you for your continous work!
Did you have time to look ath the presence part.
I’m testing it out with a toggle helper now, and it only seems to work when I select it to use the away (with or without) ignore people offset instead of the eco temp.

Could you enable your presence entity and share a trace log with me? And could you explain your problem again or link to your post where you did this? Sry, to many unmanaged issues. :stuck_out_tongue:

1 Like