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 |