#!/usr/bin/perl use IO::Socket; use POSIX qw(setsid); use LWP 5.64; # Loads all important LWP classes, and makes my $browser = LWP::UserAgent->new; # IP des Rechners auf dem POC32 läuft (der lokale Rechner) $remote_host="192.168.1.100"; # Port auf dem POC32 läuft $remote_port="8001"; # Die Zeit des Programmstarts wird gespeichert $start=time(); $| = 1; $socket = IO::Socket::INET->new(PeerAddr => $remote_host, PeerPort => $remote_port, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $remote_host:$remote_port : $@\n"; # Logdatei pocsag.log wird geöffnet open (out,">>pocsag.log"); # Der Client loggt sich bei POC32 ein print $socket "0\n"; $enable=0; # Schleife, solange die TCP Verbindung besteht while (<$socket>) { # Erst nach 10 Sekunden nach Programmstart werden Alarmierungen # verarbeitet. (Sonst wird evtl. beim erneuten Aufruf des Clients # die komplette Liste die noch im POC32 Fenster zu sehen ist # abgearbeitet. if (!$enable) { $uptime=time()-$start; if ($uptime > 3) { $enable=1; } } # Aufsplitten der von POC32 gelieferten Zeilen in Spalten @spalten=split(/\t/,$_); $date=$spalten[0]; $ric=$spalten[3]; $type=substr($spalten[5],0,1); $text=$spalten[6]; # Löschen unerwünschter Zeichen $text=~s/\r\n//; # DOS Zeilenumbruch $text=~s/\n//; # Unix Zeilenumbruch $text=~s///g; # (End of Text?) # Ausgeben der Daten auf den Bildschirm und in das Logfile print "$date;$ric;$type;\"$text\"\n"; print out "$date;$ric;$type;\"$text\"\n"; # Wenn die 10 Sekunden "Startphase" um ist, weitere Aktionen mit anstossen. if ($enable) { push_pocsag(); } } close($socket); # Programmende # Funktion push_pocsag sub push_pocsag { # Hier können alle Möglichen Aktionen folgen. # z.B. werden Hier alle Meldungen mit Ausnahme des Zeit / Alive RIC per # HTTP GET an ein PHP Skript auf einem Webserver gesendet. # Alt Stahnsdorf 1 if ($ric eq "1769825" and $type eq "1" ) { my $url = URI->new( 'http://example.com/webin.php/' ); $url->query_form( 'log_user' => perl5123, 'log_pass' => 471142, 'listcode' => "+1", 'text' => 1, 'flash' => 1, ); my $response = $browser->get($url); # Antwort des Webservers: print $response->content."\n"; }