Sida 1 av 1

rrdtool 1 wire 2 tempgivare

Postat: 08 aug 2017, 18:25
av pepspersson
Skulle vilja ha 2 st tempgivare åt olika väderstreck och att den visar lägsta temperatur på en graph .
Går det ?

Re: rrdtool 1 wire 2 tempgivare

Postat: 10 aug 2017, 22:48
av Plutonium
Absolut går det. Det enklaste sättet är att behandla datan innan rrdtool tar vid.

Så här har jag gjort. Jag har en php fil som körs av cron varje minut. (Nu framgick det inte om du använder dig av linux mots. Men jag antar detta.

Kod: Markera allt

<?php

$north = exec("wget -O - -q http://10.0.20.11/utenorr.txt");
$east = exec("wget -O - -q http://10.0.20.11/uteost.txt");

if ($north < $east){
        $lowest = "North";
        $temp = $north;
}
else{
        $lowest = "East";
        $temp = $east;
}

echo "$lowest har lgst temp: $temp grader";

exec("echo " . $temp . " > /home/essunga/public_html/wwwroot/temperature_lowest.txt");
?>
Sedan låter jag rrdtool läsa av filen temperature_lowest.txt så ritar den en graf av det. Är du i behov av ett kodexempel för rrdtool också?

Re: rrdtool 1 wire 2 tempgivare

Postat: 24 aug 2017, 11:26
av pepspersson
Gärna det.

Re: rrdtool 1 wire 2 tempgivare

Postat: 24 aug 2017, 20:02
av Plutonium
Så här har jag gjort med flera rrd-databaser. Ganska enkel kod så jag tror du luskar ut i strukturen nedan.

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
use HTTP::Date;
my ($date, $time) = split(" ", HTTP::Date::time2iso());
my ($hour, $min) = split(":", $time);

RRDs::graph "/home/essunga/public_html/wwwroot/onewire/dualindoor_temp_dag.png",
         "--start= $start_time",
         "--end= $cur_time",
         "--title=Inside the house",
         "--lazy",
         "-h", "160", "-w", "550",
         "-a", "PNG",
         "-v Celsius",
         "--slope-mode",
         "--watermark=  http://essunga.org | Graph generated\: $date kl\: $hour\:$min",
         "DEF:livingroom=/home/plutonium/scripts/RRD_DB/owfs-livingroom_temperature.rrd:temp:AVERAGE",
         "DEF:bedroom=/home/plutonium/scripts/RRD_DB/masterbedroom_temp.rrd:temp:AVERAGE",
         "DEF:agust=/home/plutonium/scripts/RRD_DB/agust_temp.rrd:temp:AVERAGE",
         "DEF:jonathan=/home/plutonium/scripts/RRD_DB/jonathan_temp.rrd:temp:AVERAGE",
         "AREA:livingroom#ccffcc",
         "LINE2:livingroom#009900:Living room     ",
         "GPRINT:livingroom:MIN: Min\\:%6.1lf",
         "GPRINT:livingroom:MAX: Max\\:%6.1lf",
         "GPRINT:livingroom:AVERAGE:Avg\\:%6.1lf",
         "GPRINT:livingroom:LAST:Now\\:%6.1lf degrees C\\n",
         "LINE2:bedroom#46E4F9:Master bedroom  ",
         "GPRINT:bedroom:MIN: Min\\:%6.1lf",
         "GPRINT:bedroom:MAX: Max\\:%6.1lf",
         "GPRINT:bedroom:AVERAGE:Avg\\:%6.1lf",
         "GPRINT:bedroom:LAST:Now\\:%6.1lf degrees C\\n",
         "LINE2:agust#191970:Agust bedroom  ",
         "GPRINT:agust:MIN:  Min\\:%6.1lf",
         "GPRINT:agust:MAX: Max\\:%6.1lf",
         "GPRINT:agust:AVERAGE:Avg\\:%6.1lf",
         "GPRINT:agust:LAST:Now\\:%6.1lf degrees C\\n",
         "LINE2:jonathan#CD5C5C:Jonathans bedroom",
         "GPRINT:jonathan:MIN:Min\\:%6.1lf",
         "GPRINT:jonathan:MAX: Max\\:%6.1lf",
         "GPRINT:jonathan:AVERAGE:Avg\\:%6.1lf",
         "GPRINT:jonathan:LAST:Now\\:%6.1lf degrees C\\n";


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

print "Done!\n"


Re: rrdtool 1 wire 2 tempgivare

Postat: 25 aug 2017, 22:04
av pepspersson
Tack så mycket ,nu ska jag testa :D