Logo

    

    

 

 

| Konzept | Javascript | Script Banner | CGI SunnyData-fake | CGI SunnyWeb |
CGI-Script für SunnyWeb
von webmaster, Freitag, 22. Februar 2013


#!Pfad.../bin/perl -w
use CGI::Carp ;#"fatalsToBrowser";  Keine Ausgabe an Browser in SunnyWeb
use strict;
		#Fehlerausgabe in Logdatei
open STDERR, ">>Pfad.../skript.log" or die $!;
use warnings;
$SIG{__WARN__} = sub {die 'WARN: '.shift};

#Name: swfake.pl
#Dieses  CGI-Script wird in SunnyWeb eingebunden
#Es ermittelt bei jedem Aufruf der Startseite den aktuellen
#Tagesertrag und zeigt ihn in der Seite an.
#Dies ist notwendig, wenn der Zählerstand des WR
#am Vortag größer ist als am aktuellen Tag, da ein Bug in
#SunnyWeb die Anzeige verhindert.
#Author: K.O.
#Version 1.0.2 v. 29.03.2013

my ($Monat, $Jahr) = (localtime(time))[4,5];
$Monat += 1;
$Jahr += 1900;
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
my $MonatsFile = "Pfad.../SunnyWeb/html01/".$Jahr.$Monat.".txt";
my $filestat = open (TXTFILE, "+<$MonatsFile");
		#Zugriffsfehler wg. SunnyWeb abfangen und File lesen
my $i = 1;
while(!$filestat ) {
	sleep(1);
	$filestat = open (TXTFILE, "+<$MonatsFile");
	if ($i == 8 && !$filestat) { last;}
	$i++;
}
my $OutputToday;
if ($filestat) {
	my @ErtragsArray = <TXTFILE>;
	close TXTFILE;
	my $LetzeZeile = @ErtragsArray -1; 
	$OutputToday = ($ErtragsArray[$LetzeZeile] - $ErtragsArray[$LetzeZeile - 1]) * 1.014;
	$OutputToday = sprintf("%.2f", $OutputToday);
	$OutputToday =~ s/\./\,/g;
}
else { 
	$OutputToday = "bitte warten";
	$filestat = "none";
}
print "Content-type: text/html\n\n";
print "

Tagesertrag: $OutputToday kWh

"; if ( $i > 1 ) { warn("Fehler beim Öffnen $MonatsFile: $i Versuche - FileOpen-Status: $filestat\n"); } 1;
Darstellung des Codes erfolgt mit:
SyntaxHighlighter version 3.0.83 (July 02 2010)
http://alexgorbatchev.com/SyntaxHighlighter