neuer Tuer Daemon (open problem: status read von ttyUSB0)
[svn42.git] / checkcard.pl
diff --git a/checkcard.pl b/checkcard.pl
new file mode 100755 (executable)
index 0000000..71c1966
--- /dev/null
@@ -0,0 +1,85 @@
+#!/usr/bin/perl -w
+
+use strict;
+my $fh;
+my $fifofile = "/tmp/door_cmd.fifo";
+
+my $keys;
+my %good;
+
+open $keys,'/flash/realraum/keys';
+while (<$keys>)
+{
+       if ($_ =~ /([0-9A-Fa-f]{8})\s(\S+)/)
+       {
+               $good{$1}=$2;
+       }
+}
+
+sub send_to_fifo
+{
+       if( -p $fifofile)
+       {
+               open(my $fifo,"> $fifofile");
+               print $fifo shift(@_)."\n";
+               close($fifo);  
+       }
+}
+
+while (sleep 1)
+{
+       open $fh,'/flash/realraum/mifare-read 0 2>&1 |';
+       while (<$fh>)
+       {
+               next unless /UID/;
+               my ($id) = /UID=(\S+)\s+/;
+               if ($good{$id})
+               {
+                       send_to_fifo("toggle Card ".$good{$id});
+               } else {
+                       send_to_fifo("log InvalidCard $id");
+               }
+       }
+}
+
+###############################################################
+#  mifare-read
+#   
+#  writes:
+#  UID=<4 byte in hex, upper-case>
+#
+#
+###############################################################
+# /dev/ttyUSB0: door key printer
+#
+#
+#   Ok
+#   Ok, closing now
+#   Already closed
+#   Already opened
+#   close forced manually\nOk
+#   open forced manually\nOk
+#   Error: .*
+#   .* be: unknown command
+#          Operation in progress
+#          open/close took too long!
+#          last open/close operation took to long!
+#
+# commands:
+#  c ... close
+#   response: "Ok", "Already closed", "Error: .*"
+#  o ... open
+#   response: "Ok", "Already opened", "Error: .*"
+#  s ... status
+#   response: "Status: closed|opened|<->, opening|waiting|closing|idle"
+#         or  "Error: .*"
+#  r ... reset
+#   "Ok, closing now" or "Error: .*"
+#
+# open/close  will only be accepted if Status: ..., idle
+# Reset overrules all other operations in progress
+# s will always be accepted
+#
+###############################################################
+#
+#