#!/usr/bin/perl use strict; use warnings; use CGI; use LWP::UserAgent; use HTML::Template::Compiled; my $DOCUMENT_ROOT = $ENV{DOCUMENT_ROOT} || '.'; # für Fehlermeldumngen my $ERROR = ''; my $cgi = CGI->new; my @data; #### Wetterstation auslesen # my $lwp = LWP::UserAgent->new(); # hole aktuelle Tempertaturdaten von einer Wetterstation ab # Daten werden als Zeilen gesendet, in der Tab-sesparierte Daten vorliegen # Beispiel: # 1200 29.7 # 1300 31.2 # etc. # Über das HTTP-Protokoll abfragen my $result = $lwp->get('http://192.168.1.111/weather?date=today'); # falls die Abfrage fehlschlägt if ( not $result->is_success ) { $ERROR = 'Wetterstation nicht in Betrieb!' } # Abfrage war OK, Wetterstation hat was gesendet (hoffentlich die Daten ;) ) else { # Datenstrom einlesen my $rawstream = $result->decoded_content; # Datenstrom in einzelne Zeilen auftrennen und in Array speichern my @rawdata = split "\n", $rawstream; # Daten nun in eigene Arraystruktur (für Template später) speichern @data = map { [ ( split "\t" ) # Tabeseparierte Zeile aufsplitten und die Liste ] # in anonymes Array speichern } @rawdata; } ### Variablen für Datumsinhalte # my @MONATE = qw(- Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Dez); my @localtime = localtime(); my $YEAR = $localtime[5] + 1900; my $MONTH = $MONATE[ $localtime[4] + 1 ]; my $NOW = "$localtime[3].$MONTH.$YEAR $localtime[2]:$localtime[1].$localtime[0]"; ### Erzeuge ein HHTML::Template::Compiled-Objekt # my $htc = HTML::Template::Compiled->new( filename => "$DOCUMENT_ROOT/index.html", tagstyle => [qw(-asp -comment +php -tt)], ); $htc->param( TITLE => 'Wetterstation 2', TABELLE1 => \@data, NOW => $NOW, MONTH => $MONTH, YEAR => $YEAR, ); print $cgi->header( -type => 'text/html' ), $htc->output; 1;