[Gelöst] PRESENCE update : Status "active" bleibt stehen

Begonnen von Tom111, 21 September 2014, 14:49:28

Vorheriges Thema - Nächstes Thema

Tom111

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
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

pwlr

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

Hollo

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.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

pwlr

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

P.A.Trick

Ich habe das gleiche Problem. Was zusätzlich nervt, dass event-on-change-reading nicht mehr funktioniert :-/
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

P.A.Trick

#6
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;                                                                         
             
}                   
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

P.A.Trick

ah ok....Hm der Fehler tritt aber auch nach ein paar Stunden auf!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Tom111

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
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

P.A.Trick

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?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Markus Bloch

#11
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

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

pwlr

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

Tom111

Hallo Markus,

auch ich habe das Update jetzt schon länger laufen und bisher sind keine Probleme aufgetreten!

Gute Arbeit  :)

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V