Anlage stumi75: Unterschied zwischen den Versionen
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 117: | Zeile 117: | ||
Die Heizkurze bestimmt anhand der Aussentemperatur den Vorlauf und somit den Energieeintrag - wenn dieser passend nachgeführt wird, bleibt die Temperatur im Haus konstant. | Die Heizkurze bestimmt anhand der Aussentemperatur den Vorlauf und somit den Energieeintrag - wenn dieser passend nachgeführt wird, bleibt die Temperatur im Haus konstant. | ||
− | Die Heishamon Rules | + | Die Heishamon Rules |
− | * | + | * schalten die Warmwasserbereitung um 13 Uhr ein, setzen anhand der Außentemperatur das Warmwasserziel, schalten bei warmen Temperaturen in der Nacht die WP komplett aus und drosseln die Wasserpumpenleistung in der Nacht (timer10) |
− | * schalten | + | * schalten beim Ende der Warmwasserbereitung wieder zurück auf Heizbetrieb ohne den Kompressorlauf zu unterbrechen (on @DHW_Power_Consumption) |
− | * | + | * kümmern sich um das Eindrosseln der Jeisha per Flüstermodus und Laufzeitverlängerung per Vorlauftemperaturverschiebung (on @Main_Outlet_Temp und on @Main_Target_Temp) |
Alles andere macht die Jeisha Steuerung. | Alles andere macht die Jeisha Steuerung. | ||
Zeile 129: | Zeile 129: | ||
=== Heishamon Rules === | === Heishamon Rules === | ||
+ | |||
+ | ===== Mit Kommentaren: ===== | ||
+ | |||
+ | Die Kommentare müssen vor dem Hochladen in HeishaMon entfernt werden, z.B. mit https://pypi.org/project/heishamon-rules-minify/ | ||
+ | |||
<pre> | <pre> | ||
on System#Boot then | on System#Boot then | ||
+ | -- Variables to remember state before DHW production starts(with sane defaults) | ||
#stateBeforeDHW = 1; | #stateBeforeDHW = 1; | ||
− | # | + | #OpModeBeforeDHW = 0; |
− | #targetLowBeforeDHW = | + | #targetLowBeforeDHW = 31; |
#targetHighBeforeDHW = 40; | #targetHighBeforeDHW = 40; | ||
+ | -- Turning the heatpump off at night: 0: functionality deactivated, 1: active, 2: heatpump should go off | ||
#offAtNight = 1; | #offAtNight = 1; | ||
setTimer(10, 40); | setTimer(10, 40); | ||
end | end | ||
+ | -- Time based actions live here | ||
on timer=10 then | on timer=10 then | ||
setTimer(10, 30); | setTimer(10, 30); | ||
Zeile 144: | Zeile 152: | ||
$minute = %minute; | $minute = %minute; | ||
if $hour == 6 && $minute == 0 then | if $hour == 6 && $minute == 0 then | ||
+ | -- Increase volume flow on cold days to increase COP | ||
if @Outside_Temp < 12 then | if @Outside_Temp < 12 then | ||
@SetMaxPumpDuty = 150; | @SetMaxPumpDuty = 150; | ||
end | end | ||
− | if #offAtNight == 2 && @Heatpump_State == 0 then | + | -- Heatpump was turned off before the night -> turn it on again |
+ | if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 0 then | ||
#offAtNight = 1; | #offAtNight = 1; | ||
@SetHeatpump = 1; | @SetHeatpump = 1; | ||
end | end | ||
end | end | ||
+ | if $hour == 9 && $minute == 0 && @Operating_Mode_State == 1 && #offAtNight == 2 && @Heatpump_State == 0 && @Outside_Temp > 27 then | ||
+ | #offAtNight = 1; | ||
+ | @SetHeatpump = 1; | ||
+ | end | ||
+ | -- Start DHW production with possibly highest source temperature (-> better COP) and high probability of PV power | ||
if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 then | if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 then | ||
+ | -- Remember state | ||
#stateBeforeDHW = @Heatpump_State; | #stateBeforeDHW = @Heatpump_State; | ||
− | # | + | #OpModeBeforeDHW = @Operating_Mode_State; |
#targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp; | #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp; | ||
#targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp; | #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp; | ||
− | $minDHWTarget = | + | -- Calculate DHW target temperature from outdoor temperature |
+ | $minDHWTarget = 45; | ||
$minOutside = 10; | $minOutside = 10; | ||
− | $maxDHWTarget = | + | $maxDHWTarget = 52; |
$maxOutside = 25; | $maxOutside = 25; | ||
$newDHWTarget = round($minDHWTarget + ((@Outside_Temp - $minOutside ) * ($maxDHWTarget - $minDHWTarget) / ($maxOutside - $minOutside))); | $newDHWTarget = round($minDHWTarget + ((@Outside_Temp - $minOutside ) * ($maxDHWTarget - $minDHWTarget) / ($maxOutside - $minOutside))); | ||
Zeile 168: | Zeile 185: | ||
$newDHWTarget = $maxDHWTarget; | $newDHWTarget = $maxDHWTarget; | ||
end | end | ||
− | if @DHW_Target_Temp != $newDHWTarget then | + | -- Only activate DHW production if required |
− | + | if @DHW_Temp < $newDHWTarget + @DHW_Heat_Delta then | |
+ | -- Only set new DHW target in case it changed (increase EEPROM life time) | ||
+ | if @DHW_Target_Temp != $newDHWTarget then | ||
+ | @SetDHWTemp = $newDHWTarget; | ||
+ | end | ||
+ | -- Set curve to be used directly after DHW production ends to keep the compressor running | ||
+ | @SetCurves = '{zone1:{heat:{target:{high:60,low:60}}}}'; | ||
+ | @SetOperationMode = @Operating_Mode_State + 4; | ||
+ | @SetHeatpump = 1; | ||
end | end | ||
− | |||
− | |||
− | |||
end | end | ||
− | if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 | + | -- Check if the heatpump can be turned off at night |
− | #offAtNight = 2; | + | if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then |
+ | if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 then | ||
+ | #offAtNight = 2; | ||
+ | end | ||
+ | if @Operating_Mode_State == 1 then | ||
+ | #offAtNight = 2; | ||
+ | @SetHeatpump = 0; | ||
+ | end | ||
end | end | ||
+ | -- Reduce volume flow at night to keep radiators quiet and propably turn off heatpump | ||
if $hour == 20 && $minute == 0 then | if $hour == 20 && $minute == 0 then | ||
@SetMaxPumpDuty = 105; | @SetMaxPumpDuty = 105; | ||
− | if #offAtNight == 2 && @Heatpump_State == 1 then | + | if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then |
@SetHeatpump = 0; | @SetHeatpump = 0; | ||
end | end | ||
Zeile 187: | Zeile 217: | ||
on @DHW_Power_Consumption then | on @DHW_Power_Consumption then | ||
− | if @ | + | -- On every change of DHW power consumption check if the heatpump is finished with DHW production |
− | @SetOperationMode = # | + | if @Heatpump_State == 1 && @Operating_Mode_State >= 3 && @DHW_Power_Consumption == 0 && ( @DHW_Temp >= @DHW_Target_Temp || @Main_Outlet_Temp >= @Main_Target_Temp ) then |
+ | -- Turn off DHW to switch the 3-way valve back to room heating to help keep the heat in the tank | ||
+ | @SetHeatpump = #stateBeforeDHW; | ||
+ | -- During summertime the heatpump is off - so probably turn it off again | ||
+ | @SetOperationMode = #OpModeBeforeDHW; | ||
+ | -- When heating slowly bring the heat curve back from 60 to what it was before to keep the compressor running | ||
setTimer(20, 210); | setTimer(20, 210); | ||
setTimer(21, 330); | setTimer(21, 330); | ||
Zeile 195: | Zeile 230: | ||
end | end | ||
on timer=20 then | on timer=20 then | ||
+ | -- Add 5 degrees to target temperature before ramping down the heat curve to keep compressor running | ||
+ | @SetZ1HeatRequestTemperature = 5; | ||
+ | -- Ramp down the heat curve | ||
@SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetHighBeforeDHW ,'}}}}'); | @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetHighBeforeDHW ,'}}}}'); | ||
end | end | ||
on timer=21 then | on timer=21 then | ||
$targetInBetween = (#targetHighBeforeDHW - #targetLowBeforeDHW) / 2 + #targetLowBeforeDHW; | $targetInBetween = (#targetHighBeforeDHW - #targetLowBeforeDHW) / 2 + #targetLowBeforeDHW; | ||
+ | @SetZ1HeatRequestTemperature = 5; | ||
@SetCurves = concat('{zone1:{heat:{target:{low:', $targetInBetween ,'}}}}'); | @SetCurves = concat('{zone1:{heat:{target:{low:', $targetInBetween ,'}}}}'); | ||
end | end | ||
on timer=22 then | on timer=22 then | ||
− | @ | + | @SetZ1HeatRequestTemperature = 5; |
@SetCurves = concat('{zone1:{heat:{target:{low:', #targetLowBeforeDHW ,'}}}}'); | @SetCurves = concat('{zone1:{heat:{target:{low:', #targetLowBeforeDHW ,'}}}}'); | ||
end | end | ||
+ | -- To keep the compressor running, throttle the heat pump because it is switched off | ||
+ | -- as soon as the delta between target and actual outlet is greater than 2 K. | ||
on @Main_Outlet_Temp then | on @Main_Outlet_Temp then | ||
− | + | throttle(); | |
end | end | ||
on @Main_Target_Temp then | on @Main_Target_Temp then | ||
− | + | throttle(); | |
end | end | ||
− | on | + | on throttle then |
− | + | -- If executed while off the heatpump might turn on the next day because #offAtNight can become 2 | |
− | + | if @Heatpump_State == 1 then | |
− | + | -- Identify if in room heat or cool(0 = heat, 1 = cool) or tank mode | |
− | + | if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then | |
− | + | -- @Z1_Heat_Request_Temp modifies @Main_Target_Temp so take it into account | |
+ | $outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp; | ||
+ | -- When catching up to the target temperature do not activate quiet mode (-> better COP) | ||
+ | if $outletDeltaHeat < 0.3 then | ||
+ | $newQuietMode = 0; | ||
+ | end | ||
+ | -- When over the target temperature thottle by activate quiet mode | ||
+ | if $outletDeltaHeat >= 1.3 then | ||
+ | $newQuietMode = 3; | ||
+ | end | ||
+ | $newHeatRequest = floor( $outletDeltaHeat ) - 1; | ||
+ | -- If the heat is not taken anymore and the heat request adjustment maximum is reached turn the headpump off at night | ||
+ | if $newHeatRequest > 5 then | ||
+ | $newHeatRequest = 5; | ||
+ | if #offAtNight == 1 then | ||
+ | #offAtNight = 2; | ||
+ | end | ||
+ | end | ||
+ | -- No negative heat request adjustment | ||
+ | if $newHeatRequest < 0 then | ||
+ | $newHeatRequest = 0; | ||
+ | end | ||
+ | -- Only set new values in case they changed (increase EEPROM life time) | ||
+ | if @Z1_Heat_Request_Temp != $newHeatRequest then | ||
+ | @SetZ1HeatRequestTemperature = $newHeatRequest; | ||
+ | end | ||
+ | else | ||
+ | -- Do the same as above for cooling mode | ||
+ | $outletDeltaCool = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Cool_Request_Temp; | ||
+ | if $outletDeltaCool > 0 then | ||
+ | $newQuietMode = 0; | ||
+ | end | ||
+ | if $outletDeltaCool <= -1 then | ||
+ | $newQuietMode = 3; | ||
+ | end | ||
+ | $newCoolRequest = floor( $outletDeltaCool ) + 1; | ||
+ | if $newCoolRequest < -2 then | ||
+ | $newCoolRequest = -2; | ||
+ | end | ||
+ | if $newCoolRequest > 3 then | ||
+ | $newCoolRequest = 3; | ||
+ | end | ||
+ | if @Z1_Cool_Request_Temp != $newCoolRequest then | ||
+ | @SetZ1CoolRequestTemperature = $newCoolRequest; | ||
+ | end | ||
+ | end | ||
+ | -- Only set new values in case they changed (increase EEPROM life time) | ||
+ | if @Quiet_Mode_Level != $newQuietMode then | ||
+ | @SetQuietMode = $newQuietMode; | ||
+ | end | ||
end | end | ||
− | if @Outside_Temp | + | end |
− | + | </pre> | |
+ | |||
+ | ===== Für HeishaMon zum Hochladen ===== | ||
+ | <div class="mw-collapsible mw-collapsed article-table"> | ||
+ | <pre> | ||
+ | on System#Boot then | ||
+ | #stateBeforeDHW = 1; | ||
+ | #OpModeBeforeDHW = 0; | ||
+ | #targetLowBeforeDHW = 31; | ||
+ | #targetHighBeforeDHW = 40; | ||
+ | #RampDownDHW = 0; | ||
+ | #offAtNight = 1; | ||
+ | setTimer(10, 40); | ||
+ | end | ||
+ | |||
+ | on timer=10 then | ||
+ | setTimer(10, 30); | ||
+ | $hour = %hour; | ||
+ | $minute = %minute; | ||
+ | if $hour == 6 && $minute == 0 then | ||
+ | if @Outside_Temp < 12 then | ||
+ | @SetMaxPumpDuty = 150; | ||
+ | end | ||
+ | if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 0 then | ||
+ | #offAtNight = 1; | ||
+ | @SetHeatpump = 1; | ||
+ | end | ||
end | end | ||
− | if $ | + | if $hour == 9 && $minute == 0 && @Operating_Mode_State == 1 && #offAtNight == 2 && @Heatpump_State == 0 && @Outside_Temp > 27 then |
− | + | #offAtNight = 1; | |
+ | @SetHeatpump = 1; | ||
end | end | ||
− | if | + | if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta ) then |
− | + | #stateBeforeDHW = @Heatpump_State; | |
+ | #OpModeBeforeDHW = @Operating_Mode_State; | ||
+ | @SetHeatpump = 1; | ||
+ | @SetOperationMode = @Operating_Mode_State + 4; | ||
end | end | ||
− | if $ | + | if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then |
− | + | if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 && @Outside_Temp > 8 then | |
− | if | ||
#offAtNight = 2; | #offAtNight = 2; | ||
+ | end | ||
+ | if @Operating_Mode_State == 1 then | ||
+ | #offAtNight = 2; | ||
+ | @SetHeatpump = 0; | ||
end | end | ||
end | end | ||
− | if @ | + | if $hour == 20 && $minute == 0 then |
− | + | @SetMaxPumpDuty = 105; | |
+ | if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then | ||
+ | @SetHeatpump = 0; | ||
+ | end | ||
end | end | ||
− | if @ | + | end |
− | @SetZ1HeatRequestTemperature = $newHeatRequest; | + | |
+ | on @ThreeWay_Valve_State then | ||
+ | if @ThreeWay_Valve_State == 1 then | ||
+ | #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp; | ||
+ | #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp; | ||
+ | $minDHWTarget = 45; | ||
+ | $minOutside = 10; | ||
+ | $maxDHWTarget = 52; | ||
+ | $maxOutside = 25; | ||
+ | $newDHWTarget = round($minDHWTarget + ((@Outside_Temp - $minOutside ) * ($maxDHWTarget - $minDHWTarget) / ($maxOutside - $minOutside))); | ||
+ | if @Outside_Temp <= $minOutside then | ||
+ | $newDHWTarget = $minDHWTarget; | ||
+ | end | ||
+ | if @Outside_Temp >= $maxOutside then | ||
+ | $newDHWTarget = $maxDHWTarget; | ||
+ | end | ||
+ | if @DHW_Target_Temp != $newDHWTarget then | ||
+ | @SetDHWTemp = $newDHWTarget; | ||
+ | end | ||
+ | $targetAfterDHW = ( @DHW_Target_Temp + 5 ); | ||
+ | @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}'); | ||
+ | end | ||
+ | end | ||
+ | on @DHW_Power_Consumption then | ||
+ | if @Heatpump_State == 1 && @Operating_Mode_State >= 3 && @DHW_Power_Consumption == 0 && ( @DHW_Temp >= @DHW_Target_Temp || @Main_Outlet_Temp >= @Main_Target_Temp ) then | ||
+ | #RampDownDHW = 1; | ||
+ | @SetHeatpump = #stateBeforeDHW; | ||
+ | @SetOperationMode = #OpModeBeforeDHW; | ||
+ | end | ||
+ | end | ||
+ | on @Main_Outlet_Temp then | ||
+ | throttle(); | ||
+ | end | ||
+ | on @Main_Target_Temp then | ||
+ | throttle(); | ||
+ | end | ||
+ | |||
+ | on throttle then | ||
+ | if @Heatpump_State == 1 then | ||
+ | if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then | ||
+ | if #RampDownDHW == 1 && @Z1_Heat_Request_Temp == 0 && @Main_Outlet_Temp < ( @Main_Target_Temp + 1.1 ) then | ||
+ | if @Z1_Heat_Curve_Target_High_Temp > ( #targetHighBeforeDHW + 4 ) then | ||
+ | $newTargetHigh = @Z1_Heat_Curve_Target_High_Temp - 4; | ||
+ | else | ||
+ | $newTargetHigh = #targetHighBeforeDHW; | ||
+ | end | ||
+ | if @Z1_Heat_Curve_Target_Low_Temp > ( #targetLowBeforeDHW + 4 ) then | ||
+ | $newTargetLow = @Z1_Heat_Curve_Target_Low_Temp - 4; | ||
+ | else | ||
+ | $newTargetLow = #targetLowBeforeDHW; | ||
+ | #RampDownDHW = 0; | ||
+ | end | ||
+ | if @Z1_Heat_Curve_Target_High_Temp != $newTargetHigh then | ||
+ | @SetCurves = concat('{zone1:{heat:{target:{high:', $newTargetHigh ,'}}}}'); | ||
+ | end | ||
+ | if @Z1_Heat_Curve_Target_Low_Temp != $newTargetLow then | ||
+ | @SetCurves = concat('{zone1:{heat:{target:{low:', $newTargetLow ,'}}}}'); | ||
+ | end | ||
+ | end | ||
+ | $outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp; | ||
+ | if $outletDeltaHeat < 0.3 then | ||
+ | $newQuietMode = 0; | ||
+ | end | ||
+ | if $outletDeltaHeat >= 1.6 then | ||
+ | $newQuietMode = 3; | ||
+ | end | ||
+ | $newHeatRequest = floor( $outletDeltaHeat ) - 1; | ||
+ | if $newHeatRequest > 5 then | ||
+ | $newHeatRequest = 5; | ||
+ | if #offAtNight == 1 then | ||
+ | #offAtNight = 2; | ||
+ | end | ||
+ | end | ||
+ | if $newHeatRequest < 0 then | ||
+ | $newHeatRequest = 0; | ||
+ | end | ||
+ | if @Z1_Heat_Request_Temp != $newHeatRequest then | ||
+ | @SetZ1HeatRequestTemperature = $newHeatRequest; | ||
+ | end | ||
+ | else | ||
+ | $outletDeltaCool = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Cool_Request_Temp; | ||
+ | if $outletDeltaCool > 0 then | ||
+ | $newQuietMode = 0; | ||
+ | end | ||
+ | if $outletDeltaCool <= -1 then | ||
+ | $newQuietMode = 3; | ||
+ | end | ||
+ | $newCoolRequest = floor( $outletDeltaCool ) + 1; | ||
+ | if $newCoolRequest < -2 then | ||
+ | $newCoolRequest = -2; | ||
+ | end | ||
+ | if $newCoolRequest > 3 then | ||
+ | $newCoolRequest = 3; | ||
+ | end | ||
+ | if @Z1_Cool_Request_Temp != $newCoolRequest then | ||
+ | @SetZ1CoolRequestTemperature = $newCoolRequest; | ||
+ | end | ||
+ | end | ||
+ | if @Quiet_Mode_Level != $newQuietMode then | ||
+ | @SetQuietMode = $newQuietMode; | ||
+ | end | ||
end | end | ||
end | end | ||
</pre> | </pre> | ||
+ | </div> | ||
=== Homeassistant Konfigurationen === | === Homeassistant Konfigurationen === | ||
Zeile 256: | Zeile 483: | ||
{% set calc = ( float( states('sensor.panasonic_heat_pump_main_operations_hours'),0) / float( states('sensor.panasonic_heat_pump_main_operations_counter'),1) ) | round(2) %} | {% set calc = ( float( states('sensor.panasonic_heat_pump_main_operations_hours'),0) / float( states('sensor.panasonic_heat_pump_main_operations_counter'),1) ) | round(2) %} | ||
{{ 0 if calc <= 0 else calc }} | {{ 0 if calc <= 0 else calc }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
recorder: | recorder: | ||
purge_keep_days: 400 | purge_keep_days: 400 | ||
commit_interval: 120 | commit_interval: 120 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
Zeile 539: | Zeile 645: | ||
hass.states['number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp'].state | hass.states['number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp'].state | ||
</pre> | </pre> | ||
− | |||
=== Jeisha Einstellungen === | === Jeisha Einstellungen === | ||
Zeile 551: | Zeile 656: | ||
Wenn das so aussieht, kann man sich freuen... | Wenn das so aussieht, kann man sich freuen... | ||
[[Datei:5kW-Panasonic-Aquarea-Jeisha.png]] | [[Datei:5kW-Panasonic-Aquarea-Jeisha.png]] | ||
+ | |||
+ | |||
+ | === Messfehler Stromverbrauch === | ||
+ | |||
+ | Wenn man dem "Stromzähler" der Aquarea vertraut und dem daraus resultierendem COP, dann ist man enttäuscht, wenn man am Saisonende auf die Stromrechnung kuckt... | ||
+ | |||
+ | [[Datei:Aquarea-Strom-COP.png]] | ||
+ | |||
+ | Mit höheren Wärmeleistungen wird der Unterschied sogar noch größer... | ||
+ | |||
+ | [[Datei:Aquarea-Strom-COP-2.png]] |
Version vom 18. November 2024, 17:58 Uhr
Vorwort
Diese Seite beschreibt den Umbau von einer Viessmann Atola 11kW Gasheizung auf eine Panasonic Aquarea Wärmepumpe WH-MDC05J3E5.
Der Bestand
Das Haus
- Reiheneckhaus in Oberbayern
- Baujahr 1990
- 2016 von uns erworben
- Erdgeschoß, Obergeschoß und Dachgeschoß mit zusammen 131 m² Wohnfläche plus Keller
- Erdgeschoß Wohnzimmer, Küche, WC
- Obergeschoß drei Zimmer, Bad
- Dachgeschoß ein Zimmer, Bad
- Wände aus 30 cm Hohllochziegel
- Ursprüngliche Dämmung Dach ca. 4 cm Engelshaar Glaswolle + 2 cm Rigipsplatte
- Unten Bodenplatte 1 cm Styropor + 7 CM Betonestrich
- Dach 26° Neigung Süd-Südwest/ Nord-Nordost
- 9,3 kWp PV Anlage auf dem Süddach
Die Heizung
- 11kW Viessmann Atola Niedertemperatur Gasbrenner BJ 1990
- EG: 3 Heizkörper in Reihe (90x55 22, 140x55 22, 60x55 10)
- OG: 5 Heizkörper in Reihe (70x55 20, 70x55 33, 60x55 22, nachgerüstete FBH (2016), Handtuchheizkörper (2016), 70x55 20)
- DG: 2 Heizkörper in Reihe (80x55 33, 80x55 33)
- Keller: 1 Heizkörper nachgerüstet parallel (140x90 22)
- Rauschfreier Volumenstrom 540 l/h
Die Idee
Heizung
- Einbau einer 3,5kW LLWP im EG im August 2022 wegen von Russland erzeugter Gaskrise
- Planungsbeginn Umbau auf Wärmepumpe trotz miserabler Hydraulik im Herbst 2022
- Beim Gasbrenner die Düse auf 5kW Heizleistung ausgelitert
- Stromanschluß des Gasbrenners auf Steckdose umgebaut und einen Tasmota WLAN Stecker dazwischen gesteckt um über den Stromverbrauch das Taktverhalten im Homeassistant zu protokollieren.
- Am 13.12.2022 bei minus 14 Grad war der Brenner immer noch am Takten - somit war klar, das 5kW Heizleistung ausreichen müssten.
Hydraulikschema
Die Einrohrheizung ist halt einfach Mist. Obwohl laut Wikipedia Einrohrheizungen schon seit den 1980ern kaum noch eingebaut wurden, hat der damalige Errichter trotzdem eine beauftragt - der drei Reihenhäuser wurden ja nur vermietet.
Die anderen Häuser der Straße wurden von Eigenheimbewohnern gebaut - da findet sich Fussbodenheizung und Zweirohrkreise bei Heizkörpern. Ein meiner Meinung nach weiterer Grund, warum sich Gesetzgeber ins Baugewerbe einmischen müssen, um Mindeststandards durchzusetzen.
Somit wurde der alte 200l WW-Speicher als Reihen-/Abtaupuffer eingeplant wie hier beschrieben mit Umschaltventil.
Dämmung
- Beim Umbau vor dem Einzug mussten schon die Fenster im EG getauscht werden - das passierte zum Glück 3-glasig.
- Sonst war die Dämmung des 1990er Zustands nur das mindeste.
PV
- 9,3 kWp Anlage kam in 2019 und Dank PV-Forum mal was selbst mit Vorwissen geplant
- Das Süddach ist komplett voll und die Technik für 2019 top.
Umsetzung
Dach
- Beim Umbau vor dem Einzug 2016 mit 16cm Mineralwolle gedämmt und wo möglich mit 40cm (Dachspitz und gefangene Räume über den Lauf der Zeit)
Fenster
- Alle Rolladenkästen aufgemacht, sauber gemacht, Bänder getauscht und mit 40mm Armaflex nachgedämmt
Wärmeverteilung
- Bei allen Heizkörpern vor dem Winter 2022 die Thermostate mit Blindstopfen ersetzt
- Den thermischen Abgleich mit den Einrohrhahnblöcken gemacht
Somit konnte der Volumenstrom auf 720 l/h rauschfrei erhöht werden
Installation Wärmepumpe
- Rückbau der Zirkulation
- 300l TESY Speicher unter der Küche aufgestellt, das Warmwasser kommt nun ohne Zirkulation in ca. 3 Sekunden in der Küche, in den Badezimmern nach ca. 10 Sekunden
- Thermosiphons beim WW-Speicher verbaut
- Drei Wärmemengenzähler: Heizen, WW-Bereitstelung und WW-Verbrauch
- Alten 200l WW-Speicher als Reihenpuffer verbaut - der Kurzschluß beim Abtauen wird durch ein weiteres, von der Jeisha gesteuertes, Afriso 3-Wege-Ventil geschalten.
- Gasbrenner entsorgt
Steuerung & Co
Ziele sind:
- möglichst lange Laufzeiten des Kompressors
- konstante Innenraumtemperatur bis in den Abend
- Ausnutzung der PV und höheren Quelltemperaturen durch eine Überhöhung tagsüber und einmalige Warmwasserbereitung um 13 Uhr
Statistiken
Ohne Messwerte und deren Auswertung keine Entscheidungen!
Wärmepumpen-Verbrauchsdatenbank
Steuerung
Die WP Heizungssteuerung läuft mit der Wassertemperatur geführten Heizkurve. Das Steuergerät ist an zentraler, schattiger Stelle im Wohnzimmer montiert und damit wird die Raumtemperatur gemessen.
Die Heizkurze bestimmt anhand der Aussentemperatur den Vorlauf und somit den Energieeintrag - wenn dieser passend nachgeführt wird, bleibt die Temperatur im Haus konstant.
Die Heishamon Rules
- schalten die Warmwasserbereitung um 13 Uhr ein, setzen anhand der Außentemperatur das Warmwasserziel, schalten bei warmen Temperaturen in der Nacht die WP komplett aus und drosseln die Wasserpumpenleistung in der Nacht (timer10)
- schalten beim Ende der Warmwasserbereitung wieder zurück auf Heizbetrieb ohne den Kompressorlauf zu unterbrechen (on @DHW_Power_Consumption)
- kümmern sich um das Eindrosseln der Jeisha per Flüstermodus und Laufzeitverlängerung per Vorlauftemperaturverschiebung (on @Main_Outlet_Temp und on @Main_Target_Temp)
Alles andere macht die Jeisha Steuerung.
Heizkurve
Heishamon Rules
Mit Kommentaren:
Die Kommentare müssen vor dem Hochladen in HeishaMon entfernt werden, z.B. mit https://pypi.org/project/heishamon-rules-minify/
on System#Boot then -- Variables to remember state before DHW production starts(with sane defaults) #stateBeforeDHW = 1; #OpModeBeforeDHW = 0; #targetLowBeforeDHW = 31; #targetHighBeforeDHW = 40; -- Turning the heatpump off at night: 0: functionality deactivated, 1: active, 2: heatpump should go off #offAtNight = 1; setTimer(10, 40); end -- Time based actions live here on timer=10 then setTimer(10, 30); $hour = %hour; $minute = %minute; if $hour == 6 && $minute == 0 then -- Increase volume flow on cold days to increase COP if @Outside_Temp < 12 then @SetMaxPumpDuty = 150; end -- Heatpump was turned off before the night -> turn it on again if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 0 then #offAtNight = 1; @SetHeatpump = 1; end end if $hour == 9 && $minute == 0 && @Operating_Mode_State == 1 && #offAtNight == 2 && @Heatpump_State == 0 && @Outside_Temp > 27 then #offAtNight = 1; @SetHeatpump = 1; end -- Start DHW production with possibly highest source temperature (-> better COP) and high probability of PV power if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 then -- Remember state #stateBeforeDHW = @Heatpump_State; #OpModeBeforeDHW = @Operating_Mode_State; #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp; #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp; -- Calculate DHW target temperature from outdoor temperature $minDHWTarget = 45; $minOutside = 10; $maxDHWTarget = 52; $maxOutside = 25; $newDHWTarget = round($minDHWTarget + ((@Outside_Temp - $minOutside ) * ($maxDHWTarget - $minDHWTarget) / ($maxOutside - $minOutside))); if @Outside_Temp <= $minOutside then $newDHWTarget = $minDHWTarget; end if @Outside_Temp >= $maxOutside then $newDHWTarget = $maxDHWTarget; end -- Only activate DHW production if required if @DHW_Temp < $newDHWTarget + @DHW_Heat_Delta then -- Only set new DHW target in case it changed (increase EEPROM life time) if @DHW_Target_Temp != $newDHWTarget then @SetDHWTemp = $newDHWTarget; end -- Set curve to be used directly after DHW production ends to keep the compressor running @SetCurves = '{zone1:{heat:{target:{high:60,low:60}}}}'; @SetOperationMode = @Operating_Mode_State + 4; @SetHeatpump = 1; end end -- Check if the heatpump can be turned off at night if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 then #offAtNight = 2; end if @Operating_Mode_State == 1 then #offAtNight = 2; @SetHeatpump = 0; end end -- Reduce volume flow at night to keep radiators quiet and propably turn off heatpump if $hour == 20 && $minute == 0 then @SetMaxPumpDuty = 105; if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then @SetHeatpump = 0; end end end on @DHW_Power_Consumption then -- On every change of DHW power consumption check if the heatpump is finished with DHW production if @Heatpump_State == 1 && @Operating_Mode_State >= 3 && @DHW_Power_Consumption == 0 && ( @DHW_Temp >= @DHW_Target_Temp || @Main_Outlet_Temp >= @Main_Target_Temp ) then -- Turn off DHW to switch the 3-way valve back to room heating to help keep the heat in the tank @SetHeatpump = #stateBeforeDHW; -- During summertime the heatpump is off - so probably turn it off again @SetOperationMode = #OpModeBeforeDHW; -- When heating slowly bring the heat curve back from 60 to what it was before to keep the compressor running setTimer(20, 210); setTimer(21, 330); setTimer(22, 480); end end on timer=20 then -- Add 5 degrees to target temperature before ramping down the heat curve to keep compressor running @SetZ1HeatRequestTemperature = 5; -- Ramp down the heat curve @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetHighBeforeDHW ,'}}}}'); end on timer=21 then $targetInBetween = (#targetHighBeforeDHW - #targetLowBeforeDHW) / 2 + #targetLowBeforeDHW; @SetZ1HeatRequestTemperature = 5; @SetCurves = concat('{zone1:{heat:{target:{low:', $targetInBetween ,'}}}}'); end on timer=22 then @SetZ1HeatRequestTemperature = 5; @SetCurves = concat('{zone1:{heat:{target:{low:', #targetLowBeforeDHW ,'}}}}'); end -- To keep the compressor running, throttle the heat pump because it is switched off -- as soon as the delta between target and actual outlet is greater than 2 K. on @Main_Outlet_Temp then throttle(); end on @Main_Target_Temp then throttle(); end on throttle then -- If executed while off the heatpump might turn on the next day because #offAtNight can become 2 if @Heatpump_State == 1 then -- Identify if in room heat or cool(0 = heat, 1 = cool) or tank mode if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then -- @Z1_Heat_Request_Temp modifies @Main_Target_Temp so take it into account $outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp; -- When catching up to the target temperature do not activate quiet mode (-> better COP) if $outletDeltaHeat < 0.3 then $newQuietMode = 0; end -- When over the target temperature thottle by activate quiet mode if $outletDeltaHeat >= 1.3 then $newQuietMode = 3; end $newHeatRequest = floor( $outletDeltaHeat ) - 1; -- If the heat is not taken anymore and the heat request adjustment maximum is reached turn the headpump off at night if $newHeatRequest > 5 then $newHeatRequest = 5; if #offAtNight == 1 then #offAtNight = 2; end end -- No negative heat request adjustment if $newHeatRequest < 0 then $newHeatRequest = 0; end -- Only set new values in case they changed (increase EEPROM life time) if @Z1_Heat_Request_Temp != $newHeatRequest then @SetZ1HeatRequestTemperature = $newHeatRequest; end else -- Do the same as above for cooling mode $outletDeltaCool = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Cool_Request_Temp; if $outletDeltaCool > 0 then $newQuietMode = 0; end if $outletDeltaCool <= -1 then $newQuietMode = 3; end $newCoolRequest = floor( $outletDeltaCool ) + 1; if $newCoolRequest < -2 then $newCoolRequest = -2; end if $newCoolRequest > 3 then $newCoolRequest = 3; end if @Z1_Cool_Request_Temp != $newCoolRequest then @SetZ1CoolRequestTemperature = $newCoolRequest; end end -- Only set new values in case they changed (increase EEPROM life time) if @Quiet_Mode_Level != $newQuietMode then @SetQuietMode = $newQuietMode; end end end
Für HeishaMon zum Hochladen
on System#Boot then #stateBeforeDHW = 1; #OpModeBeforeDHW = 0; #targetLowBeforeDHW = 31; #targetHighBeforeDHW = 40; #RampDownDHW = 0; #offAtNight = 1; setTimer(10, 40); end on timer=10 then setTimer(10, 30); $hour = %hour; $minute = %minute; if $hour == 6 && $minute == 0 then if @Outside_Temp < 12 then @SetMaxPumpDuty = 150; end if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 0 then #offAtNight = 1; @SetHeatpump = 1; end end if $hour == 9 && $minute == 0 && @Operating_Mode_State == 1 && #offAtNight == 2 && @Heatpump_State == 0 && @Outside_Temp > 27 then #offAtNight = 1; @SetHeatpump = 1; end if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta ) then #stateBeforeDHW = @Heatpump_State; #OpModeBeforeDHW = @Operating_Mode_State; @SetHeatpump = 1; @SetOperationMode = @Operating_Mode_State + 4; end if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 && @Outside_Temp > 8 then #offAtNight = 2; end if @Operating_Mode_State == 1 then #offAtNight = 2; @SetHeatpump = 0; end end if $hour == 20 && $minute == 0 then @SetMaxPumpDuty = 105; if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then @SetHeatpump = 0; end end end on @ThreeWay_Valve_State then if @ThreeWay_Valve_State == 1 then #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp; #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp; $minDHWTarget = 45; $minOutside = 10; $maxDHWTarget = 52; $maxOutside = 25; $newDHWTarget = round($minDHWTarget + ((@Outside_Temp - $minOutside ) * ($maxDHWTarget - $minDHWTarget) / ($maxOutside - $minOutside))); if @Outside_Temp <= $minOutside then $newDHWTarget = $minDHWTarget; end if @Outside_Temp >= $maxOutside then $newDHWTarget = $maxDHWTarget; end if @DHW_Target_Temp != $newDHWTarget then @SetDHWTemp = $newDHWTarget; end $targetAfterDHW = ( @DHW_Target_Temp + 5 ); @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}'); end end on @DHW_Power_Consumption then if @Heatpump_State == 1 && @Operating_Mode_State >= 3 && @DHW_Power_Consumption == 0 && ( @DHW_Temp >= @DHW_Target_Temp || @Main_Outlet_Temp >= @Main_Target_Temp ) then #RampDownDHW = 1; @SetHeatpump = #stateBeforeDHW; @SetOperationMode = #OpModeBeforeDHW; end end on @Main_Outlet_Temp then throttle(); end on @Main_Target_Temp then throttle(); end on throttle then if @Heatpump_State == 1 then if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then if #RampDownDHW == 1 && @Z1_Heat_Request_Temp == 0 && @Main_Outlet_Temp < ( @Main_Target_Temp + 1.1 ) then if @Z1_Heat_Curve_Target_High_Temp > ( #targetHighBeforeDHW + 4 ) then $newTargetHigh = @Z1_Heat_Curve_Target_High_Temp - 4; else $newTargetHigh = #targetHighBeforeDHW; end if @Z1_Heat_Curve_Target_Low_Temp > ( #targetLowBeforeDHW + 4 ) then $newTargetLow = @Z1_Heat_Curve_Target_Low_Temp - 4; else $newTargetLow = #targetLowBeforeDHW; #RampDownDHW = 0; end if @Z1_Heat_Curve_Target_High_Temp != $newTargetHigh then @SetCurves = concat('{zone1:{heat:{target:{high:', $newTargetHigh ,'}}}}'); end if @Z1_Heat_Curve_Target_Low_Temp != $newTargetLow then @SetCurves = concat('{zone1:{heat:{target:{low:', $newTargetLow ,'}}}}'); end end $outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp; if $outletDeltaHeat < 0.3 then $newQuietMode = 0; end if $outletDeltaHeat >= 1.6 then $newQuietMode = 3; end $newHeatRequest = floor( $outletDeltaHeat ) - 1; if $newHeatRequest > 5 then $newHeatRequest = 5; if #offAtNight == 1 then #offAtNight = 2; end end if $newHeatRequest < 0 then $newHeatRequest = 0; end if @Z1_Heat_Request_Temp != $newHeatRequest then @SetZ1HeatRequestTemperature = $newHeatRequest; end else $outletDeltaCool = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Cool_Request_Temp; if $outletDeltaCool > 0 then $newQuietMode = 0; end if $outletDeltaCool <= -1 then $newQuietMode = 3; end $newCoolRequest = floor( $outletDeltaCool ) + 1; if $newCoolRequest < -2 then $newCoolRequest = -2; end if $newCoolRequest > 3 then $newCoolRequest = 3; end if @Z1_Cool_Request_Temp != $newCoolRequest then @SetZ1CoolRequestTemperature = $newCoolRequest; end end if @Quiet_Mode_Level != $newQuietMode then @SetQuietMode = $newQuietMode; end end end
Homeassistant Konfigurationen
configuration.yaml
sensor: - platform: template sensors: custom_panasonic_heat_pump_average_runtime: friendly_name: Heatpump average runtime unit_of_measurement: h value_template: >- {% set calc = ( float( states('sensor.panasonic_heat_pump_main_operations_hours'),0) / float( states('sensor.panasonic_heat_pump_main_operations_counter'),1) ) | round(2) %} {{ 0 if calc <= 0 else calc }} recorder: purge_keep_days: 400 commit_interval: 120
Dashboards
Wärmepumpe
type: entities entities: - entity: sensor.panasonic_heat_pump_main_outside_temp - entity: sensor.panasonic_heat_pump_main_room_thermostat_temp - entity: sensor.panasonic_heat_pump_main_dhw_temp - entity: sensor.panasonic_heat_pump_main_threeway_valve_state - entity: switch.panasonic_heat_pump_main_defrosting_state - entity: sensor.panasonic_heat_pump_main_main_target_temp - entity: sensor.panasonic_heat_pump_main_main_outlet_temp - entity: sensor.panasonic_heat_pump_main_main_inlet_temp - entity: sensor.panasonic_heat_pump_main_compressor_freq - entity: sensor.panasonic_heat_pump_main_high_pressure - entity: sensor.panasonic_heat_pump_main_fan1_motor_speed - entity: sensor.panasonic_heat_pump_main_pump_flow - entity: sensor.panasonic_heat_pump_main_pump_speed - entity: sensor.panasonic_heat_pump_main_pump_duty - entity: sensor.panasonic_heat_pump_s0_watt_1 - entity: sensor.aquarea_energy_consumption - entity: sensor.aquarea_energy_production - entity: sensor.aquarea_cop - entity: sensor.panasonic_heat_pump_main_operations_counter - entity: sensor.panasonic_heat_pump_main_operations_hours - entity: sensor.custom_panasonic_heat_pump_average_runtime title: Aktuelle Werte state_color: true
type: grid square: false columns: 1 cards: - type: entities entities: - entity: water_heater.panasonic_heat_pump_main_dhw_target_temp - entity: climate.panasonic_heat_pump_main_z1_temp - entity: number.panasonic_heat_pump_main_z1_heat_request_temp - entity: number.panasonic_heat_pump_main_max_pump_duty - entity: number.panasonic_heat_pump_main_heat_delta - entity: number.panasonic_heat_pump_main_dhw_heat_delta - entity: number.panasonic_heat_pump_main_heating_off_outdoor_temp - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_high_temp - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp - entity: number.panasonic_heat_pump_main_z1_heat_curve_outside_low_temp - entity: number.panasonic_heat_pump_main_z1_heat_curve_outside_high_temp - entity: binary_sensor.panasonic_heat_pump_main_quiet_mode_schedule - entity: select.panasonic_heat_pump_main_quiet_mode_level - entity: binary_sensor.panasonic_heat_pump_main_dhw_installed - entity: binary_sensor.panasonic_heat_pump_main_room_heater_state - entity: binary_sensor.panasonic_heat_pump_main_dhw_heater_state title: Einstellungen
Wärmepumpe Kurven
type: vertical-stack cards: - type: history-graph entities: - entity: switch.panasonic_heat_pump_main_heatpump_state - entity: select.panasonic_heat_pump_main_operating_mode_state - entity: sensor.panasonic_heat_pump_main_threeway_valve_state - entity: switch.panasonic_heat_pump_main_defrosting_state - entity: binary_sensor.panasonic_heat_pump_main_internal_heater_state - entity: select.panasonic_heat_pump_main_quiet_mode_level - entity: switch.panasonic_heat_pump_main_holiday_mode_state hours_to_show: 8 title: Status - type: history-graph entities: - entity: sensor.panasonic_heat_pump_main_outside_temp - entity: sensor.panasonic_heat_pump_main_room_thermostat_temp - entity: number.panasonic_heat_pump_main_z1_heat_request_temp - entity: sensor.panasonic_heat_pump_main_dhw_temp - entity: sensor.panasonic_heat_pump_main_main_target_temp - entity: sensor.panasonic_heat_pump_main_main_outlet_temp - entity: sensor.panasonic_heat_pump_main_main_inlet_temp title: Temperaturen hours_to_show: 8 - type: history-graph entities: - sensor.panasonic_heat_pump_main_compressor_freq title: Kompressor hours_to_show: 8 - type: history-graph entities: - sensor.panasonic_heat_pump_main_pump_flow title: Volumenstrom hours_to_show: 8 - type: history-graph entities: - sensor.panasonic_heat_pump_main_pump_speed - sensor.panasonic_heat_pump_main_fan1_motor_speed title: Drehzahlen hours_to_show: 8 - type: history-graph entities: - entity: sensor.panasonic_heat_pump_main_pump_duty - entity: number.panasonic_heat_pump_main_max_pump_duty hours_to_show: 8 - type: history-graph entities: - sensor.panasonic_heat_pump_main_dhw_energy_consumption - sensor.panasonic_heat_pump_main_dhw_energy_production - sensor.panasonic_heat_pump_main_heat_energy_consumption - sensor.panasonic_heat_pump_main_heat_energy_production - sensor.panasonic_heat_pump_s0_watt_1 - sensor.panasonic_heat_pump_s0_watt_2 - sensor.aquarea_energy_consumption - sensor.aquarea_energy_production title: Energie hours_to_show: 8 - type: history-graph entities: - entity: sensor.panasonic_heat_pump_main_high_pressure hours_to_show: 8 - type: history-graph entities: - sensor.aquarea_cop hours_to_show: 8 - type: custom:plotly-graph refresh_interval: 10 title: Heat curve defaults: entity: show_value: true line: shape: spline layout: xaxis: type: number autorange: true entities: - entity: '' name: Zone 1 x: - >- $ex hass.states['number.panasonic_heat_pump_main_z1_heat_curve_outside_low_temp'].state - >- $ex hass.states['number.panasonic_heat_pump_main_z1_heat_curve_outside_high_temp'].state 'y': - >- $ex hass.states['number.panasonic_heat_pump_main_z1_heat_curve_target_high_temp'].state - >- $ex hass.states['number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp'].state
Jeisha Einstellungen
Meine Einstellungen
Beispiel Tagesverlauf
Wenn das so aussieht, kann man sich freuen...
Messfehler Stromverbrauch
Wenn man dem "Stromzähler" der Aquarea vertraut und dem daraus resultierendem COP, dann ist man enttäuscht, wenn man am Saisonende auf die Stromrechnung kuckt...
Mit höheren Wärmeleistungen wird der Unterschied sogar noch größer...