hellgun skrev:
Jag har historisk data sedan 7 månader tillbaka med 1 minuts upplösning och det är lagrat i textfiler. Finns det något smidigt sätt att läsa in dessa värden i RRDtool-databasen så att jag även får med det i mina grafer?
Gå igenom filen och stoppa in alla värden mha rrdtool update [TIMESTAMP] istället för N: som står för NOW
Jag hackade ihop ett skript som kan göra det åt dig, jag utgår från att dina värden ligger i en fil som heter temps som ligger i /home/jed och att dina rrd-filer ligger enligt howto:n
Ligger dom någon annanstans så uppdatera $orgFile och $RRDFile i skriptet.
Det skriver ut lite data allteftersom det tuggar igenom filen och jag har kommenterat lite grann vad dom olika raderna gör.
Jag har inte testat det själv eftersom jag inte har rrdtool på den här datorn men det bör funka
Som vanligt, ta backup på din rrd-fil INNAN du kör det här
Kör det från kommandoprompten genom att skriva:
php ./skript.php (skript.php ska bytas ut mot det du döpte skriptet till)
Kod: Markera allt
<?php
// input file
$orgFile = "/home/jed/temps";
// RRDfile
$RRDFile="/home/anders/rrddata/outside_temp.rrd";
$ptr = fopen ($orgFile, "r");
if ($ptr)
{
while (($tmp = fgets($ptr, 4096)) !== false)
{
echo "Processing row...";
// Split the row
$fields = preg_split ("/\ /", rtrim ($tmp), 10, PREG_SPLIT_NO_EMPTY);
// Replace , with . to make rrdtool update happy
$temp = preg_replace ("/,/", ".", $fields[2]);
// rrdupdate wants a unixtimestamp (ie # of seconds since 1/1-1970)
$timestamp = mktime (substr ($fields[1], 0, 2),
substr ($fields[1], 3, 2),
0,
substr ($fields[0], 5, 2),
substr ($fields[0], 8, 2),
substr ($fields[0], 0, 4));
// Enough magic, lets update rrd
exec ('rrdtool update $RRDFile $timestamp:$temp');
echo "$fields[2] degrees, timestamp $fields[0] $fields[1] added to rrd\n";
}
} else {
echo "ERROR: Unable to open $orgFile\n";
}
fclose ($ptr);
echo "\nAll done!\n\n";
?>