Panasonic Warmtepompen besturen via HeishaMon Rules
Dit is de start van een topic over de het besturen van Panasonic Warmtepompen via HeishaMon Rules (in combinatie met een Opentherm termostaat. In de herfst van 2023 is er een behoorlijke slag geslagen (dank @thehog & @CurlyMo!!) in de Opentherm ondersteuning van Heishamon en ook de nodige aanpassing aan de Rules gemaakt..
Inleiding
Natuurlijk kan de WP ook functioneren met alleen interne logica (en b.v. een externe aan/uit thermostaat) maar zoals uit de diverse topics hier op tweakers (o.a. het onvolprezen Node Red Dashboard for Heishamon van @edterbak) is niet iedereen gecharmeerd van de Panasonic kabouters die verantwoordelijk zijn voor die interne logica en wordt er aan alle kanten getweaked om de besturing te optimaliseren en naar onze hand te zetten..
HeishaMon functionaliteit
HeishaMon is in de basis een gateway tussen het (proprietary) serial Panasonic communicatie protocol en MQTT en bied daarmee de mogelijkheid de diverse parameters van de WP uit te lezen en te wijzigen. Maar er is meer: HeishaMon bied ook ondersteuning voor Rules en ook ondersteuning voor een Opentherm Thermostaat. De Opentherm ondersteuning is stand-alone, eigenlijk net als de interface naar de WP is HeishaMon een gateway tussen Opentherm en MQTT/Rules..
Besturen Warmtepomp via HeishaMon Rules
Het idee is dus dat 't door deze mogelijkheden van HeishaMon de WP (volledig) te besturen middels HeishaMon rules (in combinatie met een Opentherm thermostaat). Dit topic heeft dus als heel specifiek doel het delen van kennis/ervaringen/rules sets voor het (volledig) besturen van de WP via Rules (met of zonder een Opentherm thermostaat)..
Herbruikbare blokken (@CurlyMo)
Berekenen van de WAR gelijk aan die van de WPDe stooklijn waardes van de WP zelf worden gebruikt. De uitkomstwaarde is de global #maxTa.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| on System#Boot then #maxTa = 0; end on berekenWAR then if isset(@Z1_Heat_Curve_Target_Low_Temp) && isset(@Z1_Heat_Curve_Outside_High_Temp) && isset(@Z1_Heat_Curve_Target_High_Temp) && isset(@Z1_Heat_Curve_Outside_Low_Temp) && isset(@Outside_Temp) then $Ta1 = @Z1_Heat_Curve_Target_Low_Temp; $Tb1 = @Z1_Heat_Curve_Outside_High_Temp; $Ta2 = @Z1_Heat_Curve_Target_High_Temp; $Tb2 = @Z1_Heat_Curve_Outside_Low_Temp; $Tb3 = @Outside_Temp; if $Tb3 >= $Tb1 then #maxTa = $Ta1; elseif $Tb3 <= $Tb2 then #maxTa = $Ta2; else #maxTa = 1 + floor(0.9 + $Ta1 + (($Tb1 - $Tb3) * ($Ta2 - $Ta1) / ($Tb1 - $Tb2))); end end end |
Pompsnelheid aanpassen
Deze logica maakt het mogelijk om je pompsnelheid aan te passen, maar niet vaker te wisselen dan 1x per 5 minuten. Als je de setPumpDuty aanroept, zorg dan dat je #newPumpDuty variabele de gewenste nieuwe waarde bevat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| on System#Boot then #allowPumpDuty = 0; #newPumpDuty = 0; end on timer=4 then #allowPumpDuty = 1; end on setPumpDuty then if #allowPumpDuty == 1 && @Max_Pump_Duty != #newPumpDuty then setTimer(4, 900); #allowPumpDuty = 0; @SetMaxPumpDuty = #newPumpDuty; end end |
Silent modus o.b.v. tijd en/of buitentemperatuur
Deze logica past silent mode aan o.b.v. de buitentemperatuur en de tijd, maar wisselt niet vaker dan 1x per 5 minuten. De afhankelijkheid van de buitentemperatuur wordt gedaan om een slow-start via silentmode af te dwingen i.p.v. continue stooklijn sturing.
code:
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
| on System#Boot then #allowSilentMode = 0; #newPumpDuty = 0; #prevSilentMode = 0; end on timer=2 then #allowSilentMode = 1; #silentMode = 0; end on checkSilentMode then if isset(@Outside_Temp) == 1 && isset(@Heatpump_State) then if #allowSilentMode == 1 then if @Outside_Temp < 2 then if %hour > 22 || %hour < 7 then #silentMode = 1; else #silentMode = 0; end else if @Outside_Temp < 5 then #silentMode = 1; else if @Outside_Temp < 10 then #silentMode = 2; else #silentMode = 3; end end end if #prevSilentMode != #silentMode && @Heatpump_State == 1 then setTimer(2, 900); #allowSilentMode = 0; #prevSilentMode = #silentMode; @SetQuietMode = #silentMode; end end end end |
.
.
Rules set / Herbruikbare blokken ([@blb4])
Deze rules set wordt nu bijgewerkt op Github.[ Voor 229% gewijzigd door blb4 op 19-11-2023 00:11 . Reden: blokken blb4 verwijderd, verwijzing naar Github ]
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+ST GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, Kia EV6 84kWh EA MY25, gasloos '23