diff --git a/Batterie/module.php b/Batterie/module.php index e92148c..b36ff33 100644 --- a/Batterie/module.php +++ b/Batterie/module.php @@ -29,8 +29,7 @@ class Batterie extends IPSModule $this->RegisterVariableInteger("PV_Prio", "PV_Prio"); $this->RegisterVariableInteger("Power", "Power"); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving"); - //$this->RegisterVariableBoolean("Hysterese", "Hysterese","",0); - //$this->RegisterVariableBoolean("Hysterese_Netz", "Hysterese_Netz","",0); + $this->RegisterVariableInteger("Leistung_Delta", "Leistung_Delta", "", 0); $this->RegisterVariableBoolean("Hysterese", "Hysterese","",false); diff --git a/Boiler_2_Stufig_Mit_Fueler/module.php b/Boiler_2_Stufig_Mit_Fueler/module.php index b26a258..f8d1220 100644 --- a/Boiler_2_Stufig_Mit_Fueler/module.php +++ b/Boiler_2_Stufig_Mit_Fueler/module.php @@ -38,6 +38,7 @@ class Boiler_2_Stufig_Mit_Fueler extends IPSModule $this->RegisterVariableString("PowerSteps", "PowerSteps"); $this->RegisterVariableInteger("Power", "Power", '', 0); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving", "", true); + $this->RegisterVariableInteger("Leistung_Delta", "Leistung_Delta", "", 0); // Hilfsvariabeln für Idle zustand $this->RegisterPropertyInteger("IdleCounterMax", 2); diff --git a/HauptManager/module.php b/HauptManager/module.php index 98e626c..7b0c509 100644 --- a/HauptManager/module.php +++ b/HauptManager/module.php @@ -111,7 +111,7 @@ class HauptManager extends IPSModule if(in_array(0, $user["PowerSteps"], true)){ // Addiere die aktuell bereits verwendete Leistung auf, um sie bei der verteilung zu berücksichtigen - $totalAktuelle_Leistung += $user["Aktuelle_Leistung"]; + $totalAktuelle_Leistung += ($user["Aktuelle_Leistung"]- $user["Leistung_Delta"]); } } @@ -276,7 +276,7 @@ class HauptManager extends IPSModule } // Überprüfe, ob noch genügend verbleibende Energie für den nächsten Schritt vorhanden ist - if ($remainingPower >= $powerstep - $aktleistung['Set_Leistung']) { + if ($remainingPower >= $powerstep - $aktleistung['Set_Leistung']+$user["Leistung_Delta"]) { // Aktualisiere die verbleibende Energie und die bereitgestellte Energie für den Benutzer $remainingPower -= $powerstep - $aktleistung['Set_Leistung']; @@ -361,7 +361,7 @@ class HauptManager extends IPSModule } // Überprüfe, ob noch genügend verbleibende Energie für den nächsten Schritt vorhanden ist - if ($remainingPower >= $powerstep - $aktleistung['Set_Leistung']) { + if ($remainingPower >= $powerstep - $aktleistung['Set_Leistung']-$user["Leistung_Delta"]) { // Aktualisiere die verbleibende Energie und die bereitgestellte Energie für den Benutzer $remainingPower -= $powerstep - $aktleistung['Set_Leistung']; diff --git a/Ladestation_Universal/module.php b/Ladestation_Universal/module.php index 5d5bcfb..138adfd 100644 --- a/Ladestation_Universal/module.php +++ b/Ladestation_Universal/module.php @@ -39,6 +39,7 @@ class Ladestation_Universal extends IPSModule $this->RegisterVariableString("PowerSteps", "PowerSteps"); $this->RegisterVariableInteger("Power", "Power"); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving"); + $this->RegisterVariableInteger("Leistung_Delta", "Leistung_Delta", "", 0); // Hilfsvariabeln für Idle zustand $this->RegisterPropertyInteger("IdleCounterMax", 2); @@ -335,7 +336,7 @@ class Ladestation_Universal extends IPSModule } // PowerSteps in der RegisterVariable speichern SetValue($this->GetIDForIdent("PowerSteps"), json_encode($powerSteps)); - + $this->SetValue("Leistung_Delta", $this->GetValue("Ladeleistung_Effektiv")-$this->GetValue("Ladeleistung")); // Rückgabe der Powersteps return $powerSteps; } diff --git a/Manager/module.php b/Manager/module.php index 005eee8..cf98a05 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -120,6 +120,7 @@ class Manager extends IPSModule $idle = GetValue(IPS_GetObjectIDByIdent("Idle", $user["Verbraucher"])); $powerStepsJson = GetValue(IPS_GetObjectIDByIdent("PowerSteps", $user["Verbraucher"])); $powerSteps = json_decode($powerStepsJson, true); + $delta = GetValue(IPS_GetObjectIDByIdent("Leistung_Delta", $user["Verbraucher"])); // Verbraucher-Daten zum gefilterten Array hinzufügen $filteredVerbraucher[] = [ @@ -131,6 +132,7 @@ class Manager extends IPSModule "Sperre_Prio" => $Sperre_Prio, "Idle" => $idle, "PowerSteps" => $powerSteps, + "Leistung_Delta" => $delta ]; // Überprüfen, ob alle Benutzer Idle = true sind, wenn einer nicht ist, wird später verworfen... @@ -142,7 +144,7 @@ class Manager extends IPSModule 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; + $totalAktuelle_Leistung += ($Aktuelle_Leistung-$delta); } @@ -261,7 +263,7 @@ class Manager extends IPSModule $powerstep = $entry["step"]; // Überprüfe, ob noch genügend verbleibende Energie für den nächsten Schritt vorhanden ist - if ($remainingPower >= $powerstep - $userEnergyProv[$user]) { // oder bedingung testen + if ($remainingPower >= $powerstep - $userEnergyProv[$user]-$user["Leistung_Delta"]) { // oder bedingung testen // Aktualisiere die verbleibende Energie und die bereitgestellte Energie für den Benutzer $remainingPower -= $powerstep - $userEnergyProv[$user]; $userEnergyProv[$user] = $powerstep; @@ -327,7 +329,7 @@ class Manager extends IPSModule $powerstep = $entry["step"]; // Überprüfe, ob noch genügend verbleibende Energie für den nächsten Schritt vorhanden ist - if ($remainingPower >= $powerstep - $userEnergyProv[$user]) { // oder bedingung testen + if ($remainingPower >= $powerstep - $userEnergyProv[$user]+$user["Leistung_Delta"]) { // oder bedingung testen // Aktualisiere die verbleibende Energie und die bereitgestellte Energie für den Benutzer $remainingPower -= $powerstep - $userEnergyProv[$user]; $userEnergyProv[$user] = $powerstep; @@ -391,6 +393,7 @@ class Manager extends IPSModule $Sperre_Prio = GetValue(IPS_GetObjectIDByIdent("Sperre_Prio", $user["Verbraucher"])); $idle = GetValue(IPS_GetObjectIDByIdent("Idle", $user["Verbraucher"])); $powerStepsJson = GetValue(IPS_GetObjectIDByIdent("PowerSteps", $user["Verbraucher"])); + $delta = GetValue(IPS_GetObjectIDByIdent("Leistung_Delta", $user["Verbraucher"])); $powerSteps = json_decode($powerStepsJson, true); // Verbraucher-Daten zum gefilterten Array hinzufügen @@ -403,6 +406,7 @@ class Manager extends IPSModule "Sperre_Prio" => $Sperre_Prio, "Idle" => $idle, "PowerSteps" => $powerSteps, + "Leistung_Delta" => $delta, "ParentManager" => $this->ReadPropertyInteger("ManagerID") ]; diff --git a/Verbraucher_1_Stufig/module.php b/Verbraucher_1_Stufig/module.php index 4e1c221..f9fad90 100644 --- a/Verbraucher_1_Stufig/module.php +++ b/Verbraucher_1_Stufig/module.php @@ -32,6 +32,7 @@ class Verbraucher_1_Stufig extends IPSModule $this->RegisterVariableString("PowerSteps", "PowerSteps"); $this->RegisterVariableInteger("Power", "Power"); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving"); + $this->RegisterVariableInteger("Leistung_Delta", "Leistung_Delta", "", 0); // Hilfsvariabeln für Idle zustand $this->RegisterPropertyInteger("IdleCounterMax", 2); diff --git a/WP_Steuerung/module.php b/WP_Steuerung/module.php index c7af3e2..2907fa1 100644 --- a/WP_Steuerung/module.php +++ b/WP_Steuerung/module.php @@ -37,6 +37,7 @@ class WP_Steuerung extends IPSModule $this->RegisterVariableString("PowerSteps", "PowerSteps"); $this->RegisterVariableInteger("Power", "Power"); $this->RegisterVariableBoolean("Is_Peak_Shaving", "Is_Peak_Shaving"); + $this->RegisterVariableInteger("Leistung_Delta", "Leistung_Delta", "", 0); // Hilfsvariabeln für Idle zustand $this->RegisterPropertyInteger("IdleCounterMax", 2); diff --git a/library.json b/library.json index c7fe3e3..81634a8 100644 --- a/library.json +++ b/library.json @@ -6,7 +6,7 @@ "compatibility": { "version": "7.1" }, - "version": "1.198", + "version": "1.199", "build": 0, "date": 0 } \ No newline at end of file