1 |
joko |
1.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 |