Daikin Altherma Heating Controls via Home Assistant and Onecta Integration

Ok so likely not setting the world on fire here for revolutionary controls but it may help some, especially here in the UK, where Octopus are installing a lot of these Dainkin units.

so they have 2 modes, LWT which runs and balances temps of a heat curve and ignores internal temps. It’s very efficient but doesn’t balance internal comfort without a lot of tinkering.
Then Madoka mode that uses the internal thermostat and constantly messes about with the heat pump, is not great at efficiency but does do comfort well.

So, behold. LWT with some internal reference for the best of both.

alias: Heat Pump - Adjust Heat Curve Offset based on Room Temp
triggers:

- minutes: /30
  trigger: time_pattern
  conditions:

- condition: numeric_state
  entity_id: sensor.altherma_heat_pump_climatecontrol_room_temperature
  above: 0
  actions:

- variables:
  room_temp: >
  {{ states(‘sensor.altherma_heat_pump_climatecontrol_room_temperature’) |
  float(21) }}
  current_counter: |
  {{ states(‘input_number.heat_curve_offset_counter’) | float(0) }}

- choose:

  - conditions:

    - condition: numeric_state
      entity_id: sensor.altherma_heat_pump_climatecontrol_room_temperature
      above: 21.5

    - condition: numeric_state
      entity_id: sensor.altherma_heat_pump_climatecontrol_leaving_water_temperature
      above: 30
      sequence:

    - variables:
      new_value: |
      {% set next = current_counter - 1 %} {% if next < -5 %}
      -5
      {% else %}
      {{ next | int }}
      {% endif %}

    - target:
      entity_id: input_number.heat_curve_offset_counter
      data:
      value: “{{ new_value }}”
      action: input_number.set_value

  - conditions:

    - condition: numeric_state
      entity_id: sensor.altherma_heat_pump_climatecontrol_room_temperature
      below: 20.5
      sequence:

    - variables:
      new_value: |
      {% set next = current_counter + 1 %} {% if next > 5 %}
      5
      {% else %}
      {{ next | int }}
      {% endif %}

    - target:
      entity_id: input_number.heat_curve_offset_counter
      data:
      value: “{{ new_value }}”
      action: input_number.set_value

  - conditions:

    - condition: numeric_state
      entity_id: sensor.altherma_heat_pump_climatecontrol_room_temperature
      above: 20.5

    - condition: numeric_state
      entity_id: sensor.altherma_heat_pump_climatecontrol_room_temperature
      below: 21.5
      sequence:

    - target:
      entity_id: input_number.heat_curve_offset_counter
      data:
      value: 0
      action: input_number.set_value

- target:
  entity_id: climate.heating_leaving_water_offset
  data:
  temperature: “{{ states(‘input_number.heat_curve_offset_counter’) | int }}”
  action: climate.set_temperature
  mode: single

This automation will reference the internal thermostat every 30 minutes and then tweak the flow temperature by 1 up or down to help keep the room temp within the ideal mark of 20.5 and 21.5 degrees C.
Its max adjustment is +/- 5 to the flow temperature.

It also needs a helper to track that adjustment value which you can drop into your configuration.yaml

input_number:
heat_curve_offset_counter:
name: Heat Curve Offset Counter
min: -5
max: 5
step: 1
mode: box
initial: 0

This has been keeping my house warm now for a good few weeks and stopping the house over heating, whilst keeping the heat pump running slow and steady. Give it a look if you’re interested.

Welcome @belly120 - thanks for the contribution. I’ve slightly edited your post for formatting (you can use ``` to start and end a code block). I’m not at all familiar with the HA YAML, so please check I’ve not messed anything up :slight_smile:

Here’s what I normally write (thanks to Brian Orpin)

For future reference, when posting code or output, please put 3 ‘backticks’ (normally found at the top left of the keyboard) on a line of their own before the code, and 3 more backticks also on a line of their own after the code:

```
code
```

If it is something like php you can add a language identifier after the first 3 backticks: ```php or even ```text if you don’t want any language markup applied.

1 Like

Interesting.

Do you have any cop figures from before / after implementing this code?

How much of a difference to unit efficiency did it make and was the weather curve correctly configured before implementing.

Quite a few of us here have had Daikin installs and balancing the radiators and ensuring the ashp is not oversized has been the main issue.

Is your unit on heatpumpmonitor.org so we can see the impact at all. For reference mine is Farnborough, Hampshire.