Hallo,
ich habe 22 Geräte die ich über Lan-Ping bzw. WLan-Ping auf An-und Abwesenheit abfrage.
Nach dem Update von PRESENCE gestern, tritt bei mir zeitweise folgendes Problem auf:
Nach dem Aufruf von FHEM kommt es ab und zu vor, dass der Status active bei einzelnen Geräten
angezeigt wird und dann sofort wieder verschwindet und der richtige Status erscheint dann ( also on oder off ).
Das war vorher nicht so!
Soweit so gut, es kommt aber immer wieder mal vor dass der Status active so stehen bleibt und erst nach
manueller Aktualisierung der Seite verschwindet.
Vor dem Update gab es diese Probleme mit PRESENCE nicht.
Bei mir läuft FHEM auf einem Raspberry Pi.
Gruß
Tom
Hallo,
ja, ich habe das Problem leider auch. Active erscheint immer zwischen den Ping-Intervallen und führt meine Powersteuerung für NAS- und USB-Devices in die Irre.
Kennt jemand die Bedeutung dieses "active" ? Nach meiner Logik kann ein Ping nur present oder absent liefern. Wenn active bedeuten soll, dass ein Ping gerade läuft, dann ist das nach meiner Ansicht im state falsch untergebracht.
Aktuelle Doku : "Checks for a network device via PING requests and reports its presence state."
Wer kann helfen ?
Moin
Bernd
Abgesehen davon, dass das nun ein anderes Verhalten ist, das sich der "Updater" mal ansehen sollte...
solche Probleme zeigen einem gerne mal "Unschönheiten" in der eigenen "Programmierung" auf.
In den entsprechenden notify, at, oder Funktionen muss man sich daher genau überlegen, auf welchen Status man Bedingungen aufsetzt.
In einigen Fällen ist ein "nicht off" besser als ein "on", manchmal umgekehrt, manchmal sollten nur explizite States zugelassen werden.
das stimmt grundsätzlich.
Bei mir allerdings das Problem, dass ich zu einem beliebigen Zeitpunkt (unabhängig vom Trigger) den Status im LAN brauche, also welche Maschinen sind online und welche nicht. Dafür habe ich mir dann den Status aus dem PRESENCE ausgelesen. Und da kommt nun dieses active, mit dem ich nichts anfangen kann.
Moin
Bernd
Ich habe das gleiche Problem. Was zusätzlich nervt, dass event-on-change-reading nicht mehr funktioniert :-/
Hallo zusammen,
ich würde mir das gerne anschauen, leider fehlt mir aktuell die Zeit dazu. Falls also jemand eine Idee oder Vermutung hat, würde ich mich sehr freuen.
Auch entsprechende Logausgaben (mit der aktuellsten Modulversion) wären sehr gut.
Gruß
Markus
Zitat von: Markus Bloch am 25 September 2014, 23:14:49
Hallo zusammen,
ich würde mir das gerne anschauen, leider fehlt mir aktuell die Zeit dazu. Falls also jemand eine Idee oder Vermutung hat, würde ich mich sehr freuen.
Auch entsprechende Logausgaben (mit der aktuellsten Modulversion) wären sehr gut.
Gruß
Markus
# $Id: 73_PRESENCE.pm 6570 2014-09-19 10:20:15Z markusbloch $##
2014.09.25 23:18:54 5: PRESENCE (Handy_Patrick) - stopping timer
2014.09.25 23:18:54 5: PRESENCE (Handy_Patrick) - starting blocking call for mode lan-ping
2014.09.25 23:18:54 5: PRESENCE (Handy_Patrick) - starting ping scan: Handy_Patrick|192.168.1.53|0|2
2014.09.25 23:18:54 4: BlockingCall created child (13888), uses telnetForBlockingFn to connect back
2014.09.25 23:18:54 4: BlockingCall created child (13890), uses telnetForBlockingFn to connect back
2014.09.25 23:18:55 5: PRESENCE (Handy_Patrick) - ping command returned with output:
PING 192.168.1.53 (192.168.1.53): 56 data bytes
64 bytes from 192.168.1.53: seq=0 ttl=128 time=96.066 ms
64 bytes from 192.168.1.53: seq=1 ttl=128 time=123.913 ms
--- 192.168.1.53 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 96.066/109.989/123.913 ms
2014.09.25 23:18:55 4: Connection accepted from telnet:127.0.0.1:39141
2014.09.25 23:18:55 5: Cmd: >{PRESENCE_ProcessLocalScan('Handy_Patrick|0|present')}<
2014.09.25 23:18:55 5: PRESENCE (Handy_Patrick) - blocking scan result: Handy_Patrick|0|present
2014.09.25 23:18:55 5: Triggering Handy_Patrick (1 changes)
2014.09.25 23:18:55 5: Notify loop for Handy_Patrick present
2014.09.25 23:18:55 5: Statistik: Notification of 'Handy_Patrick' received. Device not monitored.
2014.09.25 23:18:55 4: PRESENCE (Handy_Patrick) - rescheduling next check in 80 seconds
2014.09.25 23:18:55 4: BlockingCall created child (13892), uses telnetForBlockingFn to connect back
2014.09.25 23:18:56 4: BlockingCall created child (13894), uses telnetForBlockingFn to connect back
2014.09.25 23:19:00 4: BlockingCall created child (13896), uses telnetForBlockingFn to connect back
Leider konnte ich das Schlüsselwort "active" nicht im Log finden :-/
Zur Vermutung:
Vielleicht hier:
PRESENCE_DoInit($)
{
my ($hash) = @_;
if( not exists($hash->{helper}{DISABLED}) or (exists($hash->{helper}{DISABLED}) and $hash->{helper}{DISABLED} == 0))
{
readingsSingleUpdate($hash, "state", "active",0);
DevIo_SimpleWrite($hash, $hash->{ADDRESS}."|".$hash->{TIMEOUT_NORMAL}."\n", 0);
}
else
{
readingsSingleUpdate($hash, "state", "disabled",0);
}
return undef;
}
Im Modus lan-ping wird die Funktion PRESENCE_DoInit() nie aufgerufen. Diese Funktion wird nur bei lan-bluetooth benutzt um dem presenced/collectord die zu scannende Adresse mitzuteilen, nachdem sich FHEM verbunden hat.
die relevanten Funktionen für lan-ping sind:
PRESENCE_StartLocalScan()
PRESENCE_DoLocalPingScan()
PRESENCE_ProcessLocalScan
Dort gibt es in StartLocalScan() eine Zeile: $hash->{STATE} = "active" if($hash->{STATE} eq "???");
Diese greift, wenn man PRESENCE ganz frisch definiert hat und der erste Scan gestartet wurde.
Gruß
Markus
ah ok....Hm der Fehler tritt aber auch nach ein paar Stunden auf!?
Also, es kann ja nur an der Änderung vom 21.09. liegen, das alte Modul (was ich auch jetzt wieder nutze)
funktioniert ja tadellos. Leider kenn ich mich mit Perl überhaupt (noch) nicht aus sonst würde ich da gerne
weiterhelfen, vielleicht kommt irgendeiner ja mal durch Zufall drauf (ist ja meistens so) :D.
Gruß
Tom
Zitat von: Markus Bloch am 25 September 2014, 23:38:02
Im Modus lan-ping wird die Funktion PRESENCE_DoInit() nie aufgerufen. Diese Funktion wird nur bei lan-bluetooth benutzt um dem presenced/collectord die zu scannende Adresse mitzuteilen, nachdem sich FHEM verbunden hat.
die relevanten Funktionen für lan-ping sind:
PRESENCE_StartLocalScan()
PRESENCE_DoLocalPingScan()
PRESENCE_ProcessLocalScan
Dort gibt es in StartLocalScan() eine Zeile: $hash->{STATE} = "active" if($hash->{STATE} eq "???");
Diese greift, wenn man PRESENCE ganz frisch definiert hat und der erste Scan gestartet wurde.
Gruß
Markus
Guten Morgen Markus,
ich habe einfach mal den Status direkt auf "absent" anstatt auf "active" gesetzt!
$hash->{STATE} = "absent" if($hash->{STATE} eq "???" or "defined");
Dies hat zur Folge, dass die Status Informationen der zu überwachenden Devices "flimmern" (ständiger Wechsel von present/absent).
Kannst du damit etwas anfangen?
Ich hab gerade mal etwas eingecheckt, wo ich denke, das es der Grund ist. Bitte morgen mal ausprobieren.
Ich würde euch gerne den direkten Link geben, aber sourceforge spackt gerade rum.
Edit: jetzt gehts, aktuellstes File: hier (http://sourceforge.net/p/fhem/code/6621/tree//trunk/fhem/FHEM/73_PRESENCE.pm?format=raw)
Viele Grüße
Markus
Hi Markus,
ich habe heute einen Update gefahren und nach schneller Duchsicht stehen absent und present wieder stabil im Status.
Scheint erledigt zu sein, ich teste heute im Laufe des Abends noch mal ausführlicher.
Vielen Dank an alle !!
Moin
Bernd
Hallo Markus,
auch ich habe das Update jetzt schon länger laufen und bisher sind keine Probleme aufgetreten!
Gute Arbeit :)
Gruß
Tom