From dafaab55c00816ddc23f47a43eda0b7db868a957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Thu, 30 Oct 2025 07:18:23 +0100 Subject: [PATCH] no message --- Manager/form.json | 17 ++++++++++++++++ Manager/module.php | 51 ++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/Manager/form.json b/Manager/form.json index 84dadcb..5ae854a 100644 --- a/Manager/form.json +++ b/Manager/form.json @@ -21,6 +21,23 @@ "type": "SelectVariable", "name": "Netzbezug", "caption": "Variable mit dem zu regelnden Netzbezug" + }, + { + "type": "CheckBox", + "name": "UmschaltpunktStatisch", + "caption": "Umschaltpunkt Statisch festlegen" + }, + { + "type": "NumberSpinner", + "name": "Umschalt_Solarladen", + "caption": "Umschaltpunkt auf Solarladen", + "suffix": "Watt" + }, + { + "type": "NumberSpinner", + "name": "Umschalt_Peakshaving", + "caption": "Umschaltpunkt auf Peakshaving", + "suffix": "Watt" }, { "type": "CheckBox", diff --git a/Manager/module.php b/Manager/module.php index 2c6606c..007d54e 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -11,6 +11,9 @@ class Manager extends IPSModule $this->RegisterPropertyInteger("Ueberschussleistung", 0); $this->RegisterPropertyInteger("Netzbezug", 0); // Initialisierung mit 0 $this->RegisterPropertyString("Verbraucher_Liste", "[]"); + $this->RegisterPropertyBoolean("UmschaltpunktStatisch", false); // Initialisierung mit 0 + $this->RegisterPropertyInteger("Umschalt_Solarladen", 100); // Initialisierung mit 0 + $this->RegisterPropertyInteger("Umschalt_Peakshaving", 10000); // Initialisierung mit 0 $this->RegisterPropertyBoolean("HauptmanagerAktiv", false); // Initialisierung mit 0 $this->RegisterPropertyInteger("ManagerID", 0); // Initialisierung mit 0 $this->RegisterPropertyInteger("DatenHoch", 0); // Initialisierung mit 0 @@ -110,6 +113,7 @@ class Manager extends IPSModule $filteredVerbraucher = []; // Array das später mit allen Verbrauchsdaten der Energieverbraucher gefüllt wird $allIdle = true; // Variable zur Überprüfung, ob alle Benutzer Idle = true sind $totalAktuelle_Leistung = 0; // Variable zur Summierung der Aktuelle_Leistung Werte + $helpvar_offset_peakermitteln = 0; // Variable zur Summierung der Aktuelle_Leistung Werte // Fülle das Array mit allen entsprechenden Werten der Verbraucher ab foreach ($Verbraucher_Liste as $user) { @@ -150,7 +154,6 @@ class Manager extends IPSModule //if(in_array(0, $powerSteps, true)){ //if(in_array(0, $powerSteps, true)){ - //} // Addiere die aktuell bereits verwendete Leistung auf, um sie bei der verteilung zu berücksichtigen $totalAktuelle_Leistung += ($Aktuelle_Leistung-$delta); @@ -172,21 +175,53 @@ class Manager extends IPSModule $Peakleistung = $this->ReadPropertyInteger("Peakleistung"); $Ueberschussleistung = $this->ReadPropertyInteger("Ueberschussleistung"); - if($this->GetValue("Is_Peak_Shaving")){ - $Netzbezug_korr = $Netzbezug + $totalAktuelle_Leistung; - }else{ - $Netzbezug_korr = $Netzbezug - $totalAktuelle_Leistung; - } - // Fallunterscheidung ob auf Solarladen oder Peakshaving gerregelt wird. - if ($Netzbezug_korr < ($Peakleistung + $Ueberschussleistung) / 2) { + if(GetValue($this->ReadPropertyBoolean("UmschaltpunktStatisch"))==false){ + + // Fallunterscheidung ob auf Solarladen oder Peakshaving gerregelt wird. + if ($Netzbezug < ($Peakleistung + $Ueberschussleistung) / 2) { $remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug); $Is_Peak_Shaving = false; } else { $remainingPower = $Peakleistung - $Netzbezug; $Is_Peak_Shaving = true; + } + + }else{ // Statische ermittlung der Betriebsart + + if($NetzbezugReadPropertyInteger("Umschalt_Solarladen"))){ + + $remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug); + $Is_Peak_Shaving = false; + + } + elseif($Netzbezug>GetValue($this->ReadPropertyInteger("Umschalt_Peakshaving"))){ + + $remainingPower = $Peakleistung - $Netzbezug; + $Is_Peak_Shaving = true; + + } + elseif( $this->GetValue("Is_Peak_Shaving")==false){ + + $remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug); + $Is_Peak_Shaving = false; + + } + elseif( $this->GetValue("Is_Peak_Shaving")==true){ + + $remainingPower = $Peakleistung - $Netzbezug; + $Is_Peak_Shaving = true; + + } + + } + + + + + $remainingPower += $totalAktuelle_Leistung; IPS_LogMessage("Manag anfang", $remainingPower);