Auf Stand V2.001 gebracht, Sofarmodul ist jetzt integriert.
This commit is contained in:
@@ -17,6 +17,8 @@ class Manager extends IPSModule
|
||||
$this->RegisterPropertyInteger("DatenZuruck", 0); // Initialisierung mit 0
|
||||
$this->RegisterPropertyInteger("Interval", 2); // Recheninterval
|
||||
|
||||
$this->RegisterVariableBoolean("Is_Peak_Shaving", false);
|
||||
|
||||
// Timer registrieren
|
||||
|
||||
$this->RegisterTimer("Timer_DistributeEnergy",$this->ReadPropertyInteger("Interval")*1000,"IPS_RequestAction(" .$this->InstanceID .', "DistributeEnergy", "");');
|
||||
@@ -38,18 +40,44 @@ class Manager extends IPSModule
|
||||
|
||||
$data = json_decode(GetValue($this->ReadPropertyInteger("DatenZuruck")), true);
|
||||
IPS_LogMessage("Manager", print_r($data));
|
||||
IPS_LogMessage("Manager", $data["timestamp"]);
|
||||
IPS_LogMessage("Manager", $data["Timestamp"]);
|
||||
|
||||
if (isset($data["timestamp"])) {
|
||||
$timestamp = $data["timestamp"];
|
||||
if (isset($data["Timestamp"])) {
|
||||
$timestamp = $data["Timestamp"];
|
||||
$currentTime = time();
|
||||
IPS_LogMessage("Manager", ($currentTime - $timestamp));
|
||||
IPS_LogMessage("Manager", "im here ist so halb gut");
|
||||
|
||||
if (($currentTime - $timestamp) < 3600) {
|
||||
$this->DistributeEnergy_Extern();
|
||||
}
|
||||
} else {
|
||||
IPS_LogMessage("Manager", "im here ist gut");
|
||||
|
||||
} else {
|
||||
|
||||
$sendarray = [
|
||||
"Netzbezug" => GetValue($this->ReadPropertyInteger("Netzbezug")),
|
||||
"Timestamp" => time()
|
||||
];
|
||||
|
||||
SetValue($this->ReadPropertyInteger("DatenHoch"), json_encode($sendarray));
|
||||
|
||||
$this->DistributeEnergy();
|
||||
IPS_LogMessage("Manager", "im here ist schlecht");
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$sendarray = [
|
||||
"Netzbezug" => GetValue($this->ReadPropertyInteger("Netzbezug")),
|
||||
"Timestamp" => time()
|
||||
];
|
||||
|
||||
SetValue($this->ReadPropertyInteger("DatenHoch"), json_encode($sendarray));
|
||||
|
||||
$this->DistributeEnergy();
|
||||
IPS_LogMessage("Manager", "im here ist schlecht");
|
||||
|
||||
}
|
||||
|
||||
}else{
|
||||
@@ -73,7 +101,7 @@ class Manager extends IPSModule
|
||||
$Ueberschussleistung = $this->ReadPropertyInteger("Ueberschussleistung");
|
||||
|
||||
// Fallunterscheidung ob auf Solarladen oder Peakshaving gerregelt wird.
|
||||
if ($Netzbezug < ($Peakleistung - $Ueberschussleistung) / 2) {
|
||||
if ($Netzbezug < ($Peakleistung + $Ueberschussleistung) / 2) {
|
||||
$remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug);
|
||||
$Is_Peak_Shaving = false;
|
||||
} else {
|
||||
@@ -141,7 +169,7 @@ class Manager extends IPSModule
|
||||
IPS_LogMessage("Manager", "nciht idle");
|
||||
|
||||
}
|
||||
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);
|
||||
@@ -158,16 +186,18 @@ class Manager extends IPSModule
|
||||
return;
|
||||
}
|
||||
|
||||
// Wenn nicht alle Benutzer Idle = true sind, rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung)
|
||||
if (!$allIdle) {
|
||||
// Wenn nicht alle Benutzer Idle = true sind, oder sich der zustand von Is_Peak_shaving gerade verändert hat rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung)
|
||||
if (!$allIdle || ($Is_Peak_Shaving != $this->GetValue("Is_Peak_Shaving"))) {
|
||||
foreach ($filteredVerbraucher as $user) {
|
||||
IPS_RequestAction($user["InstanceID"],"SetAktuelle_Leistung",$user["Aktuelle_Leistung"]);
|
||||
IPS_LogMessage("Manager", "aufgerufen nicht alle idle");
|
||||
|
||||
}
|
||||
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
|
||||
// Sortiere die Verbruacher nach Priorität entweder der PV_Prio oder der Peak Prio
|
||||
usort($filteredVerbraucher, function ($a, $b) use (
|
||||
$Is_Peak_Shaving
|
||||
@@ -418,13 +448,13 @@ class Manager extends IPSModule
|
||||
$sendarray = [];
|
||||
|
||||
$sendarray = [
|
||||
"Users" => $filteredVerbraucher,
|
||||
"User" => $filteredVerbraucher,
|
||||
"Netzbezug" => $Netzbezug,
|
||||
"Timestamp" => time()
|
||||
|
||||
];
|
||||
|
||||
RequestAction($this->ReadPropertyInteger("DatenHoch"), json_encode($sendarray));
|
||||
SetValue($this->ReadPropertyInteger("DatenHoch"), json_encode($sendarray));
|
||||
|
||||
$answerArray = json_decode(GetValue($this->ReadPropertyInteger("DatenZuruck")), true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user