Total noob på både 1-wire, linux osv till för någon vecka sedan då man började hänga här
Jag loggar två temperaturer , Inne och ute, har fungerat perfekt flera dagar men nu när det blir kallare ute så märker jag att jag får "läsfel" på utegivaren, har testat att tagit in den och då fungerar den som den skall, hänger jag ut den igen så fungerar det ända tills givaren blir kallare än +1 grad, då får jag ett fel, jag får iofs ett värde också men det loggas inte i databasen, Jag klistrar in lite hur det ser ut nedan så kanske någon kan berätta vad jag gör fel...
Det enda jag kan tänka mig är att den den kanske behöver mer tid på sig att läsa ut temperaturen när sensorn blir kallare/har ett lägre värde, men kan det verkligen vara så? Och vad göra i så fall?
Jag börjar med att köra följande:
modprobe fuse
/opt/owfs/bin/owfs -u --usb_regulartime /var/thh
Jag har även testat det ovan UTAN --usb_regulartime, samma fel då!
rrdtempsensor.pl
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/local/rrdtool-1.2.12/lib/perl);
use RRDs;
# define location of rrdtool databases
my $rrd = '/home/hardinth/RRD_DB';
# define location of images
#my $img = '/home/hardinth/public_html/temps/';
my $img = '/home/hardinth/Desktop/';
# process data for each devices (add/delete as required)
&ProcessSensor("10.87A492010800", "Temperatur Ute");
&ProcessSensor("10.E2BA94010800", "Temperatur Inne Kitchen");
#&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 . /var/thh/uncached/$_[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 eq 85)
{
print "failed to read value from sensor $_[0]\n";
}
elsif (int $temp eq 00)
{
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 plutonium.homelinux.com",
"--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"; }
}
Kod: Markera allt
sensor 10.87A492010800: 1.1875 degrees C
sensor 10.E2BA94010800: 20.625 degrees C
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 1.0625 degrees C
sensor 10.E2BA94010800: 20.75 degrees C
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 1 degrees C
sensor 10.E2BA94010800: 20.75 degrees C
från och med här så börjar det gå fel...
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 0.9375 degrees C
failed to read value from sensor 10.87A492010800
sensor 10.E2BA94010800: 20.75 degrees C
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 0.75 degrees C
failed to read value from sensor 10.87A492010800
sensor 10.E2BA94010800: 20.75 degrees C
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 0.125 degrees C
failed to read value from sensor 10.87A492010800
sensor 10.E2BA94010800: 20.625 degrees C
root@hardinth-desktop:/home/hardinth# ./rrdtempsensor.pl
sensor 10.87A492010800: 0 degrees C
failed to read value from sensor 10.87A492010800
sensor 10.E2BA94010800: 20.6875 degrees C
root@hardinth-desktop:/home/hardinth#
Thomas