Inte stoppa in felaktig data i RRD-databas?

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!
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Inte stoppa in felaktig data i RRD-databas?

Inlägg av Niklas »

Hej,

Jag vet att det finns personer här som i sina script kontrollerar om värdet som kommer från sensorn är rimligt eller ej.
Jag har ingen felkontroll alls utan pillar in alla värden i databasen. Detta leder till att jag ibland får konstiga dippar ner till 0.00 i mina grafer vilket inte är bra.
Antingen så bör jag ta föregående värdet när jag får ett 0.00 eller så inget alls. Vilket som spelar ingen roll så länge jag slipper de fula dipparna ner till 0 som även sabbar medelvärden osv. Jag kan ha 0.00-kontroll på de sensorer där det aldrig blir 0 grader men på utomhussensorn fungerar ju inte det då det faktiskt kan vara 0 grader ute. En annan möjlighet är ju att jämföra tidigare värde för att se om det är en rimlig föränding. 85-grader ska ju också rensas bort. Jag sparar mina värden i en mySQL-databas också om det kan vara till någon hjälp.

Dela gärna med er av era kontroller som ni gör i era script så att man kan få lite ideer till lösningar!

Tack på förhand!
/Nicke
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5434
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av elf98 »

När du trycker in 0 i databasen har dina script troligt vis omvandlat "" till 0.

Sä kör en koll på strängländen precis efter att du läst in temperaturen så kommer du ifrån detta problem
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Niklas »

elf98 skrev:När du trycker in 0 i databasen har dina script troligt vis omvandlat "" till 0.

Sä kör en koll på strängländen precis efter att du läst in temperaturen så kommer du ifrån detta problem
Ja, så måste det ju vara.
Frågan är hur. Perl och jag funkar inte. ;-)
FredrikS
Tar hemautomation på allvar
Inlägg: 98
Blev medlem: 23 sep 2008, 21:39
Ort: Linköping

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av FredrikS »

Kod: Markera allt

if ($sensor eq "") {$sensor="NAN";}
typ....
Mäter lite saker i huset i Jägarvallen, Linköping, kan beskådas på http://j23.mine.nu
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Niklas »

FredrikS skrev:

Kod: Markera allt

if ($sensor eq "") {$sensor="NAN";}
typ....
Det verkar funka fint.

Kod: Markera allt

if ($temp eq "") {$temp="NAN";}
blev det. :)

Jag dödade owfs och testade. Funkar fint. Tack.
Det verkar vara rrdtool som stoppar in 0.00 när värdet är tomt.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av HUSKii »

Jag har ett graf genererings skript och ett skript som hämtar temperaturerna och sparar de i *.rrd filer.
Vart ska jag stoppa in den kodsnutten isåfall?
Användarvisningsbild
Dowser
Hemautomation - det är mer än en hobby
Inlägg: 811
Blev medlem: 10 mar 2007, 09:44
Ort: Trosa
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Dowser »

Detdär skall vara i scriptet där du hämtar temperaturen, innan du stoppar den i databasen.
När du genererar grafen hämtar du bara data från databasen och då är det försent.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Niklas »

HUSKii skrev:Jag har ett graf genererings skript och ett skript som hämtar temperaturerna och sparar de i *.rrd filer.
Vart ska jag stoppa in den kodsnutten isåfall?
Jag la det här:

Kod: Markera allt

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

        # get temperature from sensor
          my $temp = `cat $_[2]|tr -d [:space:]`;
        # remove eol chars
        chomp($temp);

        if ($temp eq "") {$temp="NAN";}

        print "sensor $_[0]: $temp grader C\n";
Det beror ju lite på hur ditt script ser ut. :)
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av HUSKii »

Såg nu att denna lösningen var för perl, jag hämtar mina temperaturer via ett bash script. Så det sket sig. Men men tack för hjälpen iaf.
Användarvisningsbild
Dowser
Hemautomation - det är mer än en hobby
Inlägg: 811
Blev medlem: 10 mar 2007, 09:44
Ort: Trosa
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Dowser »

Logiken är precis densamma.
Fritt ur huvudet och otestat borde bash-versionen bli såhär:

if [ "$sensor" = "" ]
then
sensor="NAN"
fi
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av CirruZZ »

Dowser skrev:Logiken är precis densamma.
Fritt ur huvudet och otestat borde bash-versionen bli såhär:

if [ "$sensor" = "" ]
then
sensor="NAN"
fi
Works like a charm! :wink:
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av HUSKii »

Instämmer med föregående talare!

Tackar för den kodsnutten Dowser!
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av HUSKii »

Jag håller på att "förbättra" "inte stopppa in felaktig data i rrd" script. hittils har jag detta:

Kod: Markera allt

#!/bin/bash

OutsideTemp=`cat /mnt/1wire/10.3AD85F010800/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`

if [ "$OutsideTemp" == "" ]
then
OutsideTemp="NAN"
elif [ "$OutsideTemp" == "85" ]
then
OutsideTemp="NAN"
elif [ "$OutsideTemp" == "00" ]
then
OutsideTemp="NAN"
else
echo $OutsideTemp
fi
Men hur ska jag skriva t.ex om den inte får kontakt med en sensor?
Som det är nu så kommer det upp:

Kod: Markera allt

cat: /mnt/1wire/10.2AD85F010800/temperature: No such file or directory
Om jag ändrar 3:an i ID numret till en 2:a.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Inte stoppa in felaktig data i RRD-databas?

Inlägg av Niklas »

HUSKii skrev:Jag håller på att "förbättra" "inte stopppa in felaktig data i rrd" script. hittils har jag detta:

Kod: Markera allt

#!/bin/bash

OutsideTemp=`cat /mnt/1wire/10.3AD85F010800/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`

if [ "$OutsideTemp" == "" ]
then
OutsideTemp="NAN"
elif [ "$OutsideTemp" == "85" ]
then
OutsideTemp="NAN"
elif [ "$OutsideTemp" == "00" ]
then
OutsideTemp="NAN"
else
echo $OutsideTemp
fi
Men hur ska jag skriva t.ex om den inte får kontakt med en sensor?
Som det är nu så kommer det upp:

Kod: Markera allt

cat: /mnt/1wire/10.2AD85F010800/temperature: No such file or directory
Om jag ändrar 3:an i ID numret till en 2:a.
När den inte kan läsa så blir $OutsideTemp = ingenting så då fungerar $OutsideTemp==""
Skriv svar