Konstiga värden i rrd

RRDTool är en Linuxmjukvara som kan användas för att lagra data i Round-Robin Databaser för att sedan generera grafer utifrån den lagrade datan.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
mille7
Inlägg: 1
Blev medlem: 14 mar 2013, 20:33
Ort: Linköping

Konstiga värden i rrd

Inlägg av mille7 »

Hej

Har kört ett perlscript nu ett tag som jag fick här ifrån vill jag minnas men tycker att jag får fladdriga grafer så
idag gick jag in och körde ut min databas till xml och kollade lite hur den såg ut och tycker att jag har lite märkliga värden

Har följande script com jag kör var femte minut via cron.

Kod: Markera allt

#!/usr/bin/perl
#
# copyright Martin Pot 2006
# http://martybugs.net/electronics/tempsensor/
#
# thanks to Petr for suggestions relating to better handling of failed data reads
#
# rrd_tempsensor.pl

use lib qw(/usr/lib/perl5);
use RRDs;


# define location of rrdtool databases
my $rrd = '/var/temperature/rrd';
# define location of images
#my $img = '/home/hardinth/public_html/temps/';
my $img = '/var/www/simon/temp';

# process data for each devices (add/delete as required)
&ProcessSensor("sovrum_temp", "Temperatur sovrum");
&ProcessSensor("ute_temp", "Temperatur ute");
&ProcessSensor("vardagsrum_temp", "Temperatur vardagsrum");
#&ProcessSensor("your device id here", "temp sensor 2");

sub ProcessSensor
{
# process sensor
# inputs: $_[0]: sensor number (ie, 0/1/2/etc)
#         $_[1]: sensor description

  # get temperature from sensor
  my $temp = `grep . /media/1-wire/$_[0]/temperature | sed -e s/" "//g`;

  # remove eol chars
  chomp($temp);

  print "sensor $_[0]: $temp degrees C\n";

  # if rrdtool database doesn't exist, create it
  # OBS Skapa katalogen RRD_DB manuellt!
  if (! -e "$rrd/owfs-$_[0].rrd")
  {
    print "creating rrd database for temp sensor $_[0]...\n";
    RRDs::create "$rrd/owfs-$_[0].rrd",
    "-s 300",
    "DS:temp:GAUGE:600:U:U",
    "RRA:AVERAGE:0.5:1:2016",
    "RRA:AVERAGE:0.5:6:1344",
    "RRA:AVERAGE:0.5:24:2190",
    "RRA:AVERAGE:0.5:144:3650",
    "RRA:AVERAGE:0.3:1440:1825";
  }
  if ($ERROR = RRDs::error) { print "$0: failed to create $_[0] database file: $ERROR\n"; }

  # check for error code from temp sensor
  if (int $temp ge 85)
  {
    print "failed to read value from sensor $_[0]\n";
  }
  else
  {
    # insert values into rrd
    RRDs::update "$rrd/owfs-$_[0].rrd",
    "-t", "temp",
    "N:$temp";
    if ($ERROR = RRDs::error) { print "$0: failed to insert $_[0] data into rrd: $ERROR\n"; }
  }


  # create graphs for current sensor
  &CreateGraph($_[0], "day", $_[1]);
  &CreateGraph($_[0], "week", $_[1]);
  &CreateGraph($_[0], "month", $_[1]);
  &CreateGraph($_[0], "year", $_[1]);
  &CreateGraph($_[0], "5year", $_[1]);
}

sub CreateGraph
{
  # creates graph
  # inputs: $_[0]: sensor number (ie, 0/1/2/etc)
  #         $_[1]: interval (ie, day, week, month, year)
  #         $_[2]: sensor description

  RRDs::graph "$img/temp-$_[0]-$_[1].png",
  "-s -1$_[1]",
  "-t $_[2]",
  "--lazy",
  "-A",
  "-h", "150", "-w", "475",
  "-a", "PNG",
  "-v Lägenheten",
  "--slope-mode",
  "DEF:temp=$rrd/owfs-$_[0].rrd:temp:AVERAGE",
  "LINE2:temp#0000FF::",
  "GPRINT:temp:MIN:  Min\\: %6.1lf",
  "GPRINT:temp:MAX:  Max\\: %6.1lf",
  "GPRINT:temp:AVERAGE: Snitt\\: %6.1lf",
  "GPRINT:temp:LAST: Nuvarande\\: %6.1lf grader C\\n";
  if ($ERROR = RRDs::error) { print "$0: unable to generate sensor $_[0] $_[1] graph: $ERROR\n"; }
}

Bifogar två exempel på vad jag menar, temp-day.png är från idag och month är från december. Samt ett urdrag från min xml, http://pastebin.com/vfHXiTtT

Hoppas att någon kan hjälpa mig med vad som kan vara tokigt eller om graferna ska se ut :(

//Mille
Bilagor
temp-sovrum_temp-day.png
temp-sovrum_temp-day.png (15.84 KiB) Visad 1476 gånger
dec-temp-vardagsrum_temp-month.png
dec-temp-vardagsrum_temp-month.png (26.38 KiB) Visad 1476 gånger