klistra gärna in hur du har gjort. så får jag kolla lite på det och anpassa och skriva om lite (Latmans metoden)daromer skrev:Hej
Ja det går bra. Det är på det hållet man ska göra det och inte tvärt om då rrd avrundar och fular sig.
Men ivf som helst kan du flytta datan på flera sätt. Enklast är nog att använda sig av rrdupdate
Usage: rrdupdate filename
[--template|-t ds-name:ds-name:...]
time|N:value[:value...]
Sedan får du skapa ett script av dylikt slag som hämtar värdena från din mysql databas och lägger in dem i rrd filen.
Nu är inte mina script så snygga. Men om du inte har häng på hur du skulle gjort det kan jag klistra in lite exempel ur hur det går att göra med PHP-script för att fylla på en rrd databas med värden från mysql.
Kod: Markera allt
32 exec("rrdtool last rrd/ljussensor_volt.rrd",$ij);
33 $starttid=$ij[0];
34 if ( $starttid < $sens['dt'] ) $starttid = $sens['dt'];
35 echo "starttid är: ";
36 echo $starttid . "\n";
37 $sluttid=time();
38
39 if(connectToDB())
40 {
41 $result = mysql_query("select value1,value2,value4,unix_timestamp(dt) from value_long where sensor_serial = '2040 7F0D00000005' and dt > from_unixtime($starttid) order by dt asc") or die ("Error: ".mysql_error()."<br>".$query);
42 while($row = mysql_fetch_array($result))
43 {
44 echo $row[3].":".$row[0].":".$row[1].":".$row[2]."\n";
45 exec("rrdtool update rrd/ljussensor_volt.rrd $row[3]:$row[0]:$row[1]:$row[2]");
46 echo ".";
47 }
48
49 closeConnectionToDB();
50 }
51 else
52 {
53 echo "Database failure, contact admin\n";
54 return "No database connection";
55 exit;
56 }
Kod: Markera allt
6 SYNC="
7 30A84F68120000E6:rokgas:3:
8 26253EEC00000041:vinden1:1:
9 26253EEC00000041:hum_vinden:1:
10 261D35EC0000007D:hum2:1:
11 1D72DE0C000000DB:celmatare:4:A
12 1D1EFB0E00000048:Varmvatten:4:A
13 "
14
15
16 for ITEM in $SYNC
17 do
18 ROW2=""
19 SENSOR=`expr $ITEM : '\(.*\):.*:.*:'`
20 RRD=`expr $ITEM : '.*:\(.*\):.*:'`
21 TYPE=`expr $ITEM : '.*:\(.*\):'`
22 EXTRA=`expr $ITEM : '.*:.*:\(.*\)'`
23 echo "s: $SENSOR t: $RRD n: $TYPE e: $EXTRA"
24
25
26 in=`mysql -h 192.168.10.1 -u uuuu -pxxxxxxx temps -N -e"SELECT sensors.shortname,sensor_ext.ext from sensors joi n sensor_ext on sensors.sensor_type = sensor_ext.sensor_type where \
27 sensors.sensor_serial = '$SENSOR' and sensors.sensor_type = $TYPE;" | awk '{print $1"_"$2}'`
28 echo "test: $in"
29
30 LASTTIME="`rrdtool last rrd/${in}.rrd`"
31 echo "last: $LASTTIME"
32 sqlin=`mysql -h 192.168.10.1 -u uuuu -pxxxxxxx temps -N -e"SELECT unix_timestamp(dt),cast(value as dec) FROM val ue WHERE \
33 sensor_serial = '$SENSOR' and dt > from_unixtime($LASTTIME) and extra= '$EXTRA' ORDER BY dt ASC;" | awk '{print $1" :"$2}'`
34
35 nr=`mysql -h 192.168.10.1 -u uuuuu -pxxxxxx temps -N -e"SELECT round(count(*)/500) FROM value WHERE \
36 sensor_serial = '$SENSOR' and dt > from_unixtime($LASTTIME) and extra= '$EXTRA' ORDER BY dt ASC;" `
37 echo "nr: $nr"
38 i=0
39 for ROW in $sqlin
40 do
41 let i+=1
42 ROW2="$ROW2 $ROW"
43 if [ $i -gt 500 ]; then
44 echo -n "$nr -"
45 rrdtool update rrd/${in}.rrd $ROW2
46 i=0; ROW2="";
47 let nr-=1
48 fi
49 done
50 #If anything is left then add that data aswell:
51 rrdtool update rrd/${in}.rrd $ROW2