Plott av vind og temperaturer

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.

2016-07-18_23-28-36

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]Untitled

Action for RRDTOOL

———–

Et lite Perl-hack i sammenheng med en lighttpd webserver generer så grafen on-the-fly når man åpner websiden 🙂temperature

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:

tiarora

6 kommentarer til “Plott av vind og temperaturer”

  1. 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

  2. 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
      my $rrd=’/< >/temperature.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;

  3. 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

  4. 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 🙂

Det er stengt for kommentarer.