div korrigiert

This commit is contained in:
mh
2024-12-11 15:59:56 +01:00
parent 68636780d6
commit 63be9ec3c4
2 changed files with 40 additions and 64 deletions
+39 -63
View File
@@ -61,104 +61,80 @@ class Batterie extends IPSModule
} }
} }
public function SetAktuelle_Leistung(int $power){ public function SetAktuelle_Leistung(int $power)
$spannung = $this->ReadPropertyInteger("Batteriespannung"); {
$entladestrom = $this->ReadVariableInteger("Entladestrom"); // Batterie-spezifische Eigenschaften abrufen
$ladestrom = $this->ReadVariableInteger("Ladestrom"); $spannung = $this->ReadPropertyInteger("Batteriespannung");
$maxleistung = $this->ReadPropertyInteger("MaxBatterieleistung"); $entladestrom = GetValue($this->GetIDForIdent("Entladestrom"));
$ladestrom = GetValue($this->GetIDForIdent("Ladestrom"));
//Batterie entladen < MaxBatterieleistung &&&&& MaxBatterieleistung < Batterie laden $maxleistung = $this->ReadPropertyInteger("MaxBatterieleistung");
// Batterie entladen oder laden basierend auf der Leistung
if ($power > $maxleistung) { if ($power > $maxleistung) {
$ladestrom = ($power - $maxleistung) / $spannung; $ladestrom = ($power - $maxleistung) / $spannung;
$this->SetValue("Ladestrom", $ladestrom); $this->SetValue("Ladestrom", $ladestrom);
} else { } else {
$entladestrom = $power / $spannung; $entladestrom = $power / $spannung;
$this->SetValue("Entladestrom", $nachladestrom); $this->SetValue("Entladestrom", $entladestrom);
} }
// Prüfe auf Änderung der Leistung im Vergleich zur letzten Einstellung
// Prüfe auf Änderung der Power im Vergleich zur letzten Einstellung
$lastPower = GetValue($this->GetIDForIdent("Aktuelle_Leistung")); $lastPower = GetValue($this->GetIDForIdent("Aktuelle_Leistung"));
if ($power != $lastPower) { if ($power != $lastPower) {
$this->SetValue("Idle", false); $this->SetValue("Idle", false);
$this->SetValue( $this->SetValue(
"IdleCounter", "IdleCounter",
$this->ReadPropertyInteger("IdleCounterMax") $this->ReadPropertyInteger("IdleCounterMax")
); );
} }
// Setze die neue Aktuelle_Leistung // Setze die neue aktuelle Leistung
$this->SetValue("Aktuelle_Leistung", $power); $this->SetValue("Aktuelle_Leistung", $power);
// IdleCounter verarbeiten // IdleCounter verarbeiten
$this->ProcessIdleCounter(); $this->ProcessIdleCounter();
} }
public function GetCurrentData(bool $Peak) public function GetCurrentData(bool $Peak)
{ {
// Werte der registrierten Variablen abrufen und in Variablen speichern // Werte der registrierten Variablen abrufen und in Variablen speichern
$aufdasnachladen = $this->ReadVariableInteger("AufdasNachladen"); $aufdasnachladen = GetValue($this->GetIDForIdent("AufdasNachladen"));
$minimumentladen = $this->ReadVariableInteger("Minimumentladen"); $minimumentladen = GetValue($this->GetIDForIdent("MinimumEntladen"));
$batterieladezustand = $this->ReadPropertyInteger("Batterieladezustand"); $batterieladezustand = GetValue($this->GetIDForIdent("Batterieladezustand"));
$maxleistung = $this->ReadPropertyInteger("MaxBatterieleistung"); $maxleistung = $this->ReadPropertyInteger("MaxBatterieleistung");
if ($Peak) { if ($Peak) {
if ($batterieladezustand <= $minimumentladen) {
$filtered_powersteps = array_filter($array_powersteps, function ($value) use ($maxleistung) {
if ($batterieladezustand <= $minimumentladen){ return $value > $maxleistung; // Hochpass filtern
// Filterung des Arrays
$filtered_powersteps = array_filter($array_powersteps, function ($value) {
return $value > $maxleistung ; //Hochpassfiltern
}); });
$filtered_powersteps_laden = array_values($filtered_powersteps); $filtered_powersteps_laden = array_values($filtered_powersteps);
$this->SetValue( $this->SetValue("PowerSteps", json_encode($filtered_powersteps_laden));
"PowerSteps",
json_encode($filtered_powersteps_laden)
);
} elseif ($batterieladezustand >= $aufdasnachladen) { } elseif ($batterieladezustand >= $aufdasnachladen) {
$filtered_powersteps_entladen = array_filter($array_powersteps, function ($value) use ($maxleistung) {
$filtered_powersteps_entladen = array_filter($array_powersteps, function ($value) { return $value < $maxleistung; // Tiefpass filtern
return $value < $maxleistung ; //Tiefpassfiltern
}); });
$this->SetValue("PowerSteps", json_encode($filtered_powersteps_entladen));
$filtered_powersteps = array_values($filtered_powersteps);
$this->SetValue(
"PowerSteps",
json_encode($filtered_powersteps_entladen)
);
} elseif ($batterieladezustand < $aufdasnachladen && $batterieladezustand > $minimumentladen) { } elseif ($batterieladezustand < $aufdasnachladen && $batterieladezustand > $minimumentladen) {
$this->SetValue( $this->SetValue("PowerSteps", json_encode($array_powersteps));
"PowerSteps",
json_encode($array_powersteps)
);
} else {
$this->SetValue( } else {
"PowerSteps", $this->SetValue("PowerSteps", json_encode($array_powersteps[0]));
json_encode($array_powersteps[0])
);
} }
} else {//Solar } else { // Solar
// Filterung des Arrays $filtered_powersteps = array_filter($array_powersteps, function ($value) use ($maxleistung) {
$filtered_powersteps = array_filter($array_powersteps, function ($value) { return $value > $maxleistung; // Hochpass filtern
return $value > $maxleistung ; //Hochpassfiltern
}); });
$filtered_powersteps = array_values($filtered_powersteps);
$this->SetValue( $this->SetValue("PowerSteps", json_encode($filtered_powersteps));
"PowerSteps",
json_encode($filtered_powersteps)
);
} }
}
+1 -1
View File
@@ -6,7 +6,7 @@
"compatibility": { "compatibility": {
"version": "7.1" "version": "7.1"
}, },
"version": "0.180", "version": "0.181",
"build": 0, "build": 0,
"date": 0 "date": 0
} }