Dieses Mini-Plugin ermöglich den Status (Ein/Aus) von Netzwerkgeräten oder einer Interntverbindung z. B. in einer Visu anzuzeigen und ist als eine Ergänzung zu dem WireGate-Plugin Ein-/Ausschalter von Netzwerkgeräten entstanden.
Dieses Plugin prüft mit einem Ping ob ein Netzwerkgerät eingeschaltet ist und sendet den Status über eine GA auf den EIB/KNX-Bus. Die Überwachung kann zyklisch erfolgen und/oder durch eine weitere GA angestoßen werden.
Die Konfiguration geschieht wie üblich im Definitionsbereich und ist durch die Kommentare selbsterklärend.
Das Plugin ist zwar sehr einfach gestrickt, aber vielleicht für den einen oder anderen doch ganz interessant.
Dieses Plugin prüft mit einem Ping ob ein Netzwerkgerät eingeschaltet ist und sendet den Status über eine GA auf den EIB/KNX-Bus. Die Überwachung kann zyklisch erfolgen und/oder durch eine weitere GA angestoßen werden.
Die Konfiguration geschieht wie üblich im Definitionsbereich und ist durch die Kommentare selbsterklärend.
Das Plugin ist zwar sehr einfach gestrickt, aber vielleicht für den einen oder anderen doch ganz interessant.
Code:
# Zum Anzeigen des Status eines Netzwerkgerätes oder der Internetverbindung # # Diese Plugin nutzt einen Ping zum Ermitteln des Zustandes (Ein/Aus) ### Definitionen my $start_ga = "1/1/2"; # Gruppenadresse um den Test auszulösen my $return_ga = "1/1/1"; # Gruppenadresse zur Rückmeldung my $ip_address = "192.168.0.1"; # IP-Adresse des zu testenden PCs my $auto_test = "60"; # Wert für automatischen Test in Sekunden, nicht zu kurz einstellen ### Ende Definitionen # Plugin an Gruppenadresse "anmelden" $plugin_subscribe{$start_ga}{$plugname} = 1; # Eigenen Aufruf-Zyklus auf x Sekunden setzen # der Aufrufzyklus ist unabhängig von der Taktzeit und muss kürzer sein! $plugin_info{$plugname.'_cycle'} = $auto_test; # Status des Netzwerkgerätes durch einen Ping testen my $on_off = ping_test($ip_address); # Je nach Ergebnis eine Rückmeldung geben if ( $on_off == 1 || $on_off == 0 ) { knx_write($return_ga,$on_off,1); } return "Status: ".$on_off; sub ping_test { (my $ip_adr) = @_; my $command = "ping -c 2 -w 1 ".$ip_adr; my $status = `$command`; if($status =~ /bytes from/) { return 1; } elsif($status =~ /0 received/) { return 0; } return "Ein Fehler ist beim Testen der IP $ip_adr aufgetreten"; }
Kommentar