From 69881a45db9ea416faba35065750463c413de734 Mon Sep 17 00:00:00 2001 From: "belevo\\mh" Date: Wed, 26 Feb 2025 14:26:10 +0100 Subject: [PATCH] stand ab hauptmanager wieder hergestellt --- Batterie/module.php | 79 ++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 52 deletions(-) diff --git a/Batterie/module.php b/Batterie/module.php index 51e1337..ae61feb 100644 --- a/Batterie/module.php +++ b/Batterie/module.php @@ -28,7 +28,6 @@ class Batterie extends IPSModule $this->RegisterVariableInteger("PV_Prio", "PV_Prio"); $this->RegisterVariableInteger("Power", "Power"); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving"); - $this->RegisterVariableBoolean("In_Hystere", "In_Hystere"); $this->RegisterVariableFloat("Bezogene_Energie", "Bezogene_Energie", "", 0); @@ -104,8 +103,9 @@ public function RequestAction($Ident, $Value) return; } + if($this->GetValue("Is_Peak_Shaving")==true){ - if ($power > 0) { + if ($power >= 0) { $this->SetValue("Ladeleistung", $power); $this->SetValue("Entladeleistung", 0); $this->SetValue("Laden3_Entladen4", 3); @@ -116,7 +116,7 @@ public function RequestAction($Ident, $Value) } }else{ - if ($power > 0) { + if ($power >= 0) { $this->SetValue("Ladeleistung", $power); $this->SetValue("Entladeleistung", 0); $this->SetValue("Laden3_Entladen4", 3); @@ -155,7 +155,7 @@ public function RequestAction($Ident, $Value) $minimumentladen = $this->ReadPropertyInteger("MinimumEntladen"); $maxleistung = $this->ReadPropertyInteger("MaxBatterieleistung"); $dummy_array = []; - $inhystere = $this->GetValue("In_Hystere"); + $batterieManagement = $this->ReadPropertyInteger("Batteriemanagement"); @@ -176,79 +176,54 @@ public function RequestAction($Ident, $Value) if ($Peak) { - if ($batterieladezustand < $minimumentladen) { + if ($batterieladezustand <= $minimumentladen) { $filtered_powersteps = array_filter($array_powersteps, function ($value) use ($maxleistung) { return $value >= 0; // Hochpass filtern }); $filtered_powersteps_laden = array_values($filtered_powersteps); $this->SetValue("PowerSteps", json_encode($filtered_powersteps_laden)); - $this->SetValue("In_Hystere", 1); - IPS_LogMessage("Batterie", "Peak: unter minimum" ); + - } elseif ($batterieladezustand <= $aufdasnachladen && $batterieladezustand >= $minimumentladen && $inhystere == true) { - $filtered_powersteps = array_filter($array_powersteps, function ($value) use ($maxleistung) { - return $value >= 0; // Hochpass filtern - }); - $filtered_powersteps_laden = array_values($filtered_powersteps); - $this->SetValue("PowerSteps", json_encode($filtered_powersteps_laden)); - $this->SetValue("In_Hystere", 1); - IPS_LogMessage("Batterie", "Peak: hysterese" ); - - } elseif ($batterieladezustand <= $aufdasnachladen && $batterieladezustand >= $minimumentladen && $inhystere == false) { - $this->SetValue("PowerSteps", json_encode($array_powersteps)); - $this->SetValue("In_Hystere", 0); - IPS_LogMessage("Batterie", "Peak: normal" ); - - } elseif ($batterieladezustand > $aufdasnachladen) { + } elseif ($batterieladezustand < $aufdasnachladen && $batterieladezustand > $minimumentladen) { + $this->SetValue("PowerSteps", json_encode($array_powersteps)); + } + + + // Hier Modul auf Wechselrichter 1 stellen + elseif ($batterieladezustand >= $aufdasnachladen) { $netzbezug = GetValue($this->ReadPropertyInteger("Netzbezug")); - if (abs($netzbezug)>$maxleistung){ - $dummy_array[] = $maxleistung*(-1); - } else{ - $dummy_array[] = $netzbezug; - } + $dummy_array[] = $netzbezug*(-1); + IPS_LogMessage("Batterie", "Dummy Array: " . json_encode($dummy_array)); $this->SetValue("PowerSteps", json_encode($dummy_array)); - $this->SetValue("In_Hystere", 0); - IPS_LogMessage("Batterie", "Peak: netzbezug" ); } else { + $dummy_array[] = 0; $this->SetValue("PowerSteps", json_encode($dummy_array)); - IPS_LogMessage("Batterie", "Peak: Kein Fall"); } } else { // Solar - ////Hysterese - if ($batterieladezustand <= $aufdasnachladen ) { - $nachladen = $this->ReadPropertyInteger("MaxNachladen"); - $dummy_array[] = $nachladen; - $this->SetValue("PowerSteps", json_encode($dummy_array)); - $this->SetValue("In_Hystere", 1); - IPS_LogMessage("Batterie", "Solar: unter aufdasladen" ); - - } elseif ($batterieladezustand <= $aufdasnachladen + 5 && $batterieladezustand >= $aufdasnachladen && $inhystere == true ) { + + + if ($batterieladezustand < $aufdasnachladen) { $nachladen = $this->ReadPropertyInteger("MaxNachladen"); $dummy_array[] = $nachladen; - $this->SetValue("PowerSteps", json_encode($dummy_array)); - $this->SetValue("In_Hystere", 1); - IPS_LogMessage("Batterie", "Solar: in hysterese" ); + IPS_LogMessage("Batterie", ": MaxNachladen " .json_encode($dummy_array)); + $this->SetValue("PowerSteps", json_encode($dummy_array)); - }elseif ($batterieladezustand > $aufdasnachladen + 5) { - $this->SetValue("PowerSteps", json_encode($array_powersteps)); - $this->SetValue("In_Hystere", 0); - IPS_LogMessage("Batterie", "Solar: hystere laden abgeschlossen" ); - - ////Hysterese Ende }elseif ($batterieladezustand >= 100) { $filtered_powersteps_entladen = array_filter($array_powersteps, function ($value) use ($maxleistung) { - return $value <= 0; // Tiefpass filtern + return $value < 0; // Tiefpass filtern }); $this->SetValue("PowerSteps", json_encode($filtered_powersteps_entladen)); - }else { + }elseif ($batterieladezustand >= $aufdasnachladen) { + $this->SetValue("PowerSteps", json_encode($array_powersteps)); + + } else { $dummy_array[] = 0; $this->SetValue("PowerSteps", json_encode($dummy_array)); - IPS_LogMessage("Batterie", "Solar: Kein Fall" ); } } } @@ -289,4 +264,4 @@ public function RequestAction($Ident, $Value) } } -?> \ No newline at end of file +?>