Hier gaan we, eerst de stook curve.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| template:
- sensor:
- name: "Heat pump heating curve float"
unit_of_measurement: "°C"
state: >
{% set target_room_temp = state_attr('climate.downstairs','temperature')|float %}
{% set outdoor_temp = states('sensor.our_home_outdoor_temperature')|float %}
{% set heating_curve_start_temp = 23.0 | float %} {# heating curve minimum temperature #}
{% set heating_curve_slope = 0.15 | float %} {# slope #}
{% set inside_outside_threshold = 4.0 | float %} {# temperature threshold between inside and outside before target temperature increases #}
{% if (target_room_temp - outdoor_temp) > inside_outside_threshold %}
{% set heat_curve = (heating_curve_start_temp + heating_curve_slope * (target_room_temp - outdoor_temp - inside_outside_threshold)) | float %}
{% else %}
{% set heat_curve = heating_curve_start_temp %}
{% endif %}
{{ heat_curve | round(2) }} |
Dit is mijn stookcurve. De minimum temp die ik heb ingesteld is 23C. Wij lopen altijd zonder schoenen in huis en willen geen koude voeten hebben :-)
Dan heb ik een offset tussen gewenste binnen temp en het punt waar de curve de temp gaat verhogen. Die offset staat nu op 4. Als de temp target 21C is, dan betekent dat dus dat de temp setting gaat oplopen vanaf 17 graden. De helling van de curve staat nu op 0.15, dat lijkt goed te werken. Dat betekent dat de target temp met 0.15C omhoog gaat per graad dat je buiten onder die 17C zit. Dat is een behoorlijk flauwe helling, zal afhangen van hoe goed het huis geïsoleerd is. Met 0.15 betekent dat dus dat de warmte pomp set temp maar 1 graad verandert per 6.7 graad temperatuur verandering buiten. Voor mij werkt dat goed, had eerder een hogere waarde maar heb die verlaagd omdat mijn thermostaat dan ging tegen sturen omdat het te warm werd.
Deze waarde is nog niet afgerond naar het dichtstbijzijnde gehele getal, dat komt later.
Hier wordt de thermostaat gestuurde correctie uitgerekend. De target temp wordt van de Tado thermostaat opgehaald en ook de actuele temperatuur. Het verschil wordt dan met 5 vermenigvuldigd om het verschil signaal te versterken. 5 werkt goed bij mij. Een 0.2 graad afwijking levert dan een 1 graad correctie op.
YAML:
1
2
3
4
5
6
7
| - sensor:
- name: "Heat Pump Thermostat offset"
unit_of_measurement: "°C"
state: >
{% set target_temperature = state_attr('climate.downstairs','temperature') | float %}
{% set actual_temperature = states('sensor.downstairs_temperature') | float %}
{{ (-5 * (actual_temperature - target_temperature)) | round(2) }} |
Vervolgens wordt het thermostaat signaal opgeteld bij de stookcurve om de target set temperatuur voor de warmtepomp te bereken. En ook wordt dan uiteindelijk een geheel getal afgeleverd en wordt er gecheckt op een ondergrens setting van 23C en een bovengrens van 30C.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| - sensor:
- name: "Heat pump heating target float"
unit_of_measurement: "°C"
state: >
{% set temp_offset = states('sensor.heat_pump_thermostat_offset')|float %}
{% set heat_curve = states('sensor.heat_pump_heating_curve_float')|float %}
{% set target_temp = temp_offset + heat_curve %}
{{ target_temp }}
- sensor:
- name: "Heat pump heating target"
unit_of_measurement: "°C"
state: >
{% set max_allowed_temp = 30 %}
{% set min_allowed_temp = 23 %}
{% set target_temp = states('sensor.heat_pump_heating_target_float') | float(0) %}
{% if target_temp < min_allowed_temp %}
{% set target_temp = min_allowed_temp %}
{% endif %}
{% if target_temp > max_allowed_temp %}
{% set target_temp = max_allowed_temp %}
{% endif %}
{{ target_temp | round(0) | int(0) }} |
Vervolgens een automation om minimaal om de 5 minuten te updaten
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| - id: '1730542822094'
alias: Automated heating
description: ''
triggers:
- trigger: state
entity_id:
- climate.downstairs
- sensor.downstairs_temperature
- sensor.our_home_outdoor_temperature
- trigger: time_pattern
minutes: /5
conditions: []
actions:
- action: number.set_value
metadata: {}
data:
value: '{% set target_temp = states(''sensor.heat_pump_heating_target'') %}
{{ target_temp | int(0) }}
'
target:
area_id: utility_room
device_id: f39e8acbdbf519a7d91c9d830f787c92
entity_id: number.target_temperature
mode: single |
Ik heb een paar parameter settings die belangrijk zijn om te weten als extra info.
1. ik stuur op de inlet temp. P116=0 ik vond dat stabieler werken.
2. hysterese op 2C: P26 op 2 omdat de water temperatuur laag is zul je met een grotere hysterese, zoals 5C wat volgens mij standaard is, heel lang moeten wachten voordat de pomp weer gaat verwarmen. Als je hogere temperaturen nodig hebt met radiators zal 5 graden best goed kunnen werken neem ik aan.
3. Inlet en Outlet water temp compensation stond standaard op 2C (P24 en P25). Heb die beide op 0 gezet. Dat zou geen invloed moeten hebben op de werking maar omdat ik temperatuur sensoren op de buizen heb zitten kon ik zien dat die 2C offset in mijn geval niet klopte. Met 0 offset geven mijn temp sensoren zo goed als dezelfde waarde aan als de waarden die van de warmtepomp zelf terugkomen.
Resultaat vandaag:
1. hele dag in ECO mode
2. thermostaat op 21.5C voor de hele dag, ik doe geen nachtverlaging
3. buitentemperatuur varieerde tussen 8 en 3 graden, gaat waarschijnlijk nog wel iets lager worden
4. warmtepomp set temp varieerde tussen 23 en 25C maar voor het grootste gedeelte van de dag op 24C
5. binnen temp varieerde van 21.55 tot 21.9, de 21.9 werd gehaald rond 12:00 omdat we zon hadden. De pomp ging in die tijd niet aan
6. omdat het later op de dag buiten kouder werd, ging de set temp naar 25C, vervolgens ging de binnen temp van 20.6 naar 20.8, te warm en dus pushed mijn thermostaat offset dan de set temp weer terug naar 24C en nu gaat de binnen temp weer richting de 20.6, hij zal zo wel weer een keer naar 25C set temp gaan. Mijn thermostaat regeling met die factor 5 versterking werkt dus goed om de over- en ondershoot heel klein te houden. Dat zal goed werken met vloerverwarming i.v.m. de trage werking, met radiatoren zal dat waarschijnlijk wat anders moeten werken om teveel "pendelen" van de set temp te voorkomen.
7. energieverbruik van de pomp vandaag van 00.00 tot 20:15 = 7.1 kWh, thermisch zou er ongeveer 34 kWh gegenereerd moeten zijn voor een COP vandaag van ongeveer 4.8