• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af bortex | 07.11.2009 20:52

perlscript: debian, digitemp, rrdtool

Programmering
Mit perlscript :


#!/usr/bin/perl
#
# copyright Per Hansen 2009
#
#
# rrd_tempsensor.pl

use lib qw(/opt/rrdtool-1.4.1/lib/perl);
use RRDs;

# sti til rrdtool databases
my $rrd = '/var/lib/rrd';
# sti til færdige grafer
my $img = '/var/www/rrdtool';
# sti til digitemp
my $digi = '/usr/bin';

# hvis rrd-database ikke findes, laves den her
if (! -e "$rrd/temperature.rrd")
{
print "creating rrd database for sensors ...\n";
RRDs::create "$rrd/temperature.rrd",
"-s 300",
"DS:out:GAUGE:600:-50:50",
"DS:in:GAUGE:600:-50:50",
"RRA:AVERAGE:0.5:1:600",
"RRA:AVERAGE:0.5:6:700",
"RRA:AVERAGE:0.5:24:775",
"RRA:AVERAGE:0.5:288:797",
"RRA:MIN:0.5:1:600",
"RRA:MIN:0.5:6:700",
"RRA:MIN:0.5:24:775",
"RRA:MIN:0.5:288:797",
"RRA:MAX:0.5:1:600",
"RRA:MAX:0.5:6:700",
"RRA:MAX:0.5:24:775",
"RRA:MAX:0.5:288:797" ;
}
if ($ERROR = RRDs::error) { print "$0: failed to create temperature database file: $ERROR\n"; }

# aflæs den udendørs-sensor
my $read_out = `$digi/digitemp -t 0 -q -c /etc/digitemp.conf -o%C`;

# aflæs kælder-sensor
my $read_in = `$digi/digitemp -t 1 -q -c /etc/digitemp.conf -o%C`;

# fjerner eol-karaktere i den læste værdi
chomp($read_out);
chomp($read_in);

# check for fejl i temp-sensorerne
if (int $read_out eq 85)
{
print "failed to read value from outside sensor\n";
$read_out = "U";
}
if (int $read_in eq 85)
{
print "failed to read value from basement sensor\n";
$read_in = "U";
}

# indsæt værdier i rrd
RRDs::update "$rrd/temperature.rrd",
"-t", "out", "N:$read_out";
"-t", "in", "N:$read_in";

if ($ERROR = RRDs::error) { print "$0: failed to insert data into rrd: $ERROR\n"; }

#print"out $read_out";
#print"in $read_in";


# generer graf
RRDs::graph "$img/temp-day.png",
"-n", "DEFAULT:0:/usr/share/fonts/truetype/msttcorefonts/arial.ttf",
"-c", "CANVAS#FFFFFF",
"-c", "GRID#BBBBBB",
"-c", "MGRID#BBBBBB",
"-t Temperaturer i Auning, Danmark °C",
"--lazy",
"-a", "PNG",
"-h", "80", "-w", "550",
"-E",
"DEF:outside=$rrd/temperature.rrd:out:AVERAGE",
"DEF:basement=$rrd/temperature.rrd:in:AVERAGE",
"COMMENT:\\c",
"COMMENT: MAX MIN AVERAGE CURRENT\\c",
"LINE2:outside#FF0000:udendørs\\t",
"GPRINT:outside:MAX:%4.2lf °C\t",
"GPRINT:outside:MIN:%4.2lf °C\t",
"GPRINT:outside:AVERAGE:%4.2lf °C\t",
"GPRINT:outside:LAST:%4.2lf °C\\c",
"LINE2:basement#3333CC:kælder\\t",
"GPRINT:basement:MAX:%6.2lf °C\t",
"GPRINT:basement:MIN:%6.2lf °C\t",
"GPRINT:basement:AVERAGE:%6.2lf °C\t",
"GPRINT:basement:LAST:%6.2lf °C\\c",
"COMMENT:\\c",
"COMMENT:Copyright Per Hansen\\c";

if ($ERROR = RRDs::error) { print "$0: unable to generate sensor $_[0] $_[1] graph: $ERROR\n"; }


læser to værdier via digitemp, hvorefter rrdtool genere en graf. Mit problem er dog at enten viser grafen to ens værdier eller kun den ene af dem.
Jeg har førsøgt at ændre mange ting dog uden held. Enten bliver resultatet det ene eller det andet. Det bliver aldrig korrekt.

Er der nogen som kan finde fejlen?

Det skal lige siges at jeg normalt ikke er en koder, hvilket sikkert også kan ses ud fra mit script. Hvis scriptet kan skrives om, men stadig udføre det samme er i velkommne til at gøre det.
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer1

# 1

15 år 12 måneder siden

Permalink

Indsendt af jospan den 8. november 2009 kl. 23:40

Permalink

Perl-hjælp

Håber der er nogle, der kan hjælpe dig herinde - ellers burde der være muligheder her:

http://www.unix.com/shell-programming-scripting/

og her:

http://www.perlmonks.com/
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Internettet er ved at dø. Vi kan stadig stoppe det 0
Tid til at lære noget igen 0
TPM 2 0
BigLinux 0
Amerikansk tastatur på dansk tastatur 0

Seneste aktivitet

Nørder søger nørder: Første Linux-brugergruppe på Mors 2
Østrigsk ministerium smider Microsoft ud til fordel for Nextcloud 1
Brug carburetor til at forblive usynlig online 8
Sådan konfigurerer du flatpaks' flathub til verified only 9
Plasma tapet-skifter 3
How to upgrade to LMDE 7 4
Virksomheder og enheder der kører på Linux 11
NordVPN har udgivet kildekoden til sin grafiske brugergrænseflade 2
Flere og flere bruger Brave browseren 1
LibreOffice og Collabora: Hvorfor er de ikke i skolerne i stedet for Word og Google Docs? 11
Firewall igen 5
Værdien ved open source 2
Sailfish på android telefon 1
Ladybird Browser 7
Satiriske ordspil 3
Kan ikke boote på installation 26
Tilføj signatur til Evolution mail 2
LUKS kryptering - Er der andre der bruger det 15
Dansk distro til software udviklere 2
Linux Debian 5

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !