Zoals velen heb ik een combinatie in huis van een Panasonic Monobloc warmtepomp in combinatie met een Heishamon printplaat voor uitlezing en aansturing en heb ik Home Assistant draaien voor huis automatisering.
Het mooie van de warmtepomp is dat deze behoorlijk te tweaken is om hem te laten doen wat je wil, en 1 van die dingen is het draaien op een zo laag mogelijk vermogen voor een zo lang mogelijke tijd. Daar zijn trucjes voor die al prima beschreven staan in bijvoobeeld het Panasonic Optimalisatie topic
Ik heb een scriptje gemaakt om vanuit HA elke minuut het setpoint te optimaliseren van de warmtepomp om op lage frequentie te blijven draaien, maar ook met de optie om bij een lagere buientemperatuur naar een WAR achtige regeling. Dat script heb ik eens gedeeld in het HA topic en sindsdien heb ik er de nodige vragen over gekregen maar ook de nodige updates aan gedaan.
Het orginele script:
Het script maakt gebruik van twee opties, een 'WAR' achtige regeling als de buitentemperatuur onder een bepaalde waarde komt of een regeling die gaat proberen een zo laag mogelijke frequentie te krijgen door de gevraagde temperatuur aan te passen naar de huidige geleverde temperatuur -1. Omdat ik er nog geen noodzaak tot heb gehad is de WAR regeling nu eigenlijk nog niet echt ingebouwd. 'climate.panasonic_wp' is een generic thermostat in HA die eigenlijk niets anders doet dan een temperatuur instellen die ik als gewenste ruimtetemperatuur gebruik.
Die is vervolgens aangepast om alleen naar de warmtepomp te schrijven bij aanpassing van 1 van de temperaturen:
Het doel van dit topic is ervaringen delen en kijken of we dit kunnen uitbouwen naar iets wat beter, slimmer en netter werkt.
Ja maar, het werkt niet
Het mooie van de warmtepomp is dat deze behoorlijk te tweaken is om hem te laten doen wat je wil, en 1 van die dingen is het draaien op een zo laag mogelijk vermogen voor een zo lang mogelijke tijd. Daar zijn trucjes voor die al prima beschreven staan in bijvoobeeld het Panasonic Optimalisatie topic
Ik heb een scriptje gemaakt om vanuit HA elke minuut het setpoint te optimaliseren van de warmtepomp om op lage frequentie te blijven draaien, maar ook met de optie om bij een lagere buientemperatuur naar een WAR achtige regeling. Dat script heb ik eens gedeeld in het HA topic en sindsdien heb ik er de nodige vragen over gekregen maar ook de nodige updates aan gedaan.
Het orginele script:
Het script maakt gebruik van twee opties, een 'WAR' achtige regeling als de buitentemperatuur onder een bepaalde waarde komt of een regeling die gaat proberen een zo laag mogelijke frequentie te krijgen door de gevraagde temperatuur aan te passen naar de huidige geleverde temperatuur -1. Omdat ik er nog geen noodzaak tot heb gehad is de WAR regeling nu eigenlijk nog niet echt ingebouwd. 'climate.panasonic_wp' is een generic thermostat in HA die eigenlijk niets anders doet dan een temperatuur instellen die ik als gewenste ruimtetemperatuur gebruik.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| alias: Panasonic optimizer description: Script draait elke minuut en past dynamisch setpoint van WP aan trigger: - platform: time_pattern minutes: /1 condition: [] action: - service: mqtt.publish data_template: topic: panasonic_heat_pump/commands/SetZ1HeatRequestTemperature retain: false payload_template: > {% set outputtemp = states('sensor.aquarea_outlet_temperature') | float %} {% set targettemp = states('sensor.aquarea_outlet_target_temperature') | float %} {% set frequency = states('sensor.aquarea_compressor_frequency') | float %} {% set setpoint = state_attr('climate.panasonic_wp', 'temperature') | float %} {% set roomTemperature = states('sensor.temperatuur_keuken') | float %} {% set outsideTemp = states('sensor.aquarea_outdoor_ambient') | float %} {% set deltaT = setpoint - roomTemperature %} {% set WARBasetemp = 28 %} {% set shift = 0 %} {% set hystOff = 0.5 %} {% set lowpowerlimittemp = 3 %} {% set newtarget = targettemp %} {% set WARsetpoint = WARBasetemp - outsideTemp %} {% if WARsetpoint < 35 %} {% set WARsetpoint = 35 %} {% endif %} {% if roomTemperature < (setpoint - 1.5) %} {% set shift=3%} {% elif roomTemperature < (setpoint -1 ) %} {% set shift=2%} {% elif roomTemperature < (setpoint - 0.5)%} {% set shift=1%} {% elif roomTemperature < (setpoint + 0.0)%} {% set shift = 0%} {% elif roomTemperature < (setpoint + 0.2)%} {% set shift = -1%} {% elif roomTemperature < (setpoint + 0.4)%} {% set shift = -2%} {% elif roomTemperature < (setpoint + 0.6)%} {% set shift = -3%} {% endif %} {% if outsideTemp > lowpowerlimittemp and roomTemperature > (setpoint-1) %} {% set newtarget = outputtemp - 1%} {% else %} {% set newtarget = WARBasetemp + shift%} {% endif %} {% if roomTemperature < (setpoint + hystOff ) %} {% set newtarget = newtarget %} {% if frequency == 0 and roomTemperature < setpoint %} {% set newtarget = outputtemp + 4 %} {% endif %} {% if frequency > 0 and outputtemp < 24 %} {% set newtarget = outputtemp + 2%} {% endif %} {% else %} {% set newtarget = outputtemp -3 %} {% endif %} {% if newtarget < 20 %} {% set newtarget = 20 %} {% endif %} {% if newtarget == targettemp %} {{ "%.0f" % (newtarget | int) }} {% else %} {{ "%.0f" % (newtarget | int) }} {% endif %} mode: single |
Die is vervolgens aangepast om alleen naar de warmtepomp te schrijven bij aanpassing van 1 van de temperaturen:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| alias: Panasonic optimizer description: Setpoint WP aanpassen variables: newtarget: > {% set outputtemp = states('sensor.aquarea_outlet_temperature') | float %} {% set targettemp = states('sensor.aquarea_outlet_target_temperature') | float %} {% set frequency = states('sensor.aquarea_compressor_frequency') | float %} {% set setpoint = state_attr('climate.panasonic_wp', 'temperature') | float %} {% set roomTemperature = states('sensor.temperatuur_keuken') | float %} {% set outsideTemp = states('sensor.aquarea_outdoor_ambient') | float %} {% set deltaT = setpoint - roomTemperature %} {% set WARBasetemp = 28 %} {% set shift = 0 %} {% set hystOff = 0.5 %} {% set lowpowerlimittemp = 3 %} {% set newtarget = targettemp %} {% set WARsetpoint = [35, WARBasetemp - outsideTemp] | max %} {% if roomTemperature < (setpoint - 1.5) %} {% set shift = 3 %} {% elif roomTemperature < (setpoint -1 ) %} {% set shift = 2 %} {% elif roomTemperature < (setpoint - 0.5) %} {% set shift = 1 %} {% elif roomTemperature < (setpoint + 0.0 )%} {% set shift = 0 %} {% elif roomTemperature < (setpoint + 0.2) %} {% set shift = -1 %} {% elif roomTemperature < (setpoint + 0.4) %} {% set shift = -2 %} {% elif roomTemperature < (setpoint + 0.6 )%} {% set shift = -3 %} {% endif %} {% if outsideTemp > lowpowerlimittemp and roomTemperature > (setpoint - 1) %} {% set newtarget = outputtemp - 1 %} {% else %} {% set newtarget = WARBasetemp + shift %} {% endif %} {% if roomTemperature < (setpoint + hystOff ) %} {% if frequency == 0 and roomTemperature < setpoint %} {% set newtarget = outputtemp + 4 %} {% endif %} {% if frequency > 0 and outputtemp < 24 %} {% set newtarget = outputtemp + 2 %} {% endif %} {% else %} {% set newtarget = outputtemp -3 %} {% endif %} {{ [20, newtarget] | max }} trigger: - platform: template value_template: "{{ newtarget != states('sensor.aquarea_outlet_target_temperature') | float }}" condition: [] action: - service: mqtt.publish data_template: topic: panasonic_heat_pump/commands/SetZ1HeatRequestTemperature retain: false payload_template: "{{ target_temp }}" mode: single |
Het doel van dit topic is ervaringen delen en kijken of we dit kunnen uitbouwen naar iets wat beter, slimmer en netter werkt.
Ja maar, het werkt niet
- Dit scriptje gaat er vanuit dat je de Heishamon hebt toegevoegd aan Home Assistant volgens deze methode.
- Verder, het gaat er vanuit dat je de WP een directe watertemperatuur geeft. Alleen in die stand kun je door middel van het SetZ1HeatRequestTemperature topic een gewenste temperatuur opgeven in plaats van een temperatuurshift.
- Waar kan ik de meest recente versie vinden? Mijn versie staat hier https://github.com/patrickdewitNL/HA-Heisha-Pana (in theorie, ik ben geen held met GitHub)