Zobelei-Homepage

Zähler

Das Zobel'sche Netz

Familie Theologie Computer Freizeiten Wetter Info

Temperatur in Dohna: Stand: 05.Dec 14
Außen:  Ausgefallen °C -  Eiskalt  ( Uhr)
Innen:  Ausgefallen °C -  Eiskalt  ( Uhr)
ServerCPU:  29.38 °C -  Sehr warm  (17:53:46 Uhr)
 

 

Bitte wählen:

Überblick

Wetter

Werte

Graphen

Technik

Technik

Software

temptag.pl

Skript temptag.php

Dieses Skript hat folgende Aufgaben:

  • Erstellen der 2-Tages-Übersicht
  • Hochladen aller Dateien auf den Server im www

#!/usr/bin/perl -w
# -*- Perl -*-
# V 1.2
# Skript über 2 Stunden, mit automatischer Randbegrenzung
#
use GD;
use Time::Local;
use Net::FTP;

# Grundeinstellungen
# ******************

# Welcher Zeitrahmen?
$hours = 48;

# Größe des Graphens
$xmax=1000;
$ymax=500;

# Wohin das Bild 
$ablage = "/www/htdocs/w0127972/zobelei.de/temper/temptag.gif";
# Wohin das Wetterbild, wird auch hochgeladen
$ablage1 = "/www/htdocs/w0127972/zobelei.de/temper/klimatag.gif";
# 2. Datei zum Hochladen...
$ablage2 = "/www/htdocs/w0127972/zobelei.de/temper/aktuell.inc";

# Werte, die außerhalb dieses Wertes liegen, werden nicht berücksichtigt
# (Abstand zum vorherigen Wert)
$maxtempsprung = 30;

# Entsprechend der Logdatei (via Digitemp erstellt, mit Jahresangabe)
$samples_per_hour = 60;

# Ränder - sollten so bleiben
$hmargin = 40;
$vmargin = 50;

# Monate zum Umrechnen
my %monat       = qw{Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5
                     Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11};

# Anzahl der Dateneinträge in der Graphik
$samples =  $hours * $samples_per_hour;

# Startzeit im Linux-Timeformat
my ($d, $minute, $hour, $day, $month,
    $year, $d, $d, $d) = localtime(time());
$ssek = timelocal(0, 0, 0, $day, $month, $year);
$ssek = $ssek - (24*3600);

# Datei einlesen
open(DOTTEMP, ";
close(DOTTEMP);

# Max- und Minimalwerte bestimmen, um die Dimension der Graphik festzulegen.

# Randwerte zurücksetzen for ($zaehler=0 ; $zaehler < 14 ; $zaehler++) { $lastx[$zaehler] = $hmargin; $lasty[$zaehler] = 0; $max[$zaehler] = -50; $min[$zaehler] = 100; $maxc[$zaehler] = 100; $minc[$zaehler] = -50; $summe[$zaehler] = 0; $anz[$zaehler] = 0; }; # Ränder finden: Max, Min, Letzte Stunde und Minute $tag = 0; $aktday = -1; foreach $zeile (@dottemp) { ($year,$month,$day,$time,$d1,$sensor,$d1,$centigrade,$fahrenheight) = split(" ", $zeile, 9); ($hour,$minute,$sec) = split(":", $time); if ($aktday < 0) { $aktmonth = $monat{$month} +1; $label = ""; if ($aktmonth<10) {$label = "0"}; $starttag = "$day.$label$aktmonth.20$year"; $aktday = $day; }; if ($aktday != $day) { $tag=7; $aktday = $day; }; # Ausschluß von fehlerhaften Werten if ($centigrade ne '85.00' && $centigrade > $minc[$sensor] && $centigrade < $maxc[$sensor]) { $sensor2 = $sensor + $tag; if ($centigrade > $max[$sensor2]) { $max[$sensor2] = $centigrade; if ($anz[$sensor2]<1) {$maxt[$sensor2] = "Start"} else {$maxt[$sensor2] = $time}; }; if ($min[$sensor2] > $centigrade) { $min[$sensor2] = $centigrade; if ($anz[$sensor2]<1) {$mint[$sensor2] = "Start"} else {$mint[$sensor2] = $time}; }; $summe[$sensor2] = $summe[$sensor2]+$centigrade; $anz[$sensor2] = $anz[$sensor2]+1; $minc[$sensor] = $centigrade-$maxtempsprung; $maxc[$sensor] = $centigrade+$maxtempsprung; $time[$sensor2] = $time; } } # Gesamtwerte (Min/Max) suchen $max = -50; $min = 100; $aktmonth = $monat{$month} +1; $label = ""; if ($aktmonth<10) {$label = "0"}; $endtag = "$day.$label$aktmonth.20$year"; for ($zaehler=0 ; $zaehler < 14 ; $zaehler++) { if ( $max[$zaehler] > $max ) {$max = $max[$zaehler]}; if ( $min[$zaehler] < $min ) {$min = $min[$zaehler]}; if ( $mint[$zaehler] eq $time[$zaehler] ) {$mint[$zaehler] = "Ende" }; if ( $maxt[$zaehler] eq $time[$zaehler] ) {$maxt[$zaehler] = "Ende" }; }; # Bild 1: Alle Werte $tempmax = int(($max+10)/10)*10; $tempstart = int(($min-10)/10)*10; $dy = ($ymax/($tempmax-$tempstart)); $dx = ($xmax/$samples); # Bild 2: Nur Außentemperaturen $zaehler = 2; if ($max[2] < $max[9]) {$zaehler = 9}; $tempmax2 = int(($max[$zaehler]+10)/10)*10; $zaehler = 2; if ($min[2] > $min[9]) {$zaehler = 9}; $tempstart2 = int(($min[$zaehler]-10)/10)*10; $dy2 = ($ymax/($tempmax2-$tempstart2));

# Graphen Grundgerüst erstellen

# Temperatur in Graphkoordinaten umwandeln # Für Graph 1 sub ytransform { $temp = shift; return int($vmargin+(($tempmax-$temp)*$dy)); } # Für Graph 2 sub ytransform2 { $temp = shift; return int($vmargin+(($tempmax2-$temp)*$dy2)); } # Nun kann das Bild erstellt werden $width = $hmargin + ($samples * $dx) + $hmargin; $height = &ytransform($tempstart)+$vmargin*3; $height2 = &ytransform2($tempstart2)+$vmargin*3; $im = new GD::Image( $width, $height ); $im2 = new GD::Image( $width, $height2 ); # Farben festlegen ($white,$black,$gelb, $dbraun,$mbraun,$hbraun,$red,$hred,$green,$hgreen,$blue,$skyblue) = ( $im->colorAllocate(255, 255, 255), $im->colorAllocate(0, 0, 0), $im->colorAllocate(183, 183, 0), # braun: Klima $im->colorAllocate(192, 64, 0), $im->colorAllocate(255, 128, 0), $im->colorAllocate(255, 0, 0), # rot: Server $im->colorAllocate(236, 0, 255), $im->colorAllocate(165, 0, 179), # Grün: Client $im->colorAllocate(0,185,0), $im->colorAllocate(0,128,0), # Blau: Gitter $im->colorAllocate(0,255,255), $im->colorAllocate(100,100,255) ); # Farben festlegen Graph 2 - es werden nicht alle gebraucht, aber wer weiß... ($white2,$black2,$gelb2,$dbraun2,$mbraun2,$hbraun2,$red2,$hred2,$green2,$hgreen2,$blue2,$skyblue2) = ( $im2->colorAllocate(255, 255, 255), $im2->colorAllocate(0, 0, 0), $im2->colorAllocate(183, 183, 0), # braun: Klima $im2->colorAllocate(192, 64, 0), $im2->colorAllocate(255, 128, 0), $im2->colorAllocate(255, 0, 0), # rot: Server $im2->colorAllocate(236, 0, 255), $im2->colorAllocate(165, 0, 179), # Grün: Client $im2->colorAllocate(0,185,0), $im2->colorAllocate(0,128,0), # Blau: Gitter $im2->colorAllocate(0,255,255), $im2->colorAllocate(100,100,255) ); # Horizontale Linien für Temperaturhöhe sub hline { ($y,$color,$art) = @_; $yname = $y; if ($art eq 1) {$y = &ytransform($y);} else {$y = &ytransform2($y);} $ychar = $y-6; $numleft = 10; $lineleft = 26; $lineright = $width - 24; $numright = $width - 20; if ($art eq 1) { $im->string(gdSmallFont,$numleft,$ychar,$yname,$color); $im->line($lineleft,$y,$lineright,$y,$color); $im->string(gdSmallFont,$numright,$ychar,$yname,$color); } else { $im2->string(gdSmallFont,$numleft,$ychar,$yname,$color); $im2->line($lineleft,$y,$lineright,$y,$color); $im2->string(gdSmallFont,$numright,$ychar,$yname,$color); } } # Temperaturlinien bei Bild 1 $stepw = int(($tempmax-$tempstart)/$ymax*50); if ($stepw < 2 ) {$stepw = 1} elsif ($stepw < 5 ) {$stepw = 2} elsif ($stepw < 10) {$stepw = 5} else {$stepw = 10}; for ($t=$tempstart; $t <= $tempmax; $t=$t+$stepw) { $color = $skyblue; if ($t eq 0) {$color = $blue}; &hline($t,$color,1); } # Temperaturlinien bei Bild 2 $stepw = int(($tempmax2-$tempstart2)/$ymax*50); if ($stepw < 2 ) {$stepw = 1} elsif ($stepw < 5 ) {$stepw = 2} elsif ($stepw < 10) {$stepw = 5} else {$stepw = 10}; for ($t=$tempstart2; $t <= $tempmax2; $t=$t+$stepw) { $color = $skyblue2; if ($t eq 0) {$color = $blue2}; &hline($t,$color,2); } # Zeit in Graphenkoordinaten verwandeln sub xtransform { return int($hmargin + $dx * shift); } # Vertikale Linien malen sub vline { ($x,$label,$label2,$color,$color2) = @_; $x = &xtransform($x); $linetop = &ytransform($tempmax); $linebot = &ytransform($tempstart); $ychar = &ytransform($tempmax)-20; $linetop2 = &ytransform2($tempmax2); $linebot2 = &ytransform2($tempstart2); $ychar2 = &ytransform2($tempmax2)-20; if ($label ne '') { $im->string(gdSmallFont,$x-3,$ychar,$label,$color); $im2->string(gdSmallFont,$x-3,$ychar2,$label,$color2); }; if ($label2 ne "") { $im->string(gdLargeFont,$x-3,5,$label2,$color); $im2->string(gdLargeFont,$x-3,5,$label2,$color2); }; $im->line($x,$linetop,$x,$linebot,$color); $im2->line($x,$linetop2,$x,$linebot2,$color2); } # Vertikale Linien erstellen, gilt für beide Bilder # $flagge wechselt zwischen Tag 1 und Tag 2 $flagge = "0"; for ($t = 0 ; $t <= 48 ; $t++) { $color = $skyblue; $color2 = $skyblue2; $zeit = $t; if ($zeit > 23){$zeit-=24}; if ($zeit == 24){$zeit=0}; $angabe = "$zeit"; if ($zeit == 0) { $color = $blue; $color2 = $blue2; }; $angabe2 = ""; if ($zeit == 11) { $angabe2 = $endtag; if ($flagge eq "0") { $angabe2= $starttag; $flagge = "1"; } }; &vline(($t*60),$angabe,$angabe2,$color, $color2); } # Toleranzbreite für sichtbar ausgefallene Werte: 3 $toleranzbreite = int($dx*3); if ($toleranzbreite < 3) {$toleranzbreite = 3}; $tag = 0; $aktday = -1;

# Datenpunkte eintragen

foreach $zeile (@dottemp) { # Jeden Wert aus der Datei auflösen ($year,$month,$day,$time,$d1,$sensor,$d1,$centigrade,$fahrenheight) = split(" ", $zeile, 9); ($hour,$minute,$sec) = split(":", $time); # 0 - Raum # 1 - Fenster # 2 - Außen # 3 - Servergehäuse # 4 - Serverprozessor # 5 - Clientgehäuse # 6 - Clientprozessor $jsek = timelocal($sec, $minute, $hour, $day, $monat{$month}, $year); # Nur wenn der Wert innerhalb der Zeit liegt if ($jsek >= $ssek) { # Zeitpunkt festlegen $x = ($jsek-$ssek)/60; $x = int($x * $dx); $x = $x + $hmargin; # Tag aussuchen (für Min- und Maxwerte)? if ($aktday < 0) {$aktday = $day}; if ($aktday != $day) { $tag=7; $aktday = $day; }; $sensor2 = $sensor + $tag; # Und innerhalb Minimum und Maximum (sonst Ausreißer) if($centigrade >= $min[$sensor2] && $centigrade <= $max[$sensor2]) { if( $sensor eq '0' ) {$color = $hbraun}; if( $sensor eq '1' ) {$color = $mbraun}; if( $sensor eq '2' ) {$color = $dbraun}; if( $sensor eq '3' ) {$color = $red}; if( $sensor eq '4' ) {$color = $hred}; if( $sensor eq '5' ) {$color = $green}; if( $sensor eq '6' ) {$color = $hgreen}; $y = &ytransform($centigrade); $y2 = &ytransform2($centigrade); # Fehlte der vorherige Wert? $toleranz = $lastx[$sensor]+$toleranzbreite; if ($toleranz < $x) { $color = $gelb; }; # Linie malen - wenn es vorher einen Wert gab if ( $lasty[$sensor] gt 0 ) { $im->line(int($lastx[$sensor]),$lasty[$sensor],int($x),$y,$color); # Graph 2 kriegt nur die Wettertemperatur if( $sensor eq '2' ) { if( $sensor eq '2' ) {$color2 = $dbraun2}; if( $color eq $gelb ) {$color2 = $gelb2}; $im2->line(int($lastx[$sensor]),$lasty2[$sensor],int($x),$y2,$color2); }; }; # Letzten Wert merken $lasty2[$sensor] = $y2; $lasty[$sensor] = $y; $lastx[$sensor] = $x; $lastc[$sensor] = $centigrade; $lastt[$sensor] = $time; } } } # Erstellungsdatum hinzufügen $date = `date "+Erstellt um %H:%M Uhr am %a, %d. %b %Y"`; chop $date; # Ausgefallene Werte sinnvoll setzten sowie Durchschnitt berechnen for ($zaehler=0 ; $zaehler < 14 ; $zaehler++) { if ($anz[$zaehler] eq 0) { $min[$zaehler] = "---"; $max[$zaehler] = "---"; $mint[$zaehler] = ""; $maxt[$zaehler] = ""; $summe[$zaehler] = "Ausgefallen"; $lastc[$zaehler] = "---"; $lastt[$zaehler] = ""; } else { $summe[$zaehler] = int($summe[$zaehler]/$anz[$zaehler]*100)/100; }; }; # Wertangabe für dx $text = int(100/$dx)/100; $text = "$text Minuten pro Pixel"; # Textangaben erstellen $spalte1 = 100; $spalte2 = 350; $spalte3 = 500; $spalte4 = 750; $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+8,"Bezeichnung",$black); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+20,"Raumtemperatur",$hbraun); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+32,"Fenster",$mbraun); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+44,"Außentemperatur",$dbraun); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+62,"Servergehäuse",$red); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+74,"ServerCPU",$hred); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+92,"Clientgehäuse",$green); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+104,"ClientCPU",$hgreen); $im2->string(gdSmallFont,$hmargin,&ytransform2($tempstart2)+8,"Bezeichnung",$black2); $im2->string(gdSmallFont,$hmargin,&ytransform2($tempstart2)+20,"Außentemperatur",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+8,"Minimal ( $starttag / $endtag )",$black); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+20,"$min[0]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+32,"$min[1]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+44,"$min[2]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+62,"$min[3]",$red); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+74,"$min[4]",$hred); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+92,"$min[5]",$green); $im->string(gdSmallFont,$hmargin+$spalte1,&ytransform($tempstart)+104,"$min[6]",$hgreen); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+20,"($mint[0])",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+32,"($mint[1])",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+44,"($mint[2])",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+62,"($mint[3])",$red); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+74,"($mint[4])",$hred); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+92,"($mint[5])",$green); $im->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform($tempstart)+104,"($mint[6])",$hgreen); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+20,"/ $min[7]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+32,"/ $min[8]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+44,"/ $min[9]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+62,"/ $min[10]",$red); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+74,"/ $min[11]",$hred); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+92,"/ $min[12]",$green); $im->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform($tempstart)+104,"/ $min[13]",$hgreen); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+20,"($mint[7])",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+32,"($mint[8])",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+44,"($mint[9])",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+62,"($mint[10])",$red); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+74,"($mint[11])",$hred); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+92,"($mint[12])",$green); $im->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform($tempstart)+104,"($mint[13])",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte1,&ytransform2($tempstart2)+8,"Minimal ( $starttag / $endtag )",$black2); $im2->string(gdSmallFont,$hmargin+$spalte1,&ytransform2($tempstart2)+20,"$min[2]",$dbraun2); $im2->string(gdSmallFont,$hmargin+$spalte1+110,&ytransform2($tempstart2)+20,"/ $min[9]",$dbraun2); $im2->string(gdSmallFont,$hmargin+$spalte1+40,&ytransform2($tempstart2)+20,"($mint[2])",$dbraun2); $im2->string(gdSmallFont,$hmargin+$spalte1+160,&ytransform2($tempstart2)+20,"($mint[9])",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+8,"Durchschnitt",$black); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+20,"$summe[0]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+32,"$summe[1]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+44,"$summe[2]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+62,"$summe[3]",$red); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+74,"$summe[4]",$hred); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+92,"$summe[5]",$green); $im->string(gdSmallFont,$hmargin+$spalte2,&ytransform($tempstart)+104,"$summe[6]",$hgreen); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+20,"/ $summe[7]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+32,"/ $summe[8]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+44,"/ $summe[9]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+62,"/ $summe[10]",$red); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+74,"/ $summe[11]",$hred); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+92,"/ $summe[12]",$green); $im->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform($tempstart)+104,"/ $summe[13]",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte2,&ytransform2($tempstart2)+8,"Durchschnitt",$black2); $im2->string(gdSmallFont,$hmargin+$spalte2,&ytransform2($tempstart2)+20,"$summe[2]",$dbraun2); $im2->string(gdSmallFont,$hmargin+$spalte2+40,&ytransform2($tempstart2)+20,"/ $summe[9]",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+8,"Maximal ( $starttag / $endtag )",$black); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+20,"$max[0]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+32,"$max[1]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+44,"$max[2]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+62,"$max[3]",$red); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+74,"$max[4]",$hred); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+92,"$max[5]",$green); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+104,"$max[6]",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte3,&ytransform2($tempstart2)+8,"Maximal ( $starttag / $endtag )",$black2); $im2->string(gdSmallFont,$hmargin+$spalte3,&ytransform2($tempstart2)+20,"$max[2]",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+20,"/ $max[7]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+32,"/ $max[8]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+44,"/ $max[9]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+62,"/ $max[10]",$red); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+74,"/ $max[11]",$hred); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+92,"/ $max[12]",$green); $im->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform($tempstart)+104,"/ $max[13]",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte3+110,&ytransform2($tempstart2)+20,"/ $max[9]",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+20,"($maxt[0])",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+32,"($maxt[1])",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+44,"($maxt[2])",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+62,"($maxt[3])",$red); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+74,"($maxt[4])",$hred); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+92,"($maxt[5])",$green); $im->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform($tempstart)+104,"($maxt[6])",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte3+40,&ytransform2($tempstart2)+20,"($maxt[2])",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+20,"($maxt[7])",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+32,"($maxt[8])",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+44,"($maxt[9])",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+62,"($maxt[10])",$red); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+74,"($maxt[11])",$hred); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+92,"($maxt[12])",$green); $im->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform($tempstart)+104,"($maxt[13])",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte3+160,&ytransform2($tempstart2)+20,"($maxt[9])",$dbraun2); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+8,"Letzter Wert",$black); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+20,"$lastc[0]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+32,"$lastc[1]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+44,"$lastc[2]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+62,"$lastc[3]",$red); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+74,"$lastc[4]",$hred); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+92,"$lastc[5]",$green); $im->string(gdSmallFont,$hmargin+$spalte4,&ytransform($tempstart)+104,"$lastc[6]",$hgreen); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+20,"$lastt[0]",$hbraun); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+32,"$lastt[1]",$mbraun); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+44,"$lastt[2]",$dbraun); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+62,"$lastt[3]",$red); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+74,"$lastt[4]",$hred); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+92,"$lastt[5]",$green); $im->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform($tempstart)+104,"$lastt[6]",$hgreen); $im2->string(gdSmallFont,$hmargin+$spalte4,&ytransform2($tempstart2)+8,"Letzter Wert",$black2); $im2->string(gdSmallFont,$hmargin+$spalte4,&ytransform2($tempstart2)+20,"$lastc[2]",$dbraun2); $im2->string(gdSmallFont,$hmargin+$spalte4+40,&ytransform2($tempstart2)+20,"$lastt[2]",$dbraun2); $im->string(gdSmallFont,$hmargin,&ytransform($tempstart)+120,$date,$black); $im->string(gdSmallFont,$hmargin+$spalte3,&ytransform($tempstart)+120,"Gelbe Werte:",$gelb); $im->string(gdSmallFont,$hmargin+$spalte3+80,&ytransform($tempstart)+120,"Sensor ausgefallen",$black); $im->string(gdSmallFont,$hmargin+$spalte4+150,&ytransform($tempstart)+120,"$text",$black); $im2->string(gdSmallFont,$hmargin,&ytransform2($tempstart2)+120,$date,$black2); $im2->string(gdSmallFont,$hmargin+$spalte3,&ytransform2($tempstart2)+120,"Gelbe Werte:",$gelb2); $im2->string(gdSmallFont,$hmargin+$spalte3+80,&ytransform2($tempstart2)+120,"Sensor ausgefallen",$black2); # Graphiken abspeichern open( PLOT, ">$ablage"); print PLOT $im->gif; close(PLOT); open( PLOT, ">$ablage1"); print PLOT $im2->gif; close(PLOT); # und hochladen $ftp = Net::FTP->new("212.223.70.187"); $ftp->login("mein Benutzername","Mein Passwort"); $ftp->cwd("/temper"); $ftp->binary(); $ftp->put("$ablage2"); $ftp->put("$ablage1"); # sowie upload.log abarbeiten open(UPLOAD, "; close(UPLOAD); open(UPLOADN, ">/var/log/digitemp/upload.neu"); $ftp->ascii(); foreach $zeile (@upload) { ($verz,$datei) = split(" ", $zeile); $ftp->mkdir("/temper/$verz"); $ftp->cwd("/temper/$verz"); $ftp->put("$datei")|| print UPLOADN "$verz $datei\n"; }; close(UPLOADN); # Nicht hochgeladene Dateien merken system "mv -f /var/log/digitemp/upload.neu /var/log/digitemp/upload.log"; # und ende! $ftp->quit;