đŸ”„ Advanced Heating Control

@Benjamo How to help us help you - or How to ask a good question

Sorry if it’s already been answered, but this topic is so huge. I’ve searched by keywords but didn’t find (or understand) the exact config. I have 2 Danfoss Ally that I want to put in the same room.

  1. I want them to calibrate by setting their external temperature entity (not by calibration offset). How should I do that? In one post I found that the calibration entity keyword needs to be deleted. In another I found that it needs to be set to “external_temperature_sensor”
  2. Since I have 2 TRVs in the same room, can load balancing be configured through this blueprint? The logic is similar to calibration, the Ally has an input exposed to set “load room mean”. Similar how this blueprint does it Zigbee2MQTT - Danfoss Ally TRV Room Load Balancing

And in general, to people that are using Allys and this blueprint, what settings would you suggest? So there is no underheating or overshooting. I’ve seen mixed reviews for these TRVs. Some claim they are great, some say they are overpriced crap. e.g. one of the maintainers of BetterThermostat said he could never get them to work reliably and sent them back. So I assume you can’t just configure them however you want to get them to work properly.

The blueprint works well with my air conditioner so far. As soon as I get home, it sets the temperature to my desired 22 °C. However, I would like to have a threshold of about 3 degrees. Otherwise, it already turns on at 21.9 °C, which doesn’t increase comfort but does increase energy consumption.

Hello panhans,

thank you very much for your excellent work. So far, it has worked perfectly for me.

However, for the past few days, the automations have stopped triggering. Unfortunately, I can no longer trace when this started. HA update? Blueprint update? I just don’t know.

I noticed it with the calendar control. I have a workday and a holiday calendar for time control in 5 automations. I use the workday sensor as the switch entity.

The hardware consists of 12 FritzDect 301 devices. In addition, there are various opening and temperature sensors and persons.

What I have tried so far:

  • Installing the uptime sensor (it wasn’t necessary before, but I read in a post that this could solve the problem – it didn’t)

  • Re-entering all fields of an existing automation

  • Creating a new calendar with a calendar entry in the immediate future and storing it in an existing automation - no action

  • Deleting and completely recreating one of the 5 automations

Today, after I had already done a core update, I deleted all automations and the AHC blueprint, started HA, reinstalled the Blueprint, created a single automation and triggered it manually. See the trace output for the result I will upload. Link: https://controlc.com/b8ba2dba

I am an interested HA user, but I am anything but an expert and now I don’t know what else I can do


Hi There panhans, this seems like a great blueprint. I am trying to do something very simple. I have a mini split that doesnt seem to maintain the temperature very well at all. I installed a trusted sensor, and I want home assistant to control the heat, so it would need to set the thermostat higher for a period of time until it reaches the right temp. I did try this at first, but it didnt seem to be working right, not turning on at all. I just have one schedule that sets the comfort to a temp between 10am and 10pm, then goes to a lower temp. I have not really used blueprints before, but i added it, which became an automation and I linked the thermostat it needs to control and the sensor. I am not sure what other settings I need to fill out. Does the automation always run? Where does the actual real setpoint exist, for instance if I want to over-ride it temporariliy, how do I do that?

Would it be possible to add a kind of override function to the “Heating Schedule Adjustments” feature?

My use case is as follows: I have created a heating schedule for the entire apartment so that every heater in every room uses the same comfort temperature entity. Each room uses its own AHC Blueprint. This is the basis.

For the bathroom, I would like to set a higher temperature at certain times, which differs from the global comfort temperature entity. The idea is that “Heating Schedule Adjustments” only sets a local override for AHC in the bathroom.
For example:

- time: “06:00”
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  comfort: “22”

This would set the comfort temperature to 22°C only in the bathroom. Activating a “Local override” checkbox would not set the global comfort entity to 22, but only the temperature in the bathroom. Otherwise, the entire apartment would be set to 22°C. The 22°C in the bathroom would be overwritten by the next action in the heating schedule, so that the bathroom temperature would again match the global comfort temperature entity. For example, because at 8:00 a.m. all rooms are set to 20.5°C.

What do you think of the idea? Personally, I would find setting a comfort temperature entity for each room too much of an overhead.

@romanstanek
Thanks for your investigations. I am looking foward to fix this in the next release.

@stephanschleichstr13
Seems like there is something malformed with your ahc template sensor.

If you just want the comfort temperature if the room is occupied get rid of the schedule in the schedule section and only set the presence sensor. If you want to whitelist / blacklist time windows for presence detection, lets say you want to ignore present detection during night, you can set your schedule as Presence Sensor Scheduler.

@Benjamo

I will see if this is possible and send you a DM.

//EDIT: I did some research. But since I am not a tax-privileged and registered non-profit organization, donations are not tax-deductible.

Kofi also does not offer the option of generating a receipt for this purpose. :neutral_face:

@janus
Thanks. I’d merged it and it will be available in the next release.

Danfoss needs the external temperature entity. Just check the entity id and set a unique part of it into the key word text field.

Oh, this is new to me. I will have a look into this. But since I doesn’t own a danfoss ally thermostat this needs to be tested by someone else. :stuck_out_tongue:

So, you need some settings for hysteresis. Most thermostats operate like this for some there is an option called e.g. accuracy. I will see if I can implement something like this.

Sadly the link is expired. Could you reupload the trace for example in github gist or a cloud provider of your choice?

@jaygrovr
The automation runs until you didn’t set an entity for winter mode that i turned of the build in weather condition doesn’t match.
For your setup you may go with a schedule and your comfort and eco temperature. Don’t forget to setup the uptime integration. Always feel free to share a trace log of your automation when it doesn’t work like you expect. Don’t forget to run the automation manually before downloading the trace log.

@ErikSteiner
As I remember you can get rid of you comfort temperature entities in your automation settings and set your adjustments like this:

- time: “00:00”
  comfort: “input_numer.YOUR_GLOBAL_COMFORT_ENTITY”
- time: “06:00”
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  comfort: “22”
- time: “08:00”
  comfort: “input_numer.YOUR_GLOBAL_COMFORT_ENTITY”

Like this you can change the source of your comfort temperature dynamically. But I don’t think atm it’s possible the automation gets triggered when the comfort temperature entity changes. Maybe it simply needs a toggle for enabling/disabling synchronizing the temperatures of the adjustments with the entities.

2 Likes

@panhans Created a new one at this moment by manually action. Uploaded it to Github.

1 Like

Thanks for the reply. Unfortunately, I can no longer help with testing, but maybe it will help someone else. After playing around with Danfoss for a few days, I find it really incosistent and unpredicable. It seems worse than the Tuya ones, for 4x price
 Send them all back, and will be getting Sonoff instead.

1 Like

It looks like the documentation area is down, how do I “Setup” the uptime integration? I have installed it, but not sure if I need to do anything else. Your blueprint works, but its still overshooting the temperature by a long way. I am not sure why its not turning off when the setpoint is reached.

Hey there, thank you for the hint. Unfortunately it won’t work.

input_adjustments:
      - time: "00:00"
        comfort: input_number.heizung_komfort
      - time: "06:00"
        days:
          - Mon
          - Tue
          - Wed
          - Thu
          - Fri
        comfort: "22"
      - time: "07:30"
        days:
          - Mon
          - Tue
          - Wed
          - Thu
          - Fri
        comfort: input_number.heizung_komfort

I get this error in HA logs:

Logger: homeassistant.components.mqtt.number
Quelle: components/mqtt/number.py:190
Integration: MQTT (Dokumentation, Probleme)
Erstmals aufgetreten: 06:29:06 (49 Vorkommnisse)
Zuletzt protokolliert: 06:33:11

Invalid value for number.bad_thermostat_timer_mode_target_temp: 0 (range 4.0 - 35.0)

This is not AHC related. Just set the value manually of the entity. Had this issue too with my sonoff trvs and z2m.

I will add a feature that the adjustments temperatures won’t get synched with the temperature entities. As a workaround you can define a timer or boolean for the party mode and toggle it by another automation or manually.

The automation just sets the target temperature. The automation does not handle the valve or relays of your AC/thermostats.
Sonoff thermostats have an option vor accuracy. Most thermostats working fine when they get calibrated and some have some kind of hysteresis that results in too warm/cold rooms. In this case you could try to compensate this with help of the aggressive mode feature.

In my opinion, this is related to AHC. The log appears after saving the AHC blueprint for the bathroom. Before that, I deleted the comfort entity from the bathroom blueprint. All other thermostats, that still use the comfort entity throw the same error.

The initial plan, to only set the comfort temperature for the bathroom, with my code snip won’t work. The temperature is not set. However, I am looking forward to your feature. Is it maybe related to a conversion error? Like trying to convert a numeric from text to numeric, what it originally is not?

No, the Sonoff got a timer function with the latest firmware update and this is the target entity for the temperature of this timer function.
It may appears in the log because z2m refreshes the states of all entities related to the thermostat. Just navigate to the device page and set a valid number for this entity and the error will disappear. This entity (number.bad_thermostat_timer_mode_target_temp) is never touched by ahc as long as you set it anywhere in your configuration.

1 Like

whats wrong on them?

trigger:
  - trigger: event
    event_type: ahc_event
    event_data:
      automation: automation.advanced_heating_control_wohnzimmer # give the automation ID
binary_sensor:
  - name: "Advanced Heating Control Wohnzimmer States" # give the sensor a name
    unique_id: advanced_heating_control_wohnzimmer_states # and ofcourse an ID
    state: "{{ trigger.event.data.state }}"
    attributes:
      mode: "{{ trigger.event.data.mode }}"
      automation: "{{ trigger.event.data.automation }}"
      is_person_defined: "{{ trigger.event.data.is_person_defined }}"
      is_proximity_defined: "{{ trigger.event.data.is_proximity_defined }}"
      is_anybody_home: "{{ trigger.event.data.is_anybody_home }}"
      is_guest_mode: "{{ trigger.event.data.is_guest_mode }}"
      active_scheduler: "{{ trigger.event.data.active_scheduler }}"
      state_scheduler: "{{ trigger.event.data.state_scheduler }}"
      state_presence_sensor: "{{ trigger.event.data.state_presence_sensor }}"
      state_presence_scheduler: "{{ trigger.event.data.state_presence_scheduler }}"
      state_presence: "{{ trigger.event.data.state_presence }}"
      state_proximity_arrived: "{{ trigger.event.data.state_proximity_arrived }}"
      state_proximity_way_home: "{{ trigger.event.data.state_proximity_way_home }}"
      is_force_max_temperature: "{{ trigger.event.data.is_force_max_temperature }}"
      active_party_entity: "{{ trigger.event.data.active_party_entity }}"
      party_temp: "{{ trigger.event.data.party_temp }}"
      is_away: "{{ trigger.event.data.is_away }}"
      state_window: "{{ trigger.event.data.state_window }}"
      is_frost_protection: "{{ trigger.event.data.is_frost_protection }}"
      is_liming_protection: "{{ trigger.event.data.is_liming_protection }}"
      state_outside_temp: "{{ trigger.event.data.state_outside_temp }}"
      entry_time: "{{ trigger.event.data.entry_time }}"
      thermostats: "{{ trigger.event.data.thermostats }}"
      hvac_mode: "{{ trigger.event.data.hvac_mode }}"
      temperature_comfort: "{{ trigger.event.data.temperature_comfort }}"
      temperature_eco: "{{ trigger.event.data.temperature_eco }}"
      target_temperature: "{{ trigger.event.data.target_temperature }}"
      set_max_temperature: "{{ trigger.event.data.set_max_temperature }}"
      last_trigger_id: "{{ trigger.event.data.last_trigger_id }}"
      last_calibration: "{{ iif(trigger.event.data.calibration_trigger, now(), this.attributes.last_calibration)}}"
      last_temperature_change: "{{ iif(trigger.event.data.change_trigger, now(), this.attributes.last_temperature_change)}}"

where do i set this “keyword” entity? the screenshot doesn’t make that clear. i am updating from am older AHC version.

Hey @panhans,

currently AHC will lower down the TRV to 5°C if a window will open. Is there a way to use the internal window open switch?

1 Like

For Sonoff TRVZB with AHC version >=5.4.0, here’s what actually needs to be done when upgrading, if I interpret panhans correctly:

  • Edit the automation
  • expand the “Calibration” section
  • set the value of “Calibration Entity Key Word” to “external_temperature_input”

Then do the following in HA (or equivalent in Z2M):

  • Settings
  • Devices & services
  • MQTT-> devices
  • Find the thermostat, click it
  • set “Temperature” slider to 0
  • set “Temerature sensor” to “external”
  • set “Temperature accuracy” to “0.2”

This has a drawback tho, as the default Thermostat card will still report the internal temperature of the TRVZB, not the one from the external sensor. This is an issue of how temperature reporting happens with the device and not neccessarily home assistants fault.

Because of this issue, I tried going back to the old mode (setting the value of “Calibration Entity Key Word” to “calibration” and “Temerature sensor” to “internal”), but AHC >=5.4.0 doesn’t support this, as it seems to report absolute values to the “Local temperature calibration” field of the device, which expects an offset.

Maybe I’m missing something, but for now I’m going back to 5.3 (HomeAssistant/blueprints/automation/panhans/advanced_heating_control.yaml at ce16cea887ed2bbedfc3859d6bccc179b086967e · panhans/HomeAssistant · GitHub)

Are there actual advantages using the “external” sensor mode with absoulte values as opposed to “internal” sensor mode with relative offset values?

The latter at least makes it so that the reported temperature in the UI is correct.

1 Like

you have to create a number-value like: number.“name_of_the_trvzb”_external_temperature_input. Than you have to create a template that fills this number with the value of the external temperature sensor. Than it should work as expacted!

No, this should be done by AHC: đŸ”„ Advanced Heating Control - #3137 by panhans