AC_GetLoggedValues sehr langsam

Hat einer eine Idee wie man das schneller bekommt.

Temperaturwerte meiner Wetterstation von einem Jahr zu laden dauert 120 s.

Mit einem SQL Server würde das wesentlich schneller gehen.

Kann man vielleicht direkt darauf zugreifen.

Hat da jemand Ideen?

kommt darauf an, welche werte du genau haben willst. Wenn es z.B. um die Tagesdurchschnittstemp. für ein Kalenderjahr geht, bietet sich AC_GetAggregatedValues an.

Ich wollte die Maximaltemperatur des Jahres ermitteln.

In SQL einfach und schnell

select max(Temp) from Mytemperaturwerte

und fertig.

Das geht rasend schnell auch wenn ich keinen Zeitbereich angebe.

Direkter Zugriff aus SQLite wäre schön.

Zwischendurch habe ich mal gelesen das man Postgress in IPS einstellen kann.
Das ist aber leider wieder verworfen worden.

Schaaaade!!

aber genau dafür ist doch AC_GetAggregatedValues bestens geeignet ?

hier vielleicht noch was Ergänzendes: http://www.ip-symcon.de/forum/f52/genaue-definition-berechnungslogik-array-werte-ac_getaggregatedvalues-16450/

und noch ein Beispiel dazu:

Abfrage


$belichtung = AC_GetAggregatedValues($archiveID, $object_temperature_ID, 4, $ts, $te, 2);

ergibt:


Array
(
    [0] => Array
        (
            [Avg] => 12.585949153246
            [Duration] => 16634179
            [LastTime] => 1325372399
            [Max] => 29.9
            [MaxTime] => 1314367866
            [Min] => -3.4
            [MinTime] => 1321254003
            [TimeStamp] => 1293836400
        )

ohne es jetzt gecheckt zu haben erscheinen mir Max und Min plausibel. Laufzeit: 64ms :wink:

Ich dachte diese Funktion gilt nur für aggregierte Variablen. Ich wusste nicht das es auch für nicht aggregierte gilt.

Danke

Also ich mache folgendes:

$Von = strtotime("01.01.2012");
	$Bis = time();//strtotime("31.12.2012");
	//print_r(date("H:i:s d.m.y",$Von));
	//$max = getmaxvalue($ID_AussenTemperatur,$Von,$Bis);
	//print_r($max);
	//$ar = ac_getyears($ID_ArchivHandler,$Von,$Bis);
	//foreach($ar as $a) {
	//   print_r(date("H:i:s d.m.y",$a["StartTime"])."  ".date("H:i:s d.m.y",$a["EndTime"])."
");
	//}
	$ar = AC_GetAggregatedValues($ID_ArchivHandler, $ID_AussenTemperatur, 2, $Von, $Bis, 0);
	//AC_DeleteVariableData($ID_ArchivHandler,$ID_AussenTemperatur,$ar[0]["MaxTime"],$ar[0]["MaxTime"]);
	//print_r($ar);
 	//print_r(date("H:i:s d.m.y",$ar[0]["MaxTime"])."  ".date("H:i:s d.m.y",$ar[0]["TimeStamp"])."  ".$ar[0]["Max"]."
");
	//print_r(date("H:i:s d.m.y",$ar[1]["MaxTime"])."  ".date("H:i:s d.m.y",$ar[1]["TimeStamp"])."  ".$ar[1]["Max"]."
");
	foreach ($ar as $a) {
	   print_r("Max ".date("H:i:s d.m.y",$a["MaxTime"])."  ".date("H:i:s d.m.y",$a["TimeStamp"])."  ".$a["Max"]."
");
	   print_r("Min ".date("H:i:s d.m.y",$a["MinTime"])."  ".date("H:i:s d.m.y",$a["TimeStamp"])."  ".$a["Min"]."
");
	   print_r("Avg ".date("H:i:s d.m.y",$a["TimeStamp"])."  ".$a["Avg"]."
");
	   
	}

Ich aggregiere nach Wochen. In dem Ergebnis array fehlt aber der Februar
obwohl die Daten vorhanden sind, wenn ich Archivhandler nachsehe.
In der Grafik im Webfront werden sie auch dargestellt.

Neu Aggregiert habe ich auch.
Kann es daran liegen, das die Temperaturen unter 0 sind?
Hat einer noch Ideen?

so sieht die Ausgabe deines Scripts bei mir aus:


Max 15:10:10 14.04.12  00:00:00 09.04.12  15.3
Min 23:58:52 13.04.12  00:00:00 09.04.12  3.1
Avg 00:00:00 09.04.12  8.4430079445915
Max 15:46:35 06.04.12  00:00:00 02.04.12  11.2
Min 06:33:21 08.04.12  00:00:00 02.04.12  -2.7
Avg 00:00:00 02.04.12  3.9962885703596
Max 16:48:01 27.03.12  00:00:00 26.03.12  17
Min 05:41:30 01.04.12  00:00:00 26.03.12  1.1
Avg 00:00:00 26.03.12  7.9053072872037
Max 15:50:05 23.03.12  00:00:00 19.03.12  17.6
Min 06:23:25 22.03.12  00:00:00 19.03.12  2.4
Avg 00:00:00 19.03.12  9.2697498227319
Max 15:17:57 16.03.12  00:00:00 12.03.12  17.6
Min 03:11:08 16.03.12  00:00:00 12.03.12  1.7
Avg 00:00:00 12.03.12  8.1355935739275
Max 15:11:21 10.03.12  00:00:00 05.03.12  12.2
Min 06:57:10 06.03.12  00:00:00 05.03.12  -0.2
Avg 00:00:00 05.03.12  5.9956545224355
Max 15:19:16 29.02.12  00:00:00 27.02.12  10.3
Min 00:00:00 27.02.12  00:00:00 27.02.12  0
Avg 00:00:00 27.02.12  6.6228439524757
Max 13:48:18 24.02.12  00:00:00 20.02.12  12
Min 06:10:28 20.02.12  00:00:00 20.02.12  -0.5
Avg 00:00:00 20.02.12  5.635113732879
Max 15:16:02 17.02.12  00:00:00 13.02.12  7.3
Min 07:20:25 16.02.12  00:00:00 13.02.12  -2.7
Avg 00:00:00 13.02.12  3.0506331654929
Max 14:27:35 09.02.12  00:00:00 06.02.12  0.5
Min 00:43:22 07.02.12  00:00:00 06.02.12  -16.5
Avg 00:00:00 06.02.12  -4.8064143909677
Max 14:59:23 30.01.12  00:00:00 30.01.12  -2.4
Min 05:46:15 05.02.12  00:00:00 30.01.12  -14.8
Avg 00:00:00 30.01.12  -7.5098926070453
Max 10:32:50 23.01.12  00:00:00 23.01.12  3.2
Min 23:47:41 29.01.12  00:00:00 23.01.12  -5.6
Avg 00:00:00 23.01.12  -0.52219040635843
Max 11:24:45 19.01.12  00:00:00 16.01.12  6
Min 07:35:40 18.01.12  00:00:00 16.01.12  -2
Avg 00:00:00 16.01.12  3.3060491768809
Max 09:39:53 12.01.12  00:00:00 09.01.12  9.4
Min 08:48:11 15.01.12  00:00:00 09.01.12  -3.2
Avg 00:00:00 09.01.12  4.6581475333445
Max 02:11:46 02.01.12  00:00:00 02.01.12  11.5
Min 08:46:22 06.01.12  00:00:00 02.01.12  1.4
Avg 00:00:00 02.01.12  5.6922104828043

Ich habe die Datenbank nochmal neu aufgesetzt. Jetzt geht es. :slight_smile:

Danke