Jahreshöchstwert der Temperatur

Hallo,
ich benutze folgendes Script zum Auslesen des Jahreshöchstwert:


<?

$werte = AC_GetAggregatedValues(44061 /*[Archiv]*/, 49088, 4/* Täglich */,  mktime(0, 0, 0, 1, 1, 2013), mktime(23, 59, 59, 12, 31, 2013), 0);

foreach($werte as $wert) {
 date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Max'] . PHP_EOL;


SetValue(41304 /*[Temperatur - Luftfeuchte\Aussenfühler \Jahres Höchst - Tiefstwerte\Jahres Höchsttemperatur]*/, $wert['Max']);
}


?>


Nun möchte ich aber auch das Datum wann der Höchstwert gemessen wurde anzeigen lassen?
Wie stell ich das am besten an :slight_smile:

Danke

Hallo,

es gibt einen UNIX-Timestamp

$wert['MaxTime']

Der sollte dieses Datum beinhalten.

Gruß
Walter

jetzt steh ich auf der Leitung wo ich den Wert im Script ändern muss :frowning:

Danke

Hallo,

Du musst gar nichts ändern. Du musst im Prinzip nur den o.a. Wert anzeigen, mit SetValue in eine Variable schreiben oder was auch immer…

Gruß
Walter

 date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Max'] . PHP_EOL; 

Irgendwie ist diese Zeile komplett überflüssig… :confused:

Versuch’s mal so :

$jahr=date("Y");
$timestamp = mktime(0,0,0,1,1,$jahr);
$werte=AC_GetAggregatedValues(44061,49088,4,$timestamp, time(),0);
SetValue(41304 /*[Temperatur - Luftfeuchte\Aussenfühler \Jahres Höchst - Tiefstwerte\Jahres Höchsttemperatur]*/, $werte['Max']); 
$maxtime=date("d.m.Y H:i:s",$werte[0] ['MaxTime']);

Dein fix gefüllter MKTIME funktioniert nur in 2013. Durch den ersten Befehl im o.a. Skript wird immer das aktuelle Jahr genommen.
Das Umwandeln des Arrays mittels foreach Schleife ist nicht unbedingt notwendig. Kann man kürzer halten (siehe oben).
Leg Dir entweder eine Stringvariable an und fülle diese mittels SetValue mit $maxtime oder mach Dir eine Integervariable mit dem Profile „UnixTimeStamp“ und schreib dort $werte[0] [‚MaxTime‘] rein. Dann hast Du auch den Zeitpunkt.

Gruß
Walter

Hallo Walter,
danke für dein Script!

Ich habe jetzt eine Integer Vari angelegt mit „UnixTimeStamp“.
Bekomm jedoch immer diese Fehlermeldung bei Ausführen:

Warning: Cannot Auto Convert to integer from variant. on line 6

Was steht denn in Zeile 6 ? :confused:

Wenn Du die Integervariable füllst, dann nur $werte[0] [‚MaxTime‘] reinschreiben. Keine Konvertierung mit DATE Befehl.

Gruß
Walter

Das ist jetzt das Script:


<?
$jahr=date("Y");
$timestamp = mktime(0,0,0,1,1,$jahr);
$werte=AC_GetAggregatedValues(44061,49088,4,$timestamp, time(),0);
SetValue(15932 /*[Temperatur - Luftfeuchte\Aussenfühler \Jahres Höchst - Tiefstwerte\Jahres Höchsttemperatur]*/, $werte['Max']);
$maxtime=date("d.m.Y H:i:s",$werte[0] ['MaxTime']);
?>

Die Fehlermeldung die ich beim Ausführen bekomme ist:

Notice: Undefined index: Max in C:\IP-Symcon\scripts\17453.ips.php on line 5

Warning: Cannot auto-convert to Integer from Variant. Error: Could not convert variant of type (Null) into type (Integer) in C:\IP-Symcon\scripts\17453.ips.php on line 5

Hallo,

Zeile 5: Da muss stehen

$werte[0] ['Max']

und nicht

$werte['Max']

Mein Fehler.
Die nächste Meldung ist ein Folgefehler, da Variable leer/NUL.

Gruß
Walter

Hmm, wenn ich das Script so Ausführe:


<?
$jahr=date("Y");
$timestamp = mktime(0,0,0,1,1,$jahr);
$werte=AC_GetAggregatedValues(44061,49088,4,$timestamp, time(),0);
SetValue(15932 , $werte[0] ['MaxTime']);
$maxtime=date("d.m.Y H:i:s",$werte[0] ['MaxTime']);
?>


dann seh ich in der Variable, das Datum wann der höchste Wert geloggt wurde, jedoch nicht die Temperatur :confused:

Ja, wenn Du ‚MaxTime‘ und nicht ‚Max‘ in die Variable schreibst, ist das logisch, oder? :mad:

15932 war Deine Variable für die Temperatur. Da gehört $werte[0] [‚Max‘] rein. In die neue Intervariable gehört dann $werte[0] [‚MaxTime‘] rein. Also 2 SetValue-Befehle, da 2 Variablen :


SetValue(15932 , $werte[0] ['Max']); 
SetValue(xxxxx,  $werte[0] ['MaxTime']);

Ach, Danke :slight_smile:
Jetzt passt es!!!