Das Takten ist für eine Wärmepumpe nicht gut. Es ist ineffizient und auch nicht gut für die Hardware. Den Vergleich mit einem Auto, dass immer nur Kurzstrecke gefahren wird, gefällt mir ganz gut, um das Problem zu beschreiben.
Aber wie oft taktet meine Wärmepumpe denn wirklich? Und für welche Betriebsart?
Die Lambda gibt über ein Modbus Register „hp1_operating_state“ die Betriebsart aus, hieran kann ich erkenne, ob die Wärmepumpe gerade in den Heiz- oder Warmwassermodus gewechselt ist. Und genau diese Übergänge benötigen wir, um die Anzahl der Taktungen in HomeAssistant anzeigen zu können.
Bereits mit dem Anwender-Login, kann ich die Schaltzyklen der Lambda nach Betriebsart auslesen, diese Zahlen müssen wir einmal auslesen und in einen Helper schreibe.
Dann kann jedes Mal, wenn die Lambda heizt, oder WW macht der Helper um 1 erhöht werden und schon haben wir die Anzahl der Taktungen im HomeAssistant. Dazu nutzen wir eine Automatisierung, die das „hp1_operating_state“ Register als state Trigger hat.
Um die täglichen Zyklen noch anzeigen zu können, nehmen wir einen weiteren Helper pro Betriebssart, erhöhen diesen auch und setzten ihn um Mitternacht zurück auf 0.
Wieder mal nicht so kompliziert.
Wie immer ist der Code in meine Git-Repro. https://github.com/GuidoJeuken-6512/HomeAssistant/tree/main
Und hier die beiden Automatisierungen.
Automatisierung
automation:
### heat pump cycling counter ############################
####### the initial values for the cycling must be taken once from the Lambda heat pump and entered into the sensor.
– id: ‚1727726999508‘
alias: increment HP Timings
description: Taktungen der WP hochzählen
triggers:
– entity_id:
– sensor.eu08l_hp1_operating_state
to: „1“
id: Heating
trigger: state
– entity_id:
– sensor.eu08l_hp1_operating_state
to: „2“
id: HotWater
trigger: state
conditions: []
action:
– choose:
– conditions:
– condition: trigger
id:
– Heating
sequence:
– action: counter.increment
metadata: {}
data: {}
target:
entity_id:
– counter.eu8l_heat_pump_cycling_diff
– counter.eu8l_heat_pump_cycling_daily
– conditions:
– condition: trigger
id:
– HotWater
sequence:
– action: counter.increment
metadata: {}
data: {}
target:
entity_id:
– counter.eu08l_hot_water_cycling_diff
– counter.eu08l_hot_water_cycling_daily
mode: single
– id: ‚1727727092095‘
alias: reset counter for daily HP timing
description: Zähler für daily tacktung WP resetten
triggers:
– at: „00:00:00“
trigger: time
conditions: []
action:
– action: counter.reset
metadata: {}
data: {}
target:
entity_id:
– counter.eu8l_heat_pump_cycling_daily
– counter.eu08l_hot_water_cycling_daily
mode: single
Und hier die Counter für die täglichen Zyklen, die sind bei mir in der lambda_sensor.yaml.
eu8l_heat_pump_cycling_daily:
name: eu08l_heat_pump_cycling_daily
initial: 0
eu08l_hot_water_cycling_daily:
name: eu8l_hot_water_cycling_daily
initial: 0
Die Sensoren für die Gesamtanzahl der Taktungen sind etwas komplizierter. Damit der Wert auch nach einem Neustart von HomeAssistant erhalten bleibt, benötigen wir je drei Sensoren.
Einen für den initialen Wert, den wir aus der Lambda ausgelesen haben (s. Screenshot),
einen, der hochgezählt wird und einen, der sich aus der Summe der beiden anderen Sensoren bildet.
## here the counter for total cycling values. they will also be increased as the daily cycling counter
## you have to take the initial values from the lambda
eu08l_heat_pump_cycling_start:
name: eu08l_heat_pump_cycling_start
initial: 56
eu08l_hot_water_cycling_start:
name: eu08l_hot_water_cycling_start
initial: 113
eu08l_heat_pump_cycling_diff:
name: eu08l_heat_pump_cycling_diff
initial: 0
eu08l_hot_water_cycling_diff:
name: eu8l_hot_water_cycling_diff
initial: 0
# In order to show total cycling values in the dashboard and to persist them in the DB, we have to add the cyceling_start & cyceleing_diff Values
sensor:
- platform: template
sensors:
eu08l_hot_water_cycling:
friendly_name: "eu08l_hot_water_cycling"
value_template: >
{% set count1 = states('counter.eu08l_hot_water_cycling_start') | int(0) %}
{% set count2 = states('counter.eu8l_hot_water_cycling_diff') | int(0) %}
{{ count1 + count2 }}
- platform: template
sensors:
eu08l_heat_pump_cycling:
friendly_name: "eu08l_heat_pump_cycling"
value_template: >
{% set count1 = states('counter.eu08l_heat_pump_cycling_start') | int(0) %}
{% set count2 = states('counter.eu08l_heat_pump_cycling_diff') | int(0) %}
{{ count1 + count2 }}
Und so kann es dann im HomeAssistant Dashboard aussehen: