| 1 |
#!/usr/bin/perl |
| 2 |
|
| 3 |
# $Id$ |
| 4 |
# $Log$ |
| 5 |
|
| 6 |
|
| 7 |
use CGI::Carp qw(fatalsToBrowser); |
| 8 |
|
| 9 |
# Konfiguration |
| 10 |
$cfg_SeriellerPort = '/dev/ttyS1'; |
| 11 |
|
| 12 |
use Device::SerialPort qw( :PARAM :STAT 0.07 ); |
| 13 |
|
| 14 |
$PortName = $cfg_SeriellerPort; |
| 15 |
|
| 16 |
$PortObj = new Device::SerialPort ($PortName, $quiet) |
| 17 |
|| die "Can't open $PortName: $^E\n"; # $quiet is |
| 18 |
|
| 19 |
# configuring |
| 20 |
|
| 21 |
$PortObj->user_msg(ON); |
| 22 |
$PortObj->baudrate(9600); |
| 23 |
$PortObj->databits(8); |
| 24 |
$PortObj->parity("none"); |
| 25 |
$PortObj->stopbits(1); |
| 26 |
$PortObj->handshake("none"); |
| 27 |
|
| 28 |
$PortObj->write_settings || undef $PortObj; |
| 29 |
|
| 30 |
# $PortObj->save($Configuration_File_Name); |
| 31 |
# $PortObj->baudrate(300); |
| 32 |
# $PortObj->restart($Configuration_File_Name); # back to 9600 baud |
| 33 |
|
| 34 |
|
| 35 |
# operating |
| 36 |
|
| 37 |
# temporäre Variablen initialisieren |
| 38 |
|
| 39 |
$data_put = "41\r"; |
| 40 |
|
| 41 |
|
| 42 |
|
| 43 |
|
| 44 |
# Zeitvariablen initialisieren |
| 45 |
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, |
| 46 |
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time); |
| 47 |
my $CTIME_String = localtime(time); |
| 48 |
$Monat+=1; |
| 49 |
$Jahrestag+=1; |
| 50 |
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat; |
| 51 |
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag; |
| 52 |
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden; |
| 53 |
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten; |
| 54 |
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden; |
| 55 |
$Jahr+=1900; |
| 56 |
my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); |
| 57 |
my @Monatsnamen = ("","Januar","Februar","März","April","Mai","Juni", |
| 58 |
"Juli","August","September","Oktober","November","Dezember"); |
| 59 |
|
| 60 |
|
| 61 |
#print $Jahrestag; |
| 62 |
|
| 63 |
my $Sekunden_time = time(); |
| 64 |
my $Stunden_time = int($Sekunden_time / 3600); |
| 65 |
my $Tage_time = int($Sekunden_time / (24 * 3600)); |
| 66 |
my $Wochen_time = int($Sekunden_time / (7 * 24 * 3600)); |
| 67 |
|
| 68 |
# Config Datei Lesen |
| 69 |
open(DATEI, "</tmp/futter.cfg") || die "Datei nicht gefunden"; |
| 70 |
my @Zeilen = <DATEI>; |
| 71 |
close(DATEI); |
| 72 |
|
| 73 |
$sek_calc = ($Zeilen[3] * 60); |
| 74 |
$wielangeher = ($Sekunden_time - $Zeilen[4]); |
| 75 |
$sec_nach_fuetterung = $wielangeher; |
| 76 |
|
| 77 |
$sec_noch = ($sec_nach_fuetterung - $sek_calc); |
| 78 |
|
| 79 |
$test1 = ($Sekunden_time - ($Zeilen[4]+ $sek_calc)); |
| 80 |
if ($test1 lt 1 ) {$tester = 1} |
| 81 |
|
| 82 |
if ($Jahrestag > $Zeilen[0]) { $Zeilen[1] = "0\n" } |
| 83 |
|
| 84 |
|
| 85 |
if ($Jahrestag => $Zeilen[0]) { |
| 86 |
|
| 87 |
|
| 88 |
if ($Stunden > 7) { |
| 89 |
|
| 90 |
|
| 91 |
if ($Stunden < 22) { |
| 92 |
|
| 93 |
|
| 94 |
if ($Zeilen[1] < $Zeilen[2]) { |
| 95 |
|
| 96 |
if ($tester != 1) { |
| 97 |
|
| 98 |
|
| 99 |
## Fuettern ## |
| 100 |
$count_out = $PortObj ->write($data_put); |
| 101 |
warn "write failed\n" unless ($count_out); |
| 102 |
warn "write incomplete\n" if ( $count_out != length($data_put) ); |
| 103 |
$data_out = $PortObj->write_done(0); |
| 104 |
|
| 105 |
$data_put = "40\r"; |
| 106 |
sleep(1); |
| 107 |
|
| 108 |
$count_out = $PortObj ->write($data_put); |
| 109 |
warn "write failed\n" unless ($count_out); |
| 110 |
warn "write incomplete\n" if ( $count_out != length($data_put) ); |
| 111 |
$data_out = $PortObj->write_done(0); |
| 112 |
## Ende Fuettern ## |
| 113 |
|
| 114 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Füttere%20!\n\n"; |
| 115 |
|
| 116 |
$Zeilen[1] = ($Zeilen[1] +1)."\n"; |
| 117 |
$Zeilen[4] = "$Sekunden_time\n"; |
| 118 |
$Zeilen[0] = "$Jahrestag\n"; |
| 119 |
|
| 120 |
open(DATEI, ">/tmp/futter.cfg") || die "Datei nicht gefunden"; |
| 121 |
print DATEI @Zeilen; |
| 122 |
close(DATEI); |
| 123 |
|
| 124 |
} else { |
| 125 |
|
| 126 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Die%20letze%20Fütterung%20ist%20"; |
| 127 |
|
| 128 |
my $Sekundenzahl = $sec_nach_fuetterung; |
| 129 |
sub zeitformat{ |
| 130 |
my $Sekundenzahl = shift; |
| 131 |
$Sekundenzahl = abs($Sekundenzahl); |
| 132 |
printf "%d Tage %02d:%02d:%02d", |
| 133 |
$Sekundenzahl/24/60/60,($Sekundenzahl/60/60)%24,($Sekundenzahl/60)%60,$Sekundenzahl%60; |
| 134 |
} |
| 135 |
zeitformat($Sekundenzahl); |
| 136 |
print " Stunden her.<br>In "; |
| 137 |
|
| 138 |
my $Sekundenzahl2 = $sec_noch; |
| 139 |
sub zeitformat2{ |
| 140 |
my $Sekundenzahl2 = shift; |
| 141 |
$Sekundenzahl2 = abs($Sekundenzahl2); |
| 142 |
printf "%d Tagen %02d:%02d:%02d", |
| 143 |
$Sekundenzahl2/24/60/60,($Sekundenzahl2/60/60)%24,($Sekundenzahl2/60)%60,$Sekundenzahl2%60; |
| 144 |
} |
| 145 |
zeitformat2($Sekundenzahl2); |
| 146 |
print "%20Stunden%20kann%20wieder%20gefüttert%20werden.\n\n"; |
| 147 |
|
| 148 |
} |
| 149 |
} else { |
| 150 |
chomp($Zeilen[2]); |
| 151 |
chomp($Zeilen[1]); |
| 152 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Heute%20schon%20"; |
| 153 |
print "$Zeilen[2] mal%20gefüttert.<br>Maximal%20"; |
| 154 |
print "$Zeilen[2]"; |
| 155 |
print "%20Fütterungen%20täglich%20erlaubt.\n\n"; |
| 156 |
|
| 157 |
# print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Nach 22 Uhr sind die Fische schon im Bett.\n\n"; |
| 158 |
} |
| 159 |
} else { |
| 160 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Nach 22 Uhr sind die Fische schon im Bett.\n\n"; |
| 161 |
} |
| 162 |
} else { |
| 163 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Vor 8 Uhr schlafen die Fische noch.\n\n"; |
| 164 |
} |
| 165 |
} else { |
| 166 |
print "Location: http://www.axquarium.de/kunden/axquarium/d2u.nsf/futter?OpenForm&Query=Gepeichert ist die Jahreszahl $Zeilen[0] Heute ist Jahrestag:$Jahrestag\n\n"; |
| 167 |
#print "Gepeichert ist die Jahreszahl $Zeilen[0] Heute ist Jahrestag:$Jahrestag<br>\n"; |
| 168 |
} |
| 169 |
#print '<br><br><br><img src="/axquarium/webcam/pic/image.jpg" alt="Futterbild"><br>', "\n"; |
| 170 |
#print "Bitte F5 druecken um das Bild zu aktualisieren.<br>\n"; |
| 171 |
#print "CTIME:$CTIME_String<br>\n"; |
| 172 |
#print '</p></body></html>', "\n"; |
| 173 |
#print "\n\n"; |
| 174 |
v |