X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=door_daemon.pl;h=ce1436405cb6188d5e7f355b9cbdfa2b567b4e3d;hb=4abb3ec7655723725bd62ffc53600a6396de1513;hp=8aa48c403aa34bad1a3a3b44690af8ad1601ceac;hpb=d269d3bba2ae1605ce94bb9cc3384da058656846;p=svn42.git diff --git a/door_daemon.pl b/door_daemon.pl index 8aa48c4..ce14364 100755 --- a/door_daemon.pl +++ b/door_daemon.pl @@ -6,8 +6,8 @@ use Date::Format; use Fcntl; use strict; -my $url_door_open = "https://www.realraum.at/"; -my $url_door_closed = "https://www.realraum.at/"; +my $url_door_open = 'https://www.realraum.at/cgi/status.cgi?pass=jako16&set=%3Chtml%3E%3Cbody%20bgcolor=%22lime%22%3E%3Ch3%3E%3Ccenter%3ETuer%20ist%20Offen%3C/center%3E%3C/h3%3E%3C/body%3E%3C/html%3E'; +my $url_door_closed = 'https://www.realraum.at/cgi/status.cgi?pass=jako16&set=%3Chtml%3E%3Cbody%20bgcolor=%22red%22%3E%3Ch3%3E%3Ccenter%3ETuer%20ist%20Geschlossen%3C/center%3E%3C/h3%3E%3C/body%3E%3C/html%3E'; my $door_ttyusb_dev = "/dev/ttyUSB0"; my $fifofile = "/tmp/door_cmd.fifo"; @@ -24,7 +24,9 @@ open($logfile,'>>/var/log/tuer.log'); $logfile->autoflush(1); sub door_log { - print $logfile Date::Format::time2str("%Y-%m-%d %T: ",time()).shift()."\n"; + my $msg=shift; + chomp($msg); + print $logfile Date::Format::time2str("%Y-%m-%d %T: ",time()).$msg."\n"; } door_log("Door Daemon started"); @@ -41,6 +43,7 @@ my $ttyusb=undef; sub handler { #local($sig) = @_; + print $ttyusb "c" if (defined $ttyusb); door_log("Door Daemon stopped"); close $logfile; close $fifo if (defined $fifo); @@ -97,11 +100,12 @@ while(1) { my ($rh_set) = IO::Select->select($read_set, undef, undef); #print "tuer_status_start: ".$main::tuer_status,"\n"; + sleep(1); #give other end time to finish writing... (bad fix) foreach my $fh (@$rh_set) { if ($fh == $fifo) { - my $fifo_msg = <$fh>; + my $fifo_msg = readline($fh); unless ($fifo_msg) { close_fifo(); @@ -116,7 +120,7 @@ while(1) } elsif ($fh == $ttyusb) { - my $ttyusb_msg = <$fh>; + my $ttyusb_msg = readline($fh); last unless ($ttyusb_msg); #print($ttyusb_msg); door_log($door_ttyusb_dev.": ".$ttyusb_msg); @@ -132,18 +136,21 @@ while(1) my $tuer=$main::tuer_status; $tuer=$main::door_open if $ttyusb_msg =~ /open/; $tuer=$main::door_closed if $ttyusb_msg =~ /close|closing/; - if (not $tuer == $main::tuer_status) + door_log("$tuer"); + if (not ($tuer == $main::tuer_status)) { $main::tuer_status=$tuer; if ($tuer == $main::door_open) { + door_log("change to opened"); #print "change to open\n"; - system('wget --no-check-certificate -q -O /dev/null '.$url_door_open.' &>/dev/null &'); + system('wget --no-check-certificate -q -O /dev/null "'.$url_door_open.'" &>/dev/null &'); } else { #print "change to closed\n"; - system('wget --no-check-certificate -q -O /dev/null '.$url_door_closed.' &>/dev/null &'); + door_log("change to closed"); + system('wget --no-check-certificate -q -O /dev/null "'.$url_door_closed.'" &>/dev/null &'); } } } @@ -170,13 +177,13 @@ sub handle_cmd { door_log("Door opened by $who"); print $ttyusb "o"; - system('wget --no-check-certificate -q -O /dev/null '.$url_door_open.' &>/dev/null &'); + system('wget --no-check-certificate -q -O /dev/null "'.$url_door_open.'" &>/dev/null &'); } else { door_log("Door closed by $who"); print $ttyusb "c"; - system('wget --no-check-certificate -q -O /dev/null '.$url_door_closed.' &>/dev/null &'); + system('wget --no-check-certificate -q -O /dev/null "'.$url_door_closed.'" &>/dev/null &'); } }