Koblet opp noen 1-wire sensorer via en DS9490R – USB 1-Wire Adapter og vipps dukka de opp i OpenPlotter.
Tildelte navn og måleenhet, og dermed kommer de inn i NMEA-strømmen i OpenPlotter og kan brukes i programmet.
Jeg hadde allerede en RRDTOOL-installasjon – laget en base for å håndtere temperaturer:
rrdtool create temperature.rrd -s 60 \
DS:Inside:GAUGE:300:-20:40 \
DS:Outside:GAUGE:300:-30:40 \
DS:Sea:GAUGE:300:-10:40 \
DS:Engine:GAUGE:300:-20:100 \
DS:Exhaust:GAUGE:300:-20:100 \
RRA:AVERAGE:0.5:1:3600 \
RRA:MIN:0.5:12:2400 \
RRA:MAX:0.5:12:2400 \
RRA:AVERAGE:0.5:12:2400
La inn en trigger som alltid blir kjørt når OpenPlotter starter ved boot, og en action som oppdaterer basen med nye data hvert minutt:
rrdtool update /home/pi/Data/temperature.rrd -t Inside:Engine:Exhaust N:[INSIDE]:[ENGINE]:[EXHAUST]
———–
Et lite Perl-hack i sammenheng med en lighttpd webserver generer så grafen on-the-fly når man åpner websiden 🙂
En tilsvarende base for vind fra toppen av masta og litt scriptmagi gir en slik graf, som viser relativ vind og båtfart, over ønsket periode:
Hej!
Intressant lösning du har för plottning av temperaturer, skulle vilja få till något liknande i min båt. Är det möjligt att få en kopia av ditt skript (temperature.pl)?
Mvh Otto
Hei Otto!
Såklart, det er i all hovedsak stjålet på nettet som vanlig, 🙂 men med litt småfiks fra min side.
Kopier i vei og slå deg løs.
mvh, Arne
#!/usr/bin/perl
#
# CGI script to create image using RRD graph
use CGI qw(:all);
use RRDs;
use strict;
# path to database>/temperature.rrd’;
my $rrd=’/<
# size
my $width=700;
my $height=250;
my $currentyear = (localtime)[5] + 1900;
my $copyright = $currentyear .= » © http://www.tiarora.no«;
# read and check query params
my $query=new CGI;
my $interval=$query->param(‘interval’);
$interval=’day’ unless $interval =~ /hour|day|week|month|year/;
# write image into temp file
my $tmpfile=»/tmp/graphx_$$.png»;
my @opts=(«-v», «°C»,
«-t Temperature/$interval»,
«-w», $width,
«-h», $height,
«-s», «now – 1 $interval»,
«-e», «now»,
«–slope-mode»,
«-a», «PNG»,
«-W»,$copyright,
«-D»);
RRDs::graph($tmpfile,
@opts,
«DEF:Inside=$rrd:Inside:AVERAGE»,
«LINE2:Inside#E1E400:Inside»,
«VDEF:Insidelast=Inside,LAST»,
«GPRINT:Insidelast:%.1lf°C»,
«DEF:Engine=$rrd:Engine:AVERAGE»,
«LINE2:Engine#00FF00:Engine»,
«VDEF:Enginelast=Engine,LAST»,
«GPRINT:Enginelast:%.1lf°C»,
«DEF:Exhaust=$rrd:Exhaust:AVERAGE»,
«LINE2:Exhaust#0000FF:Exhaust»,
«VDEF:Exhaustlast=Exhaust,LAST»,
«GPRINT:Exhaustlast:%.1lf°C»
);
# check error
my $err=RRDs::error;
die «$err\n» if $err;
# feed tmpfile to stdout
;
open(IMG, $tmpfile) or die «can’t open $tmpfile\n»;
print header(-type=>’image/png’, -expires=>’+1m’);
print
close IMG;
unlink $tmpfile;
Toppen, tack!
Skall testa så snart jag får min DS9490R – USB 1-Wire Adapter 🙂
Hej igen!
Sitter och försöker få igång ditt script, men det blir som så ofta något galet med copy&paste så det går inte att exekvera. Skulle du kunna lägga upp det som en nedladdningsbar fil, eller eventuellt maila mig det?
Mvh Otto
Hei!
Lastet ned alle scriptene og html’en fra PI’n i båten, de ligger nå her under http://www.tiarora.no/RRD-stuff/
Høyreklikk og last ned, burde funke.
Merk at Perl-scriptene må gjøres kjørbare på Pi’en, (chmod +x) og naturligvis må webserveren din håndtere .pl.
mvh, Arne 🙂
Japp, nu funkar det. Tack!