Hallo Zusammen,
ich habe mir mal das Thema "Netzwerkgeräte: Verfügbarkeit prüfen" aus dem WIKI von hier angesehen.
http://www.fhemwiki.de/wiki/Netzwerkgeräte:_Verfügbarkeit_prüfen (//www.fhemwiki.de/wiki/Netzwerkger%C3%A4te:_Verf%C3%BCgbarkeit_pr%C3%BCfen)
Im Prinzip funktioniert das gut für meine Zwecke, was mich aber etwas stört sind Log Einträge immer wenn die Überprüfung ausgeführt wird.
2013.04.08 19:31:05 3: FS20 set d_HPDrucker off
2013.04.08 19:32:05 3: FS20 set d_HPDrucker off
2013.04.08 19:33:05 3: FS20 set d_HPDrucker off
2013.04.08 19:34:05 3: FS20 set d_HPDrucker off
2013.04.08 19:35:05 3: FS20 set d_HPDrucker off
2013.04.08 19:36:05 3: FS20 set d_HPDrucker off
Mir ist schon klar das sich das reduzieren lässt wenn ich das Intervall für die Überprüfung reduziere, aber das möchte ich eigentlich nicht.
Es findet halt immer eine Aktion statt auch wenn der Status sich nicht geändert hat.
Im Prinzip würde es ja reichen eine nur Aktion durchzuführen wenn der Status des devices auch wirklich geändert ändert.
Dazu müsste doch eigentlich in der Routine "FhemLanStat" die in der "if Clause" die Bedingung erweitert werden und der aktuelle State des devices mit berücksichtigt werden.
sub
FhemLanStat($@)
{
my $laenge = 0;
my $i = 0;
my $net_device="";
my $dm_device ="";
my $attendance="Abwesend";
my $ret = "";
$laenge = @_;
if (($laenge % 2) ne 0){
$ret = "Anzahl Parameter nicht korrekt.";
return $ret;
}
for ($i=0;$i < $laenge;$i+=2){
$net_device = $_[$i];
$dm_device = $_[($i+1)];
# Vollstaendigen Pfad zum Script angeben
$net_device=qx(/var/media/ftp/uStor01/fhem/fhem/fhem/FhemUtils/lanping.sh $net_device);
if(right(trim($net_device), 2) eq "Ok"){
$attendance="Anwesend";
} else {
$attendance="Abwesend";
}
fhem "set $dm_device $attendance";
}
}
1;
Nur fehlt mir irgendwie der Durchblick, wie ich bei der Überprüfung noch den aktuellen Status mit überprüfen kann,
und dann nur eine Aktion auslöse wenn der aktuelle Status sich von der Überprüfung vorher unterscheidet.
Habt Ihr einen Lösungsansatz für mich?
Ciao, Stef.
Ich hab es mit einem dummy und notify gelöst das fängt auch noch Verbindungsfehler ab da mein Handy nicht jeden ping beantwortet.
define Markus_Daheim notify Markus_Handy:present {\
fhem ( "set Markus present ;; delete Markus_Weg ;; define Markus_Weg at +00:03:00 set Markus absent")}
Ausgewertet wird dann immer der Homestatus...
define MarkusAktiv notify Markus.* {if (Value("Markus_Schlaft") eq "nein" \
&& Value("Markus") eq "present" && Value("whg_HomeStat1") eq "off") \
{fhem "set whg_HomeStat1 on"} \
}
Gruß Markus
Hallo Markus,
danke für die Schnelle Antwort, hast Du ein paar Details zu Deinem Lösungsansatz?
Gruß, Stef.
Was verstest du nicht?
Value("whg_HomeStat1") eq "off"#hier wird geprüft ob ausgeschaltet und nur dann ..
{fhem "set whg_HomeStat1 on"} \#wird diese zeile ausgeführt...
Mhh, das ist komisch...
Vorhin war in Deinem ersten Beitrag der zweite Codeabschnitt nicht sichtbar / vorhanden...
define MarkusAktiv notify Markus.* {if (Value("Markus_Schlaft") eq "nein" \
&& Value("Markus") eq "present" && Value("whg_HomeStat1") eq "off") \
{fhem "set whg_HomeStat1 on"} \
}
Daher meine Frage, damit ist mir jetzt alles klar.
Aber schon merkwürdig mit der Darstellung / Sichtbarkeit...
Danke, Stef.
Hauptsache jetzt klapt es ;-)
gruß Markus