Suche Script um fehlende Daten in einer Datenreihe auf zu füllen.

Hallo,

Bei den Temperaturdaten in der IPS DB ist es ja so das nur bei Änderungen ein Wert eingefügt wird.
Für manche Darstellungen brauche ich aber die Daten in einen festen Abstand.
Nun suche ich ein Script welches mir die Daten in ein Minuten Intervall auffüllt .
Hat da vielleicht schon mal jemand was geschrieben?

Schöne Grüße
Thomas

Hallo!

Ich hab da ein Beispiel:

$id_vorlauf = GetValue(30430 /*[Objekt #30430 existiert nicht]*/);
$id_ruecklauf = GetValue(54587 /*[Objekt #54587 existiert nicht]*/);

$differenz = $id_vorlauf-$id_ruecklauf;
//$diff = SetValue(36854 /*[Heizung\Tempdiff\Tempdifferenz]*/);
SetValue(36854 /*[Heizung\Tempdiff\Tempdifferenz]*/, $differenz);
echo "Tempdifferez : $differenz
";

Der Wert 36854 wird jede Minute in eine neue Variable gespeichert.

Also: Wert alle Min. holen, in neue Variable schreiben.

Schönen Gruß:)
Egon

Hallo,

ich suche da mehr etwas was nachträglich arbeitet, wenn man die Daten aus der Datenbank liest oder aus einer CSV Datei.
Ich habe da schon etwas angefangen, für den Minutenbereich, zwischendurch sind aber immer wieder noch Fehler das muss ich mir noch mal anschauen.


<?
set_time_limit(10);
$IDAC = 51244 /*[Archive Handler]*/;                 //ArchivControl
$IDAussentemp = 35177 /*[Umwelt\Umwelt Sensoren\T/F-EZ\Aussentemperatur\Aussentemperatur]*/;        //Variable die die geloggten Werte enthält
$count = 1;
$time1 =1377899999;
$time2 =1377986399;
//
$tneu = 0;
$minneu = 0;
$stneu = 0;
$tagneu = 0;
$monneu = 0;
$datenold = 0;
$timeold = 0;
$runden = 0;
//
while($count < 10)
{
$buffer = AC_GetLoggedValues($IDAC,$IDAussentemp, $time1, $time2,0);
foreach ($buffer as $werte)
{
$uhrzeit = date("H:i",$werte["TimeStamp"]);
$minuten = date("i",$werte["TimeStamp"]);
$datum = date("d.m.Y",$werte["TimeStamp"]);
$time = $werte["TimeStamp"];
//
//Vergleich
//
if ($minneu > 0)
{
if ($minuten <> $minneu)
{
$loop = round(($tneu - $time)/60);
echo $tneu." ".$time."
";
$as = " as";
while($runden < $loop)
{
$runden++;
$time_temp = $timeold - ($runden*60);
$uhrzeit2 = date("H:i",$time_temp);
$datum2 = date("d.m.Y",$time_temp);
$avg = $datenold;

$datei = fopen("c:\\ip-symcon\\html\\ips-logging\\datenreihe.txt","a");
fwrite($datei, "$time_temp;$datum2;$uhrzeit2;$avg
");
fclose($datei);
}
$runden = 0;
}
}
//
//
//
$avg=$werte["Value"];
$avg = number_format( $avg, 1, ',', '.');
$datei = fopen("c:\\ip-symcon\\html\\ips-logging\\datenreihe.txt","a");
fwrite($datei, "$time;$datum;$uhrzeit;$avg
");
fclose($datei);
//
//Neues Interval berechnen
//
$tneu = $time - 60;
$minneu = date("i",$tneu);
$stneu = date("H",$tneu);
$tagneu = date("d",$tneu);
$monneu = date("m",$tneu);
$datenold = $avg;
$timeold = $time;
//
//
//
}
$time1 = $time1 - 86400;
$time2 = $time2 - 86400;
$count++;
}
?>


Schöne Grüße
Thomas

http://www.ip-symcon.de/service/dokumentation/modulreferenz/archive-control/ac-getaggregatedvalues/

Ab Version 3 kannst du dir eine minütliche Aggregation erstellen lassen :wink:

paresy