Servus,
ich hol den Thread hier mal wieder aus der Versenkung.
Kann man denn ein solches WG-Plugin auch irgendwie ummodeln das man es auf einem Raspi mit cometvisu zum laufen bekommt?
z.B. indem man es dann zyklisch alle Minute per cron aufruft? ...oder gibt es sowas schon und ich habs nur nicht gefunden?
beste Grüße
Michael
Ankündigung
Einklappen
Keine Ankündigung bisher.
Status eines Netzwerkgerätes ermitteln
Einklappen
X
-
Hallo,
Wer Frys Logikprozessor nutzt, kann dies auch in einer Config-Zeile erledigen:
Der Wert in "time=>" entspricht der Aufrufzeit. +5m resultiert in einem Aufruf alle 5min.Code:pingMediacenter => { transmit=>'1/1/9', timer=>{ time=>'00:00+5m' }, translate => sub { my $command = "ping -c 2 -w 1 <IP/hostname>"; my $status = `$command`; return ($status =~ /bytes from/) ? 1 : 0 }, debug=>1},
Im Log sieht das dann wie folgt aus:
Zu beachten ist die Pluginlaufzeit von >1,5s. Man sollte den Aufrufzyklus also nicht allzu klein wählen, sonst erhöht sich die Gefahr dass der Ping gerade in dem Moment läuft in dem eigentlich eine zeitkritische Lichtlogik (zB nachträgliches Dimmen) ausgeführt werden soll...Code:2014-01-13 08:00:27.393,Logikprozessor,Naechster Aufruf der Timer-Logik 'pingMediacenter' um 08:05. 2014-01-13 08:00:27.509,Logikprozessor,$logic{pingMediacenter}{transmit}(Logik) -> 1/1/9:1 gesendet (Timer); ,1.5s,
VG
Micha
Einen Kommentar schreiben:
-
Das Plugin einfach mehrmals - mit unterschiedlichen Namen einfügen und dort die jew. IP/GA reinsetzen.
(man könnte es natürlich aucch für mehrere Hosts umschreiben)
Makki
Einen Kommentar schreiben:
-
Hallo Jowag,
so einfach geht es leider nicht, aber ich habe Dir das Plugin etwas erweitert, du kannst jetzt mehrere IPs und Gruppenadressen angeben.
Damit sind ca. 4 bis 5 IPs möglich, benötigst du noch mehr Tests einfach das Plugin zweimal einfügen.
Wenn nur eine "Start_GA" angegeben wird, dann werden immer alle aufgeführt IPs getestet, gleiches gilt für den "automatischen" Test. Das bedeutet, nur wenn $auto_test = "0" ist und mehrere "Start_GA"s angegeben sind, werden einzelne IPs getestet.
Ich habe die Erweiterung nicht getestet, aber sollte funktionieren...
Edit:Code:# Zum Anzeigen des Status mehrerer Netzwerkgeräte oder der Internetverbindung # Aufgrund der Laufzeitbeschränkung der Plugins nicht mehr als 4-5 IPs testen # # Diese Plugin nutzt einen Ping zum Test ### Definitionen my @start_ga = ( "1/1/2", "1/1/4" ); # Gruppenadressen um den Test auszulösen, # wenn nur eine GA angegeben wird, werden alle IPs geprüft my @return_ga = ( "1/1/1", "1/1/3" ); # Gruppenadressen zur Rückmeldung, # die Anzahl muss mit der Anzahl der IP-Adressen übereinstimmen) my @ip_address = ( "192.168.0.1", "192.168.0.2" ); # IP-Adressen der zu testenden PCs/Geräte my $auto_test = "60"; # Wert für automatischen Test in Sekunden, leer lassen für keinen auto test, # wenn ein Wert eingetragen wurde, werden immer IPs alle getestet ### Ende Definitionen # Plugin an Gruppenadresse(n) "anmelden" foreach(@start_ga) { $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! if ( $auto_test > 0 ) { $plugin_info{$plugname.'_cycle'} = $auto_test; } else { $plugin_info{$plugname.'_cycle'} = 86400; # Aufruf alle 24 Stunden } my $on_off; if ( @start_ga == 1 || $auto_test > 0 ) { # Alle Geräte/PCs testen test_all(); } else { # Nur den aufgerufenden PCs testen if (%msg) { if ($msg{'apci'} eq "A_GroupValue_Write") { foreach(@start_ga) { if ($msg{'dst'} eq $start_ga[$_]) { $on_off = ping_test($ip_address[$_]); if ( $on_off == 1 || $on_off == 0 ) { knx_write($return_ga[$_],$on_off,1); } } } } } } return; sub test_all { foreach(@return_ga) { # Status des Netzwerkgerätes durch einen Ping testen $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; } sub ping_test { (my $ip_adr) = @_; my $command = "ping -c 2 -w 2 ".$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"; }
OK, makki war schneller, dies ist die umgeschriebene Version
Einen Kommentar schreiben:
-
Zitat von panzaeron Beitrag anzeigen... Status (Ein/Aus) von Netzwerkgeräten
Die Konfiguration geschieht wie üblich im Definitionsbereich und ist durch die Kommentare selbsterklärend.
### 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
da ich mit wiregate plugins bzw. perl noch keine Erfahrung habe eine kurze Frage:
um mehrere Geräte anzupingen brauch ich einfach die Zeilen start_ga return_ga und ip_adress mehrfach eintragen oder ???
ich mach es dzt. am HS mit Hostcheck habe aber den Eindruck das bei 20 Geräten der HS ein bisserl gebremst wird
Das WG könnte das übernehmen da es mit Temperaturmessen alleine etwas unterfordert ist
Einen Kommentar schreiben:
-
yuhu erfolgserlebnis ist da!
und der "Human"Index hier ist besser als bei google
Vielen Dank
maxxmobile
Einen Kommentar schreiben:
-
Ja, aber in dem Fall ist es schwierig. Hostcheck ist nicht so sehr naheliegend
Einen Kommentar schreiben:
-
@Matthias:
Ein bischen "arbeiten" sollte schon drinnen sein, du nimmst MaxxMobile ja das Erfolgserlebnis...
(dass DU die Forensuche benutzen kannst wissen wir ja *grins*)
LG aus Ö!
Einen Kommentar schreiben:
-
Einen Kommentar schreiben:
-
da gibt es einen Baustein von Nils - suchfunktion in den Downloads benutzen...
Einen Kommentar schreiben:
-
Hallo allerseits:
Ich habe vorher dieses Post entdeckt
Ich suche auch Möglichkeiten den Status meiner IP Geräte zu erfassen.
Kann ich dieses Mini Plugin auch in den Homeserver integrieren, oder muss das von aussen irgendwie gestartet werden?
Wäre cool
many thx
maxxmobile
Einen Kommentar schreiben:
-
Ich denke schon -> Weitermachen!Zitat von panzaeron Beitrag anzeigenDas Plugin ist zwar sehr einfach gestrickt, aber vielleicht für den einen oder anderen doch ganz interessant.
Alleine weil es mal wieder zeigt, das man mit einem offenen System eben auch relativ einfach alles was man will/mag/kann, dann auch machen kann
Ausserdem denke ich das jedes Beispiel fürs Verständnis hilft, die Doku ist ja immernoch dünn
Einzig das "use strict;" ist echt redundant, das steht gefühlt bereits in Zeile 3 des ausführenden daemon
(zur laufzeit zufällig definierte spassvariablen fand ich schon in den ersten Tagen von VB ziemlich dämlich und das lasse ich auch in Perl nicht gelten, ob erlaubt oder nicht ..)
Und den timeout würde ich persönlich etwas runterdrehen (1s - wer dann nicht auf nen Ping..)
Aber ansonsten: sehr schöner Anwendungsfall! (wer hat das noch gleich im HS [nicht] hinbekommen
)
Makki
Einen Kommentar schreiben:
-
Status eines Netzwerkgerätes ermitteln
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.
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"; }Stichworte: -


Einen Kommentar schreiben: