Anlage stumi75: Unterschied zwischen den Versionen

Aus Aquarea Club
Zur Navigation springen Zur Suche springen
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 41: Zeile 41:
 
== Hydraulikschema ==
 
== 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.
+
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.
 +
 
 +
Die Einrohrheizung ist einfach Mist:
 +
* Geringer Volumenstrom
 +
* Bei Verwendung eines Überstromventils geht wegen des hohen Gegendrucks der Einrohrheizung bei Heizbetrieb das Volumen durch das Ventil direkt in den Puffer
 +
 
 +
Somit wurde der alte 200l WW-Speicher als Reihen-/Abtaupuffer eingeplant [http://aquarea.smallsolutions.de/index.php?title=W%C3%A4rmepumpen_und_Radiatoren_-_geht_das%3F#Abtauproblematik.2C_R.C3.BCcklaufpuffer_und_thermische_Behaglichkeit wie hier beschrieben] mit elektrischem Umschaltventil.
  
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.
+
Dabei wird ein zweites 3-Wege Ventil zwischen Vorlauf Heizkreis und Vorlauf Reihenpuffer eingebracht, um bei Abtaubetrieb einen Kurzschluß von der Wärmepumpe zum Reihenpuffer herzustellen.
 +
Im Heizbetrieb läuft der gesamte Volumenstrom durch den Heizkreis und dann durch den Reihenpuffer.
 +
[[Datei:Heizungspuffer mit Abtau-Ventil.jpg|ohne|mini]]
  
Somit wurde der alte 200l WW-Speicher als Reihen-/Abtaupuffer eingeplant [http://aquarea.smallsolutions.de/index.php?title=W%C3%A4rmepumpen_und_Radiatoren_-_geht_das%3F#Abtauproblematik.2C_R.C3.BCcklaufpuffer_und_thermische_Behaglichkeit wie hier beschrieben] mit Umschaltventil.
+
Das 3-Wege Ventil wird durch das Abtausignal der Jeisha umgeschalten (AB - Reihenpuffer Vorlauf, B - Heizkreis Rücklauf, A - Wärmepumpe Vorlauf).
 +
[[Datei:Jeisha-Platine-Verkabelung-Abtausteuerung.jpg.jpg|ohne|mini]]
  
 
== Dämmung ==
 
== Dämmung ==
Zeile 86: Zeile 96:
 
[[Datei:WW-Speicher nach Einbau WMZ.jpg|mini]]
 
[[Datei:WW-Speicher nach Einbau WMZ.jpg|mini]]
  
[[Datei:Heizungspuffer mit Abtau-Ventil.jpg|mini]]
 
  
[[Datei:Jeisha-Platine-Verkabelung-Abtausteuerung.jpg.jpg|mini]]
 
  
 
== Steuerung & Co ==
 
== Steuerung & Co ==
Zeile 143: Zeile 151:
 
-- Turning the heatpump off at night: 0: functionality deactivated, 1: active, 2: heatpump should go off
 
-- Turning the heatpump off at night: 0: functionality deactivated, 1: active, 2: heatpump should go off
 
   #offAtNight = 1;
 
   #offAtNight = 1;
 +
-- Set water pump back to delta-T automatic
 +
  @SetPump = 0;
 
   setTimer(10, 40);
 
   setTimer(10, 40);
 
end
 
end
Zeile 154: Zeile 164:
 
-- Increase volume flow on cold days to increase COP
 
-- Increase volume flow on cold days to increase COP
 
       if @Outside_Temp < 12 then
 
       if @Outside_Temp < 12 then
         @SetMaxPumpDuty = 150;
+
         @SetMaxPumpDuty = 160;
 
       end
 
       end
 
-- Heatpump was turned off before the night -> turn it on again
 
-- Heatpump was turned off before the night -> turn it on again
Zeile 167: Zeile 177:
 
   end
 
   end
 
-- Start DHW production with possibly highest source temperature (-> better COP) and high probability of PV power
 
-- 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 == 0 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta )) || @DHW_Temp < 20 ) && @Operating_Mode_State < 3 then
 
-- Remember state
 
-- Remember state
 
       #stateBeforeDHW = @Heatpump_State;
 
       #stateBeforeDHW = @Heatpump_State;
 
       #OpModeBeforeDHW = @Operating_Mode_State;
 
       #OpModeBeforeDHW = @Operating_Mode_State;
      #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp;
+
-- Activate heatpump (if previously off) and set to DHW mode
      #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp;
+
      @SetHeatpump = 1;
-- Calculate DHW target temperature from outdoor temperature
+
      @SetOperationMode = #OpModeBeforeDHW + 4;
      $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
 
   end
 
-- Check if the heatpump can be turned off at night
 
-- Check if the heatpump can be turned off at night
 
   if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then
 
   if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then
       if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 then
+
       if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 && @Outside_Temp > 9 then
 
         #offAtNight = 2;
 
         #offAtNight = 2;
 
       end
 
       end
Zeile 209: Zeile 197:
 
-- Reduce volume flow at night to keep radiators quiet and propably turn off heatpump
 
-- 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 = 110;
 
       if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then   
 
       if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then   
 
         @SetHeatpump = 0;
 
         @SetHeatpump = 0;
Zeile 219: Zeile 207:
 
-- On every change of DHW power consumption check if the heatpump is finished with DHW production
 
-- 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
 
   if @Heatpump_State == 1 && @Operating_Mode_State >= 3 && @DHW_Power_Consumption == 0 && ( @DHW_Temp >= @DHW_Target_Temp || @Main_Outlet_Temp >= @Main_Target_Temp ) then
 +
-- During summertime the heatpump is off - so probably turn it off again
 +
      @SetHeatpump = #stateBeforeDHW;
 
-- Turn off DHW to switch the 3-way valve back to room heating to help keep the heat in the tank
 
-- Turn off DHW to switch the 3-way valve back to room heating to help keep the heat in the tank
 +
      @SetOperationMode = #OpModeBeforeDHW;
 +
  end
 +
end
 +
on @ThreeWay_Valve_State then
 +
-- On every change of the 3-way valve check if in room or tank mode
 +
  if @ThreeWay_Valve_State == 1 then
 +
-- Remember state
 +
      #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp;
 +
      #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp;
 +
-- Set to DHW mode (required if "Force DHW" button has been pressed)
 +
      @SetOperationMode = #OpModeBeforeDHW + 4;
 +
-- 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 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
 +
      $targetAfterDHW = ( @DHW_Target_Temp + 5 );
 +
      @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}');
 +
-- Set water pump to test mode to max out on water volume (increase COP)
 +
      @SetPump = 1;
 +
  else
 +
- Switching back to room heating/cooling
 
       @SetHeatpump = #stateBeforeDHW;
 
       @SetHeatpump = #stateBeforeDHW;
-- During summertime the heatpump is off - so probably turn it off again
 
 
       @SetOperationMode = #OpModeBeforeDHW;
 
       @SetOperationMode = #OpModeBeforeDHW;
-- When heating slowly bring the heat curve back from 60 to what it was before to keep the compressor running
+
-- Set water pump to test mode to max out on water volume (to get quickly back to previous heating temperature)
      setTimer(20, 210);
+
       @SetPump = 1;
       setTimer(21, 330);
+
-- Set timer for the end of the ramp down
       setTimer(22, 480);
+
       setTimer(20, 240);
 
   end
 
   end
 
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
+
-- Increase target temperature before switching back to original heating 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;
 
   @SetZ1HeatRequestTemperature = 5;
   @SetCurves = concat('{zone1:{heat:{target:{low:', #targetLowBeforeDHW ,'}}}}');
+
-- Switching back to original heating curve
 +
   @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetLowBeforeDHW ,'}}}}');
 +
-- Set water pump back to delta-T automatic
 +
  @SetPump = 0;
 
end
 
end
  
 
-- To keep the compressor running, throttle the heat pump because it is switched off
 
-- 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.
 
-- as soon as the delta between target and actual outlet is greater than 2 K.
 +
on @Main_Target_Temp then
 +
  throttle();
 +
end
 
on @Main_Outlet_Temp then
 
on @Main_Outlet_Temp then
 
   throttle();
 
   throttle();
 
end
 
end
on @Main_Target_Temp then
+
on @Main_Inlet_Temp then
 
   throttle();
 
   throttle();
 
end
 
end
Zeile 258: Zeile 277:
 
-- Identify if in room heat or cool(0 = heat, 1 = cool) or tank mode
 
-- 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
 
       if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then
 +
-- Reduce heat request when leading room is over 22 degrees
 +
        #roomDelta = 0;
 +
        if @Outside_Temp < 7 && @Room_Thermostat_Temp > 22 then
 +
            #roomDelta = -1;
 +
        end
 
-- @Z1_Heat_Request_Temp modifies @Main_Target_Temp so take it into account
 
-- @Z1_Heat_Request_Temp modifies @Main_Target_Temp so take it into account
         $outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp;
+
         #outletDeltaHeat = @Main_Outlet_Temp - @Main_Target_Temp + @Z1_Heat_Request_Temp - #roomDelta;
 
-- When catching up to the target temperature do not activate quiet mode (-> better COP)
 
-- When catching up to the target temperature do not activate quiet mode (-> better COP)
         if $outletDeltaHeat < 0.3 then
+
         if #outletDeltaHeat < 0.3 then
 
             $newQuietMode = 0;
 
             $newQuietMode = 0;
 
         end
 
         end
 
-- When over the target temperature thottle by activate quiet mode
 
-- When over the target temperature thottle by activate quiet mode
         if $outletDeltaHeat >= 1.3 then
+
         if #outletDeltaHeat >= 1.6 then
 
             $newQuietMode = 3;
 
             $newQuietMode = 3;
 
         end
 
         end
         $newHeatRequest = floor( $outletDeltaHeat ) - 1;
+
         #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 the heat is not taken anymore and the heat request adjustment maximum is reached turn the headpump off at night
         if $newHeatRequest > 5 then
+
         if #newHeatRequest > 5 then
             $newHeatRequest = 5;
+
             #newHeatRequest = 5;
             if #offAtNight == 1 then
+
             if #offAtNight == 1 && @Outside_Temp > 9 then
 
               #offAtNight = 2;
 
               #offAtNight = 2;
 
             end
 
             end
 
         end
 
         end
-- No negative heat request adjustment
+
-- Set reduced heat request only if it does not turn the compressor off
         if $newHeatRequest < 0 then
+
         if #newHeatRequest <= 0 && ( @Main_Outlet_Temp  - @Main_Target_Temp ) < 2 then
             $newHeatRequest = 0;
+
             #newHeatRequest = #roomDelta;
 
         end
 
         end
 
-- Only set new values in case they changed (increase EEPROM life time)
 
-- Only set new values in case they changed (increase EEPROM life time)
         if @Z1_Heat_Request_Temp != $newHeatRequest then
+
         if @Z1_Heat_Request_Temp != #newHeatRequest then
             @SetZ1HeatRequestTemperature = $newHeatRequest;
+
             @SetZ1HeatRequestTemperature = #newHeatRequest;
 
         end
 
         end
 
       else
 
       else
Zeile 313: Zeile 337:
  
 
===== Für HeishaMon zum Hochladen =====
 
===== Für HeishaMon zum Hochladen =====
<div class="mw-collapsible mw-collapsed article-table">
 
 
<pre>
 
<pre>
 
on System#Boot then
 
on System#Boot then
Zeile 321: Zeile 344:
 
   #targetHighBeforeDHW = 40;
 
   #targetHighBeforeDHW = 40;
 
   #offAtNight = 1;
 
   #offAtNight = 1;
 +
  @SetPump = 0;
 
   setTimer(10, 40);
 
   setTimer(10, 40);
 
end
 
end
Zeile 341: Zeile 365:
 
       @SetHeatpump = 1;
 
       @SetHeatpump = 1;
 
   end
 
   end
   if %hour == 13 && %minute == 00 && @Operating_Mode_State < 3 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta ) then
+
   if (( %hour == 13 && %minute == 0 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta )) || @DHW_Temp < 20 ) && @Operating_Mode_State < 3 then
 
       #stateBeforeDHW = @Heatpump_State;
 
       #stateBeforeDHW = @Heatpump_State;
 
       #OpModeBeforeDHW = @Operating_Mode_State;
 
       #OpModeBeforeDHW = @Operating_Mode_State;
 
       @SetHeatpump = 1;
 
       @SetHeatpump = 1;
       @SetOperationMode = @Operating_Mode_State + 4;
+
       @SetOperationMode = #OpModeBeforeDHW + 4;
 
   end
 
   end
 
   if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then
 
   if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then
Zeile 364: Zeile 388:
 
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
 +
      @SetHeatpump = #stateBeforeDHW;
 +
      @SetOperationMode = #OpModeBeforeDHW;
 +
  end
 +
end
 
on @ThreeWay_Valve_State then
 
on @ThreeWay_Valve_State then
 
   if @ThreeWay_Valve_State == 1 then
 
   if @ThreeWay_Valve_State == 1 then
 
       #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;
 +
      @SetOperationMode = #OpModeBeforeDHW + 4;
 
       $minDHWTarget = 45;
 
       $minDHWTarget = 45;
 
       $minOutside = 10;
 
       $minOutside = 10;
Zeile 385: Zeile 416:
 
       @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}');
 
       @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}');
 
       @SetPump = 1;
 
       @SetPump = 1;
   end
+
   else
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
 
      @SetPump = 0;
 
 
       @SetHeatpump = #stateBeforeDHW;
 
       @SetHeatpump = #stateBeforeDHW;
 
       @SetOperationMode = #OpModeBeforeDHW;
 
       @SetOperationMode = #OpModeBeforeDHW;
       setTimer(20, 210);
+
       @SetPump = 1;
       setTimer(21, 330);
+
       setTimer(20, 240);
      setTimer(22, 480);
 
 
   end
 
   end
 
end
 
end
 
on timer=20 then
 
on timer=20 then
 
   @SetZ1HeatRequestTemperature = 5;
 
   @SetZ1HeatRequestTemperature = 5;
   @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetHighBeforeDHW ,'}}}}');
+
   @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetLowBeforeDHW ,'}}}}');
end
+
   @SetPump = 0;
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
 
end
 +
 
on @Main_Target_Temp then
 
on @Main_Target_Temp then
 
   throttle();
 
   throttle();
Zeile 420: Zeile 438:
 
   throttle();
 
   throttle();
 
end
 
end
 
 
on throttle then
 
on throttle then
 
   if @Heatpump_State == 1 then
 
   if @Heatpump_State == 1 then
Zeile 426: Zeile 443:
 
         #roomDelta = 0;
 
         #roomDelta = 0;
 
         if @Outside_Temp < 7 && @Room_Thermostat_Temp > 22 then
 
         if @Outside_Temp < 7 && @Room_Thermostat_Temp > 22 then
             #roomDelta = 22 - @Room_Thermostat_Temp;
+
             #roomDelta = -1;
 
         end
 
         end
 
         #outletDeltaHeat = @Main_Outlet_Temp  - @Main_Target_Temp + @Z1_Heat_Request_Temp - #roomDelta;
 
         #outletDeltaHeat = @Main_Outlet_Temp  - @Main_Target_Temp + @Z1_Heat_Request_Temp - #roomDelta;
Zeile 438: Zeile 455:
 
         if #newHeatRequest > 5 then
 
         if #newHeatRequest > 5 then
 
             #newHeatRequest = 5;
 
             #newHeatRequest = 5;
             if #offAtNight == 1 then
+
             if #offAtNight == 1 && @Outside_Temp > 9 then
 
               #offAtNight = 2;
 
               #offAtNight = 2;
 
             end
 
             end
 
         end
 
         end
         if #newHeatRequest <= 0 then
+
         if #newHeatRequest <= 0 && ( @Main_Outlet_Temp  - @Main_Target_Temp ) < 2 then
 
             #newHeatRequest = #roomDelta;
 
             #newHeatRequest = #roomDelta;
 
         end
 
         end
Zeile 473: Zeile 490:
 
end
 
end
 
</pre>
 
</pre>
</div>
 
  
=== Homeassistant Konfigurationen ===
+
=== Homeassistant Konfiguration ===
  
 
==== configuration.yaml ====
 
==== configuration.yaml ====
Zeile 498: Zeile 514:
 
   purge_keep_days: 400
 
   purge_keep_days: 400
 
   commit_interval: 120
 
   commit_interval: 120
 +
 
</pre>
 
</pre>
  
Zeile 538: Zeile 555:
 
               - entity: sensor.custom_panasonic_heat_pump_average_runtime
 
               - entity: sensor.custom_panasonic_heat_pump_average_runtime
 
               - entity: sensor.panasonic_heat_pump_stats_2
 
               - entity: sensor.panasonic_heat_pump_stats_2
 +
              - entity: sensor.panasonic_heat_pump_stats_14
 
             title: Aktuelle Werte
 
             title: Aktuelle Werte
 
             state_color: true
 
             state_color: true
Zeile 545: Zeile 563:
 
           - type: entities
 
           - type: entities
 
             entities:
 
             entities:
 +
              - entity: switch.panasonic_heat_pump_main_heatpump_state
 +
              - entity: select.panasonic_heat_pump_main_operating_mode_state
 
               - entity: water_heater.panasonic_heat_pump_main_dhw_target_temp
 
               - entity: water_heater.panasonic_heat_pump_main_dhw_target_temp
 
               - entity: climate.panasonic_heat_pump_main_z1_temp
 
               - entity: climate.panasonic_heat_pump_main_z1_temp
Zeile 591: Zeile 611:
 
               - entity: binary_sensor.panasonic_heat_pump_main_internal_heater_state
 
               - entity: binary_sensor.panasonic_heat_pump_main_internal_heater_state
 
               - entity: select.panasonic_heat_pump_main_quiet_mode_level
 
               - entity: select.panasonic_heat_pump_main_quiet_mode_level
             hours_to_show: 8
+
              - entity: binary_sensor.panasonic_heat_pump_main_force_dhw_state
 +
             hours_to_show: 12
 
             title: Status
 
             title: Status
 
           - type: history-graph
 
           - type: history-graph
Zeile 607: Zeile 628:
 
               - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp
 
               - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp
 
             title: Temperaturen
 
             title: Temperaturen
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
 
               - sensor.panasonic_heat_pump_main_compressor_freq
 
               - sensor.panasonic_heat_pump_main_compressor_freq
 
             title: Kompressor
 
             title: Kompressor
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
 
               - sensor.panasonic_heat_pump_main_pump_flow
 
               - sensor.panasonic_heat_pump_main_pump_flow
 
             title: Volumenstrom
 
             title: Volumenstrom
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
Zeile 623: Zeile 644:
 
               - sensor.panasonic_heat_pump_main_fan1_motor_speed
 
               - sensor.panasonic_heat_pump_main_fan1_motor_speed
 
             title: Drehzahlen
 
             title: Drehzahlen
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
 
               - entity: sensor.panasonic_heat_pump_main_pump_duty
 
               - entity: sensor.panasonic_heat_pump_main_pump_duty
 
               - entity: number.panasonic_heat_pump_main_max_pump_duty
 
               - entity: number.panasonic_heat_pump_main_max_pump_duty
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
Zeile 639: Zeile 660:
 
               - entity: sensor.panasonic_heat_pump_main_heat_power_consumption
 
               - entity: sensor.panasonic_heat_pump_main_heat_power_consumption
 
               - entity: sensor.panasonic_heat_pump_main_heat_power_production
 
               - entity: sensor.panasonic_heat_pump_main_heat_power_production
 +
              - entity: sensor.ac_elwa_e_192_168_178_23_power
 
             title: Energie
 
             title: Energie
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
 
               - entity: sensor.panasonic_heat_pump_main_high_pressure
 
               - entity: sensor.panasonic_heat_pump_main_high_pressure
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: history-graph
 
           - type: history-graph
 
             entities:
 
             entities:
 
               - entity: sensor.custom_panasonic_heat_pump_cop_s0
 
               - entity: sensor.custom_panasonic_heat_pump_cop_s0
 
               - entity: sensor.panasonic_heat_pump_cop
 
               - entity: sensor.panasonic_heat_pump_cop
             hours_to_show: 8
+
             hours_to_show: 12
 
           - type: custom:plotly-graph
 
           - type: custom:plotly-graph
 
             refresh_interval: 10
 
             refresh_interval: 10
Zeile 698: Zeile 720:
 
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...
 
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|links]]
+
[[Datei:Aquarea-Strom-COP.png]]
  
 
Mit höheren Wärmeleistungen wird der Unterschied sogar noch größer...
 
Mit höheren Wärmeleistungen wird der Unterschied sogar noch größer...
  
[[Datei:Aquarea-Strom-COP-2.png|links]]
+
[[Datei:Aquarea-Strom-COP-2.png]]
  
 
=== Heizwasservolumestrom beim Umschalten auf den Pufferspeicher ===
 
=== Heizwasservolumestrom beim Umschalten auf den Pufferspeicher ===
Zeile 708: Zeile 730:
 
Bei gleichbleibender Pumpenleistung verdoppelt sich der Volumenstrom, wenn das Abtau-3-Wege-Ventil auf den Pufferspeicher umschaltet.
 
Bei gleichbleibender Pumpenleistung verdoppelt sich der Volumenstrom, wenn das Abtau-3-Wege-Ventil auf den Pufferspeicher umschaltet.
  
[[Datei:Einrohrhydraulik-vs-Pufferspeicher.png|links]]
+
[[Datei:Einrohrhydraulik-vs-Pufferspeicher.png]]

Aktuelle Version vom 20. Dezember 2024, 11:45 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

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.

Die Einrohrheizung ist einfach Mist:

  • Geringer Volumenstrom
  • Bei Verwendung eines Überstromventils geht wegen des hohen Gegendrucks der Einrohrheizung bei Heizbetrieb das Volumen durch das Ventil direkt in den Puffer

Somit wurde der alte 200l WW-Speicher als Reihen-/Abtaupuffer eingeplant wie hier beschrieben mit elektrischem Umschaltventil.

Dabei wird ein zweites 3-Wege Ventil zwischen Vorlauf Heizkreis und Vorlauf Reihenpuffer eingebracht, um bei Abtaubetrieb einen Kurzschluß von der Wärmepumpe zum Reihenpuffer herzustellen. Im Heizbetrieb läuft der gesamte Volumenstrom durch den Heizkreis und dann durch den Reihenpuffer.

Heizungspuffer mit Abtau-Ventil.jpg

Das 3-Wege Ventil wird durch das Abtausignal der Jeisha umgeschalten (AB - Reihenpuffer Vorlauf, B - Heizkreis Rücklauf, A - Wärmepumpe Vorlauf).

Jeisha-Platine-Verkabelung-Abtausteuerung.jpg.jpg

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
WW-Speicher vor Einbau WMZ.jpg
WW-Speicher nach Einbau WMZ.jpg


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!

Strom

Heizen

Wasser

PV Anlage

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

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;
-- Set water pump back to delta-T automatic
   @SetPump = 0;
   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 = 160;
      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 == 0 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta )) || @DHW_Temp < 20 ) && @Operating_Mode_State < 3 then
-- Remember state
      #stateBeforeDHW = @Heatpump_State;
      #OpModeBeforeDHW = @Operating_Mode_State;
-- Activate heatpump (if previously off) and set to DHW mode
      @SetHeatpump = 1;
      @SetOperationMode = #OpModeBeforeDHW + 4;
   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 && @Outside_Temp > 9 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 = 110;
      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
-- During summertime the heatpump is off - so probably turn it off again
      @SetHeatpump = #stateBeforeDHW;
-- Turn off DHW to switch the 3-way valve back to room heating to help keep the heat in the tank
      @SetOperationMode = #OpModeBeforeDHW;
   end
end
on @ThreeWay_Valve_State then
-- On every change of the 3-way valve check if in room or tank mode
   if @ThreeWay_Valve_State == 1 then
-- Remember state
      #targetLowBeforeDHW = @Z1_Heat_Curve_Target_Low_Temp;
      #targetHighBeforeDHW = @Z1_Heat_Curve_Target_High_Temp;
-- Set to DHW mode (required if "Force DHW" button has been pressed)
      @SetOperationMode = #OpModeBeforeDHW + 4;
-- 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 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
      $targetAfterDHW = ( @DHW_Target_Temp + 5 );
      @SetCurves = concat('{zone1:{heat:{target:{high:', $targetAfterDHW ,',low:', $targetAfterDHW ,'}}}}');
-- Set water pump to test mode to max out on water volume (increase COP)
      @SetPump = 1;
   else
- Switching back to room heating/cooling
      @SetHeatpump = #stateBeforeDHW;
      @SetOperationMode = #OpModeBeforeDHW;
-- Set water pump to test mode to max out on water volume (to get quickly back to previous heating temperature)
      @SetPump = 1;
-- Set timer for the end of the ramp down
      setTimer(20, 240);
   end
end
on timer=20 then
-- Increase target temperature before switching back to original heating curve (to keep compressor running)
   @SetZ1HeatRequestTemperature = 5;
-- Switching back to original heating curve
   @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetLowBeforeDHW ,'}}}}');
-- Set water pump back to delta-T automatic
   @SetPump = 0;
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_Target_Temp then
   throttle();
end
on @Main_Outlet_Temp then
   throttle();
end
on @Main_Inlet_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
-- Reduce heat request when leading room is over 22 degrees
         #roomDelta = 0;
         if @Outside_Temp < 7 && @Room_Thermostat_Temp > 22 then
            #roomDelta = -1;
         end
-- @Z1_Heat_Request_Temp modifies @Main_Target_Temp so take it into account
         #outletDeltaHeat = @Main_Outlet_Temp  - @Main_Target_Temp + @Z1_Heat_Request_Temp - #roomDelta;
-- 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.6 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 && @Outside_Temp > 9 then
               #offAtNight = 2;
            end
         end
-- Set reduced heat request only if it does not turn the compressor off
         if #newHeatRequest <= 0 && ( @Main_Outlet_Temp  - @Main_Target_Temp ) < 2 then
            #newHeatRequest = #roomDelta;
         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;
   #offAtNight = 1;
   @SetPump = 0;
   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 = 160;
      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 == 0 && @DHW_Temp < ( @DHW_Target_Temp + @DHW_Heat_Delta )) || @DHW_Temp < 20 ) && @Operating_Mode_State < 3 then
      #stateBeforeDHW = @Heatpump_State;
      #OpModeBeforeDHW = @Operating_Mode_State;
      @SetHeatpump = 1;
      @SetOperationMode = #OpModeBeforeDHW + 4;
   end
   if $hour == 18 && $minute == 0 && #offAtNight == 1 && @Heatpump_State == 1 then
      if @Operating_Mode_State == 0 && @Room_Thermostat_Temp > 22 && @Outside_Temp > 9 then
         #offAtNight = 2;
      end
      if @Operating_Mode_State == 1 then
         #offAtNight = 2;
         @SetHeatpump = 0;
      end
   end
   if $hour == 20 && $minute == 0 then
      @SetMaxPumpDuty = 110;
      if @Operating_Mode_State == 0 && #offAtNight == 2 && @Heatpump_State == 1 then   
         @SetHeatpump = 0;
      end
   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
      @SetHeatpump = #stateBeforeDHW;
      @SetOperationMode = #OpModeBeforeDHW;
   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;
      @SetOperationMode = #OpModeBeforeDHW + 4;
      $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 ,'}}}}');
      @SetPump = 1;
   else
      @SetHeatpump = #stateBeforeDHW;
      @SetOperationMode = #OpModeBeforeDHW;
      @SetPump = 1;
      setTimer(20, 240);
   end
end
on timer=20 then
   @SetZ1HeatRequestTemperature = 5;
   @SetCurves = concat('{zone1:{heat:{target:{high:', #targetHighBeforeDHW ,',low:', #targetLowBeforeDHW ,'}}}}');
   @SetPump = 0;
end

on @Main_Target_Temp then
   throttle();
end
on @Main_Outlet_Temp then
   throttle();
end
on @Main_Inlet_Temp then
   throttle();
end
on throttle then
   if @Heatpump_State == 1 then
      if @Operating_Mode_State % 2 == 0 || @ThreeWay_Valve_State == 1 then
         #roomDelta = 0;
         if @Outside_Temp < 7 && @Room_Thermostat_Temp > 22 then
            #roomDelta = -1;
         end
         #outletDeltaHeat = @Main_Outlet_Temp  - @Main_Target_Temp + @Z1_Heat_Request_Temp - #roomDelta;
         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 && @Outside_Temp > 9 then
               #offAtNight = 2;
            end
         end
         if #newHeatRequest <= 0 && ( @Main_Outlet_Temp  - @Main_Target_Temp ) < 2 then
            #newHeatRequest = #roomDelta;
         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 Konfiguration

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 }}
      custom_panasonic_heat_pump_cop_s0:
        friendly_name: Aquarea COP (S0)
        unit_of_measurement: x
        value_template: >-
          {% set calc = ( float( states('sensor.panasonic_heat_pump_production'),0) / float( states('sensor.panasonic_heat_pump_s0_watt_1'),1) ) | round(2) %}
          {{ 0 if calc <= 0 else calc }}

recorder:
  purge_keep_days: 400
  commit_interval: 120

Dashboards

Wärmepumpe
views:
  - title: Home
    type: sections
    cards: []
    max_columns: 2
    sections:
      - type: grid
        cards:
          - 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_pump_flow
              - entity: sensor.panasonic_heat_pump_main_pump_speed
              - entity: sensor.panasonic_heat_pump_main_pump_duty
              - entity: sensor.panasonic_heat_pump_main_fan1_motor_speed
              - entity: sensor.panasonic_heat_pump_production
              - entity: sensor.panasonic_heat_pump_consumption
              - entity: sensor.panasonic_heat_pump_s0_watt_1
              - entity: sensor.panasonic_heat_pump_cop
              - entity: sensor.custom_panasonic_heat_pump_cop_s0
              - entity: sensor.panasonic_heat_pump_main_high_pressure
              - entity: sensor.panasonic_heat_pump_main_operations_hours
              - entity: sensor.panasonic_heat_pump_main_operations_counter
              - entity: sensor.custom_panasonic_heat_pump_average_runtime
              - entity: sensor.panasonic_heat_pump_stats_2
              - entity: sensor.panasonic_heat_pump_stats_14
            title: Aktuelle Werte
            state_color: true
        column_span: 1
      - type: grid
        cards:
          - type: entities
            entities:
              - entity: switch.panasonic_heat_pump_main_heatpump_state
              - entity: select.panasonic_heat_pump_main_operating_mode_state
              - 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_heat_delta
              - entity: number.panasonic_heat_pump_main_dhw_heat_delta
              - entity: number.panasonic_heat_pump_main_max_pump_duty
              - entity: number.panasonic_heat_pump_main_heating_off_outdoor_temp
              - entity: number.panasonic_heat_pump_main_z1_heat_curve_outside_low_temp
              - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_high_temp
              - entity: >-
                  number.panasonic_heat_pump_main_z1_heat_curve_outside_high_temp
              - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_low_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
              - entity: number.panasonic_heat_pump_main_z1_cool_request_temp
              - entity: sensor.panasonic_heat_pump_main_cool_delta
              - entity: number.panasonic_heat_pump_main_z1_cool_curve_outside_low_temp
              - entity: number.panasonic_heat_pump_main_z1_cool_curve_target_high_temp
              - entity: >-
                  number.panasonic_heat_pump_main_z1_cool_curve_outside_high_temp
              - entity: number.panasonic_heat_pump_main_z1_cool_curve_target_low_temp
            title: Einstellungen

Wärmepumpe Kurven
views:
  - title: Home
    sections: []
    type: panel
    cards:
      - 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: binary_sensor.panasonic_heat_pump_main_force_dhw_state
            hours_to_show: 12
            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: number.panasonic_heat_pump_main_z1_cool_request_temp
              - entity: number.panasonic_heat_pump_main_dhw_target_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
              - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_high_temp
              - entity: number.panasonic_heat_pump_main_z1_heat_curve_target_low_temp
            title: Temperaturen
            hours_to_show: 12
          - type: history-graph
            entities:
              - sensor.panasonic_heat_pump_main_compressor_freq
            title: Kompressor
            hours_to_show: 12
          - type: history-graph
            entities:
              - sensor.panasonic_heat_pump_main_pump_flow
            title: Volumenstrom
            hours_to_show: 12
          - type: history-graph
            entities:
              - sensor.panasonic_heat_pump_main_pump_speed
              - sensor.panasonic_heat_pump_main_fan1_motor_speed
            title: Drehzahlen
            hours_to_show: 12
          - type: history-graph
            entities:
              - entity: sensor.panasonic_heat_pump_main_pump_duty
              - entity: number.panasonic_heat_pump_main_max_pump_duty
            hours_to_show: 12
          - type: history-graph
            entities:
              - entity: sensor.panasonic_heat_pump_s0_watt_1
              - entity: sensor.panasonic_heat_pump_s0_watt_2
              - entity: sensor.panasonic_heat_pump_production
              - entity: sensor.panasonic_heat_pump_consumption
              - entity: sensor.panasonic_heat_pump_main_dhw_power_consumption
              - entity: sensor.panasonic_heat_pump_main_dhw_power_production
              - entity: sensor.panasonic_heat_pump_main_heat_power_consumption
              - entity: sensor.panasonic_heat_pump_main_heat_power_production
              - entity: sensor.ac_elwa_e_192_168_178_23_power
            title: Energie
            hours_to_show: 12
          - type: history-graph
            entities:
              - entity: sensor.panasonic_heat_pump_main_high_pressure
            hours_to_show: 12
          - type: history-graph
            entities:
              - entity: sensor.custom_panasonic_heat_pump_cop_s0
              - entity: sensor.panasonic_heat_pump_cop
            hours_to_show: 12
          - 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

Stumi75-Jeisha-Einstellungen.png

Beispiel Tagesverlauf

Wenn das so aussieht, kann man sich freuen... 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...

Aquarea-Strom-COP.png

Mit höheren Wärmeleistungen wird der Unterschied sogar noch größer...

Aquarea-Strom-COP-2.png

Heizwasservolumestrom beim Umschalten auf den Pufferspeicher

Bei gleichbleibender Pumpenleistung verdoppelt sich der Volumenstrom, wenn das Abtau-3-Wege-Ventil auf den Pufferspeicher umschaltet.

Einrohrhydraulik-vs-Pufferspeicher.png