Tageshöchsttemperatur ermitteln?

Danke, bin ich blind :slight_smile:
Ich seh nur die Variable für das Anzeige Fenster die ist ganz zum Schluss vom Script?
Wo ist die Variable für die Tage???

Der String-Variable in der Du die Anzahl der Tage einträgst bekommt als Aktionskript das von Dir gepostete.

Der dann eingetragene Wert wird per $_IPS[‚VALUE‘] an das Skript übergehen.

Hmm, ich hab jetzt folgende Anzeige im Webfront (siehe Anhang)

Wo muss ich das umändern:
Und bau die IPS-Systemvariablen bitte nach den neue Konventionen um.

$IPS_Value lautet seit geraumer Zeit $_IPS[‚VALUE‘]??
In dieser Zeile?
$temp = AC_GetLoggedValues(28761 /[Archive Handler]/, 35017, time()-($IPS_VALUE2460*60), time(), 0);

Lg

Nimm einfach die Augen zu Hilfe und ersetze das an allen Stellen :eek:

Zur Verwirrung: Das muss im geänderten Skript auch noch vorkommen $_IPS[‚VARIABLE‘] und $_IPS[‚SENDER‘]

Gruß
Bruno

Hallo,

ich glaub, ich steh ein bisl auf der Leitung.
Ich hab bist gestern vorm Upgrade von 2.7 auf 3.0 folgendes Script periodisch laufen gehabt:

<?
// Mittelwert letzte 24 Stunden mit Datum und Uhrzeit der jeweiligen Temperatur.
$temp = AC_GetLoggedValues(13773 /*[Archive Handler]*/, 14097, time()-(1440), time(), 0);

foreach($temp as $key => $v)
{
    $value[] = $v['Value'];
    $time[] = $v['TimeStamp'];
    $anzahl = count($value);
    $werte = array_map(null, $value, $time);
    rsort($werte);
    foreach($werte as $keys)
    {
        $min = $keys;
    }
}

$mittelWert = array_sum($value)/$anzahl;
SetValueFloat (13326 /*[Visualization\WebFront\Heizung\Heizung Therme\DS1820 EG Rücklauf\Temperatur EG Rücklauf average]*/, $mittelWert);
?>

Das wirft mir nun folgende Fehlermeldung:

Notice:  Undefined variable: value in C:\IP-Symcon\scripts\52509.ips.php on line 18

Warning:  array_sum() expects parameter 1 to be array, null given in C:\IP-Symcon\scripts\52509.ips.php on line 18

Notice:  Undefined variable: anzahl in C:\IP-Symcon\scripts\52509.ips.php on line 18

Warning:  Division by zero in C:\IP-Symcon\scripts\52509.ips.php on line 18

Warning:  Wrong parameter type for SetValueFloat() in C:\IP-Symcon\scripts\52509.ips.php on line 19

Hier ist was von neuen Konventionen die Rede…kann das was damit zu tun haben?
Danke.

Hi,

lass Dir mal $temp anzeigen. Ich wette, das ist leer. Deshalb wird die Schleife nicht durchlaufen, die Variable ist damit undefiniert etc…

Gruß
Walter

Du hattest recht.
Anscheinend is die DB seit dem Restart ein bisl verwirrt gewesen bzw. hat sich die die Rücklauftemperatur der Heizung nicht geändert, darum war´s leer.
Danke für den Gedankenstupser :slight_smile:

Hi Leute!

Ich hab gestern das Script eingebaut…

<?




// Maximal-Minimal-Mittelwert letzte 24 Stunden
$temp = AC_GetLoggedValues(58185 /*[Archive Handler]*/, 35819, time()-(1440*60), time(), 0);

foreach ($temp as $key => $v)
{
    $value[] = $v['Value'];
    $anzahl = count($value);
    rsort($value);
}
$maxWert = array_shift($value);
$minWert = array_pop($value);
$mittelWert = array_sum($value)/$anzahl;
//echo "Höchstwert: ".$maxWert." °C"."
"."Minimalwert: ".$minWert." °C "."
"."Mittelwert: ".number_format($mittelWert, 1)." °C";

SetValueFloat (35303 /*[Heizkörper\Kinderzimmer\Temperatur_Min]*/  , $minWert);
SetValueFloat (30774 /*[Heizkörper\Kinderzimmer\Temperatur_Mittel]*/  , $mittelWert);
SetValueFloat (28813 /*[Heizkörper\Kinderzimmer\Temperatur_Max]*/  , $maxWert);
?>

Im Archiv Handler steht folgendes!

1.png

Und als Ergebnis vom Script kommt das…

Der Mittelwert kann nicht stimmen…

Danke

Welche Werte hast du im Archive Handler von der Variable 35819 von den letzten 24 Stunden?
in deinem Screenshot sind nur die letzten 4 Stunden drinnen.

Das sind alle Daten.
Hab für diese Variable die Daten gelöscht (war ein Test ob es dann besser wird).

Hallo,

ich möchte den Thread nochmal aufgreifen.
Ich will die Durchschnittstemperatur der Heizung von der letzten Stunde ausgeben und speichern.
Ich hab in der Befehlsdoku folgendes Beispiel gefunden, komme aber damit nicht klar.

<?

$werte = AC_GetAggregatedValues(13773, 44384 /*[KG\Heizungssteuerung Gastherme\OG Heizung Vorlauf Temperatur\OG Heizung Vorlauf Temperatur]*/, 0 /* Stündlich */, time()-(3600), time(), 0); 

foreach($werte as $wert) {
	echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
}
$wert1 = $wert[0][0];

echo $wert1;
SetValue (50756 /*[KG\Heizungssteuerung Gastherme\OG Heizung Vorlauf Temperatur\Temperatur OG Vorlauf average]*/, $wert1);

?>

Das wirft folgende Fehlermeldung(en):

15.05.2014 21:00:00 -> 31.418626823195

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\49818.ips.php on line 8

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

Ich durschau das Array Zeugs leider überhaupt nicht…
Danke.

Hallo
Nach diesem Hinweis
Tageshöchsttemperatur ermitteln? - Seite 3

Ich habe beide Varianten ausprobiert.
Einmal die von der ersten Seite mit
„$temp = AC_GetLoggedValues(25692 /[Archive]/, 51339 /[Wetter\Atkl_Aussen_Temperatur\Aussen Temperatur]/, time()-(1440*60), time(), 0);“

und deine
$count=0;
$Zeitraum=1;
$temp=AC_GetAggregatedValues(25692 /[Archive]/,51339 /[Wetter\Atkl_Aussen_Temperatur\Aussen Temperatur]/,1,time()-($Zeitraum2460*60),time(),0);

Ich bekommen unterschiedliche Werte.

Wo liegt mein Fehler?

Ich möchte halt die Durchschnittstemperatur der letzten 24 Stunden haben.

Bernd

Andere Methode
Wenn die Temperaturvariable geschrieben wird:
Wenn sie höher ist als TempMax, höheren Wert in TempMax schreiben.
Wenn sie niedriger als TempMin ist, niedrigeren Wert in TempMin schreiben.
Um 00:00 aktuelle Temperatur in TempMax und TempMin schreiben.

Scheinbar geht das damit nicht
Aggregationsstufe Beschreibung
0 Stündliche Aggregation (00:00 - 59:59)
1 Tägliche Aggregation (00:00:00 - 23:59:59)
2 Wöchentliche Aggregation (Montag 00:00:00 - Sonntag 23:59:59)
3 Monatliche Aggregation (Erster Monatstag 00:00:00 - Letzter Monatstag 23:59:59)
4 Jährliche Aggregation (01.01. 00:00:00 - 31.12. 23:59:59)

Ich sehe nicht wie ich ihm vorgeben soll die letzten 24 Stunden auzuwerten,
AC_GetAggregatedValues fängt immer zum Wechsel neu an.
Ich könnte jetzt die Daten aus zwei Tagen nehmen und auswerten lassen.

$Zeitraum=2;
$temp=AC_GetAggregatedValues(25692,51339,1,time()-($Zeitraum2460*60),time(),0);

Aber auch dann zeigt er den Min und Maxwert von heute an.
Wie immer verstehe ich das nicht…

Bernd

PS.

Jetzt verstehe ich was Audi2010 meint.
Die Ablagemethode ist anders.
Trotzdem müsste doch dann der Max/Min Wert stimmen wen es heute zB. wärmer war und es wird eine niedrigere Temperatur angezeigt.