From 16928b40095395e7a51cf541c3cb96fd5fa6ee22 Mon Sep 17 00:00:00 2001 From: Michael Maroszek Date: Wed, 3 Apr 2019 10:33:41 +0200 Subject: [PATCH] =?UTF-8?q?fix=20Z=C3=A4hlertag=20to=20also=20show=20value?= =?UTF-8?q?s=20logged=20on=20previous=20days?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZaehlerstandTag/module.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/ZaehlerstandTag/module.php b/ZaehlerstandTag/module.php index 7774c98..9a29c15 100644 --- a/ZaehlerstandTag/module.php +++ b/ZaehlerstandTag/module.php @@ -85,22 +85,33 @@ public function Calculate() $variableID = $this->ReadPropertyInteger("SourceVariable"); $date = GetValue($this->GetIDForIdent("Date")); - $values = AC_GetLoggedValues($acID, $variableID, $date, $date + (24*3600) - 1, 0); + //Falls der "erste Wert" am Tag gesucht wird, betrachte erstmal nur den gewählten Tag. + //Falls dort keine Werte vorhanden sind sind nutzen wir die Funktionsweise von "letzter Wert" am Tag, der dann auch den Wert von Vortagen ausgibt. + if($this->ReadPropertyInteger("ValueType") == 0) { + $values = AC_GetLoggedValues($acID, $variableID, $date, $date + (24 * 3600) - 1, 0); + } + + if($values === false) { + return; + } + + //Der letzte Wert am Tag fragt alle Werte bis zum Endzeitpunkt ab mit Limit 1. + //Da AC_GetLoggedValues immer den neusten Wert zuerst ausgibt ist es genau der Wert den wir suchen + if($this->ReadPropertyInteger("ValueType") == 1 || sizeof($values) == 0) { + $values = AC_GetLoggedValues($acID, $variableID, 0, $date + (24 * 3600) - 1, 1); + } if($values === false) { return; } if(sizeof($values) == 0) { - echo "Leider ist kein Wert für diesen Tag verfügbar"; + echo "Leider wurden noch keine Werte im Archiv gespeichert!"; return; } - - if($this->ReadPropertyInteger("ValueType") == 0) { - SetValue($this->GetIDForIdent("Reading"), $values[0]['Value']); - } else { - SetValue($this->GetIDForIdent("Reading"), $values[sizeof($values)-1]['Value']); - } + + //Immer den letzten Wert im Array ausgeben + SetValue($this->GetIDForIdent("Reading"), $values[sizeof($values)-1]['Value']); }