Presence Problem

Begonnen von xenyx, 26 Juli 2013, 11:14:14

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo Tom,

hast du die aktuellste PRESENCE Version via "update"-Befehl im Einsatz? Falls dem so ist, setze bitte das Attribut "verbose" auf 5, führe einen statusRequest durch und poste bitte den Auszug aus dem Log. Solltest du nicht die aktuellste Version im Einsatz haben, bitte das Attribut "loglevel" auf 2 stellen und dann das gleiche Prozedere durchführen.

Da es vor kurzem eine Änderung am Logging gab musst du schauhen welches Attribut bei dir vorhanden ist und es entsprechend setzen.

Vielen Dank

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)

Tom_S

hallo Markus,

habe schon die neuste Version im Einsatz.
das log sagt
   2013.08.22 22:29:57 5: PRESENCE_DoLocalPingScan: DBOX_WZ_ping|192.168.115.26|0|4
   2013.08.22 22:29:57 5: PRESENCE (DBOX_WZ_ping) - pingtool returned 1
   2013.08.22 22:29:57 5: PRESENCE_ProcessLocalScan: DBOX_WZ_ping|0|present

meine Lösung sieht derzeit so aus
   define DBOX_WZ_Ping at +*00:01:00 { \
   use Net::Ping;; \
   my $ip = "192.168.115.26";; \
   my $p = Net::Ping->new("tcp", 2, 64);; \
   $p->port_number("80");; \
   if ($p->ping($ip)) { \ .....
mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Markus Bloch

Hi Tom,

ich verstehe, leider habe ich momentan keine Zeit um das ganze unter Windows zu testen. Kann daher ein wenig dauern.
Welchen Perl-Interpreter in welcher Version verwendest du eigentlich?

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)

Tom_S

hallo Markus,

hat keine Eile, ich kann es ja testen, wenn du eine Idee hast woran es liegt.
Ich verwende derzeit Activperl V 5.16.2

mfg
Tom
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

ChrisD

Hallo Tom,

Ich hatte unter Windows das gleiche Problem dass alle Geräte immer als Present gemeldet wurden. Ich habe die Zeile
my $pingtool = Net::Ping->new("syn");
geändert in

my $pingtool = Net::Ping->new("tcp");
und damit funktioniert es (in Rev. 3749 von 73_presence.pm ist es Zeile 518).

Grüße,

ChrisD

Markus Bloch

Hallo zuammen,

ich habe den Vorschlag von ChrisD soeben eingecheckt.

Bitte morgen via "update"-Befehl die neue Version laden, neu starten und ausprobieren.

Vielen Dank

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)

ChrisD

Hallo Markus,

Die Änderung hat den Nachteil dass auf dem angepingten Teilnehmer der Echo-Port geöffnet sein muss. Dies ist leider nicht bei allen Geräten der Fall. Auf Windows-Rechnern muss dazu ein zusätzlicher Dienst installiert werden (Simple TCP/IP Sevices).

Ich habe bis jetzt keine Lösung gefunden die mit allen Windows-Versionen funktioniert. Syn-Pings scheinen generell nicht zu gehen. TCP-Pings setzen einen offenen Port voraus. ICMP-Pings funktionieren unter Windows Server 2003 (und wahrscheinlich XP), unter Windows 7 und 8 hatte ich damit aber Probleme, wahrscheinlich wegen Zugriffsrechten, UAC oder Firewall.

Grüße,

ChrisD

Markus Bloch

Hallo zusammen,

ich habe heute nochmal eine neue Variante eingebaut, wo der Ping-Befehl auf der Shell ausgewertet wird.

Bitte probiert dieses morgen aus und sagt Bescheid.

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)

Markus Bloch

Hattet ihr schon Zeit es auszuprobieren?

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)

ChrisD

Hallo,

Ich habe die neue Version (3810) auf diversen Windows-Versionen ausprobiert. Sie funktioniert ohne die Probleme der vorherigen Lösung, hat aber 2 kleine Schönheitsfehler:

- eines meiner Systeme ist auf Französisch, hier wurde immer 'absent' gemeldet bis ich die Auswertung in Zeile 525 angepasst habe, dies muss aber für jede Sprache einzeln angepasst werden
- wenn ich statt einer IP-Adresse den Rechnernamen verwende erfolgt der Ping auf verschiedenen System über IPv6 was auch zu 'absent' führt, dies lässt sich durch hinzufügen des Parameters -4 beheben (Zeile 519, $temp = qx(ping -n $count -4 $device);), Nachteil ist dass dann keine Pings mehr auf IPv6-Adressen möglich sind

Allgemein ist noch anzumerken dass PRESENCE unter Windows nur mit der Perl-Version von Cygwin längerfristig funktioniert da bei den anderen Versionen (Activestate und Strawberry) das forken nicht zuverlässig ist.

Grüße,

ChrisD

Markus Bloch

Hallo Chris,

zu dem Problem mit deinem französischen Windows. Ich habe die Regexp nun nur noch auf /TTL=\d+/ beschränkt. Dieser String ist in allen Sprachversionen identisch und nur im Falle einer Anwesenheit vorhanden. Damit sollte es also nun auch auf deinem französischen Windows laufen.

Den Schalter "-4" habe ich mit eingebracht.

Die neue Version steht ab morgen via "update" zur Verfügung. Alternativ aber auch gerne via SVN.

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)

Tom_S

hallo Markus,
habe auch getestet. Bei mir funktioniert es ca eine Stunde, dann ändert sich nichts mehr. Warum das so ist hat ChrisD auch schon beantwortet. Ich habe Activperl im Einsatz. Werde mal CygWin probieren.

mfg Tom
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus