Sida 1 av 1

Flera 1wire sensorer på samma graf

Postat: 24 feb 2015, 17:34
av 522167
Hej.

Jag har nu lyckats via guiden på m.nu att göra en graf för temperatur. Jag har dock två sensorer en för Tillopp till radiatorer och en för retur. Hur ska jag få båda att hamna på samma graf? alltså två kurvor på samma bild...

Jag har en Raspberry Pi

Re: Flera 1wire sensorer på samma graf

Postat: 25 feb 2015, 09:17
av mrxswe

Re: Flera 1wire sensorer på samma graf

Postat: 25 feb 2015, 22:04
av 522167
hrmm kikade igenom den tråden och hittade lite matnyttigt... men den andra graphen ritas inte ut...

när jag kör get_temp.sh så får jag fram båda temperaturerna utan problem... så problemet måste ligga i Graph_temp.pl...men vad?

Så här ser min graph_temp.pl ut

Kod: Markera allt

#!/usr/bin/perl

use RRDs;

my $cur_time = time();
my $start_time = $cur_time - 86400;     # set end time to 24 hours ago

RRDs::graph "/var/www/graph_temp.png",
                        "--start= $start_time",
                        "--end= $cur_time",
                        "--title= Temp ute",
                        "--height= 300",
                        "--width= 500",
                        "--vertical-label= °Celsius",
                "DEF:OutsideTemp=/home/pi/rrddata/outside_temp.rrd:outsidetemp:AVERAGE:",
                        "COMMENT:\t\t\t\tNu     Medel    Max    Min\\n",
                        "HRULE:0#FF0000",
                "LINE1:OutsideTemp#FF0000:Ute\t\t\t",
                        "GPRINT:OutsideTemp:LAST:%6.1lf",
                        "GPRINT:OutsideTemp:AVERAGE:%6.1lf",
                        "GPRINT:OutsideTemp:MAX:%6.1lf",
                        "GPRINT:OutsideTemp:MIN:%6.1lf\\n",

               "DEF:insideTemp=/home/pi/rrddata/inside_temp.rrd:insidetemp:AVERAGE:",
               "LINE3:insideTemp#0000FF:Inne\t\t",
                        "GPRINT:insideTemp:LAST:%6.1lf",
                        "GPRINT:insideTemp:AVERAGE:%6.1lf",
                        "GPRINT:insideTemp:MAX:%6.1lf",
                        "GPRINT:insideTemp:MIN:%6.1lf\\n";

my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}

print "Done!\n"
och så här der grafen ut:

Re: Flera 1wire sensorer på samma graf

Postat: 26 feb 2015, 05:37
av mrxswe
Prova så här

Kod: Markera allt

#!/usr/bin/perl

use RRDs;

my $cur_time = time();
my $start_time = $cur_time - 86400;     # set end time to 24 hours ago

RRDs::graph "/var/www/graph_temp.png",
                        "--start= $start_time",
                        "--end= $cur_time",
                        "--title= Temp ute",
                        "--height= 300",
                        "--width= 500",
                        "--vertical-label= °Celsius",
                "DEF:OutsideTemp=/home/pi/rrddata/outside_temp.rrd:outsidetemp:AVERAGE:",
                "DEF:insideTemp=/home/pi/rrddata/inside_temp.rrd:insidetemp:AVERAGE:",       
                  "COMMENT:\t\t\t\tNu     Medel    Max    Min\\n",
                        "HRULE:0#FF0000",
                "LINE1:OutsideTemp#FF0000:Ute\t\t\t",
                        "GPRINT:OutsideTemp:LAST:%6.1lf",
                        "GPRINT:OutsideTemp:AVERAGE:%6.1lf",
                        "GPRINT:OutsideTemp:MAX:%6.1lf",
                        "GPRINT:OutsideTemp:MIN:%6.1,
                 "LINE2:insideTemp#0000FF:Inne\t\t",
                        "GPRINT:insideTemp:LAST:%6.1lf",
                        "GPRINT:insideTemp:AVERAGE:%6.1lf",
                        "GPRINT:insideTemp:MAX:%6.1lf",
                        "GPRINT:insideTemp:MIN:%6.1lf\\n";

my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}

print "Done!\n"

Re: Flera 1wire sensorer på samma graf

Postat: 26 feb 2015, 10:50
av 522167
Nä den verkar inte kunna läsa min inside_temp.rrd fil.

så här ser min min create_rrd.sh ut

Kod: Markera allt

#!/bin/bash
# Script to create rrd-file 

# 24h with 2,5 min resolution
# 7d with 5 min resolution
# 1y with 10 min resolution
# 20y with 1h resolution

directory="/home/pi/rrddata/"
filename1="outside_temp.rrd"
filename2="inside_temp.rrd"

# Check i file already exists
if [ ! -f "$directory$filename" ]
then
        # File doesn't exist, create new rrd-file
        echo "Creating RRDtool DB for outside temp sensor"
        rrdtool create $directory$filename1 \
                 --step 150 \
                 DS:outsidetemp:GAUGE:300:-50:60 \
                 RRA:AVERAGE:0.5:1:576 \
                 RRA:AVERAGE:0.5:2:2016 \
                 RRA:AVERAGE:0.5:4:52560 \
                 RRA:AVERAGE:0.5:24:175200 \
                 RRA:MAX:0.5:1:5760 \
                 RRA:MAX:0.5:2:2016 \
                 RRA:MAX:0.5:4:52560 \
                 RRA:MAX:0.5:24:175200 \
                 RRA:MIN:0.5:1:5760 \
                 RRA:MIN:0.5:2:2016 \
                 RRA:MIN:0.5:4:52560 \
                 RRA:MIN:0.5:24:175200
        echo "Done!"

echo "Creating RRDtool DB for inside temp sensor"
        rrdtool create $directory$filename2 \
                 --step 150 \
                 DS:insideTemp:GAUGE:300:-50:60 \
                 RRA:AVERAGE:0.5:1:576 \
                 RRA:AVERAGE:0.5:2:2016 \
                 RRA:AVERAGE:0.5:4:52560 \
                 RRA:AVERAGE:0.5:24:175200 \
                 RRA:MAX:0.5:1:5760 \
                 RRA:MAX:0.5:2:2016 \
                 RRA:MAX:0.5:4:52560 \
                 RRA:MAX:0.5:24:175200 \
                 RRA:MIN:0.5:1:5760 \
                 RRA:MIN:0.5:2:2016 \
                 RRA:MIN:0.5:4:52560 \
                 RRA:MIN:0.5:24:175200
        echo "Done!"


else
        echo $directory$filename" already exists, delete it first."
fi

och så här ser min get_temp.sh ut:

Kod: Markera allt

#!/bin/bash

OutsideTempSensor="28.434695040000"
insideTempSensor="28.476395040000"
RRDDataDirectory="/home/pi/rrddata/"
RRDDataFile1="outside_temp.rrd"
RRDDataFile2="inside_temp.rrd"

# Get temps form OWFS
OutsideTemp=`cat /mnt/1wire/$OutsideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
insideTemp=`cat /mnt/1wire/$insideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`


#Update RRD database
rrdtool update $RRDDataDirectory$RRDDataFile1 N:$OutsideTemp
rrdtool update $RRDDataDirectory$RRDDataFile2 N:$insideTemp

echo $OutsideTemp
echo $insideTemp
outside_temp.rrd verkar den kunna läsa...vet inte varför det är så

Re: Flera 1wire sensorer på samma graf

Postat: 26 feb 2015, 18:41
av motoz
Du skapar ds för insideTemp med stort T, sedan då du läser av databasen i så har du litet t.

echo "Creating RRDtool DB for inside temp sensor"
rrdtool create $directory$filename2 \
--step 150 \
DS:insideTemp:GAUGE:300:-50:60 \
RRA:AVERAGE:0.5:1:576 \

vs.

"DEF:insideTemp=/home/pi/rrddata/inside_temp.rrd:insidetemp:AVERAGE:",

Det hänger på detaljerna...

Re: Flera 1wire sensorer på samma graf

Postat: 26 feb 2015, 20:48
av 522167
Ok det funkar nu...detaljer, detaljer...glömde bort att linux är petig på stora och små bokstäver