/[cvs]/nfo/perl/scripts/serialcom/c-control/futter.pl
ViewVC logotype

Contents of /nfo/perl/scripts/serialcom/c-control/futter.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Tue May 27 22:27:03 2003 UTC (20 years, 11 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
initial commit

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&auml;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&uuml;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&uuml;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&uuml;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&uuml;ttert.<br>Maximal%20";
154 print "$Zeilen[2]";
155 print "%20F&uuml;tterungen%20t&auml;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

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed