Hallo Zusammen,
habe einige Presence Abfragen gebaut die alle so aufgebaut sind:
define PC_ping PRESENCE lan-ping 192.168.1.100
Funktioniert auch gut für ca. 20 min, danach stürzt wohl das Presence Modul ab mit folgender Fehlermeldung:
2013.07.21 18:04:52 1: Timeout for PRESENCE_DoLocalPingScan reached, terminated process 13523
2013.07.21 18:04:52 2: PRESENCE: PC_ping could not be checked (retrying in 10 seconds)
Weiderholt wird der ping nicht, ab der Fehlermeldung im Log wird nichts mehr gepingt und der Status dementsprechend nicht mehr geändert.
Nach "shutdown restart" funktioniert das Modul wieder für ca. 20 min und stürzt dann wieder ab.
Bitte um Hilfe, bin mit meinem Latein leider am Ende.
Danke schon mal
XenYx
Setz bitte mal bei der Definition PC_ping das Attribut "loglevel" auf 3 und dann poste hier mal das Logfile vom Start von FHEM bis zum eintreten dieses Problems.
Vielen Dank
Gruß
Markus
Hi,
laut http://fhem.de/MAINTAINER.txt (//fhem.de/MAINTAINER.txt)
sollten Beiträge zu PRESENCE im Ordner "Unterstützende Dienste" platziert werden.
Habe daher diesen Fred dorthin verschoben.
Gruß, Uli
Hallo,
ich weiss zwar nicht was ich nun verändert habe, aber seit dem Neustart nach dem erstem Post kann ich das Problem nicht mehr reproduzieren. D.h. alles läuft nu sauber...
Wenn der Fehler nochmal auftauchen sollte, lass ich das Thema nochmal aufleben.
Danke
Alex
Hallo,
habe ein Problem mit dem Modul Presence.
Hab folgenden code erstellt:
define HandyThomas PRESENCE lan-ping 192.168.55.18 15 15
define Anwesenheit_HandyThomas notify HandyThomas:present set ez_Licht_Decke on
Aber noch nicht mal die Erkennung funktioniert, steht immer auf "absent"
Fhem läuft auf meiner FB 7390 läuft aber nur als Router als Modem nutze lch eine zweite FB.
Bin der Meinung das das unwichtig ist da das Modul selbst den Ping absetzt.
Update habe ich auch schon durchgeführt.
Was ist mein fehler?????
stell mal bei HandyThomas das Attribut loglevel auf 3, führe anschließend einen StatusRequest durch und poste mal den Output aus deinem Logfile hier.
Vielen Dank
Gruß
Markus
Hallo,
danke für die Hilfe aber wie mache ich das ??
Habs gegooglet ohne erfolg!
Habs mal so probiert:
attr presence loglevel 3
als
antwort kamm:
Please define presence first
Was hat das zu bedeuten ??
Das du ganz knapp dran warst. Bitte nutze den Befehl:
attr HandyThomas loglevel 3
Die Syntax ist immer "attr <DEFINITION> <ATTRIBUT> <WERT>"
Viele Grüße
Markus
Hallo,
hier ein auszug aus dem Log
2013.08.17 21:52:58 1: update 12 file(s) have been updated.
2013.08.17 21:52:58 1: update A new version of fhem.pl was installed, 'shutdown restart' is required!
2013.08.17 21:54:51 0: Server shutdown
2013.08.17 21:54:55 1: Including fhem.cfg
2013.08.17 21:54:56 3: telnetPort: port 7072 opened
2013.08.17 21:54:57 3: WEB: port 8083 opened
2013.08.17 21:54:57 3: WEBphone: port 8084 opened
2013.08.17 21:54:57 3: WEBtablet: port 8085 opened
2013.08.17 21:54:58 3: TUL opening EIB device eibd:localhost
2013.08.17 21:54:58 3: TUL device opened
2013.08.17 21:54:59 1: Including ./log/fhem.save
2013.08.17 21:54:59 1: statefile: Undefined value 68
Undefined value 59
Undefined value 0 %
Undefined value 0 %
2013.08.17 21:54:59 1: usb create starting
2013.08.17 21:54:59 1: usb create end
2013.08.17 21:54:59 2: SecurityCheck: telnetPort has no password/globalpassword attribute. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2013.08.17 21:54:59 0: Server started with 42 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3712 2013-08-16 06:57:44Z rudolfkoenig $, pid 32081)
2013.08.17 22:23:32 2: EIB EIB_0205 off
2013.08.17 22:23:32 2: EIB EIB_0208 off
2013.08.17 22:23:32 2: EIB EIB_0205 off
2013.08.17 22:23:34 2: EIB EIB_0200 off
2013.08.17 22:23:34 2: EIB EIB_0203 off
2013.08.17 22:23:34 2: EIB EIB_0200 off
2013.08.18 02:23:19 2: EIB ez_Licht_Decke on
2013.08.18 02:24:44 2: EIB ez_Licht_Decke off
2013.08.18 07:42:13 3: PRESENCE_DoLocalPingScan: HandyThomas|192.168.55.18|0|4
2013.08.18 07:42:13 3: PRESENCE (HandyThomas) - ping command returned with output:
PING 192.168.55.18 (192.168.55.18): 56 data bytes
2013.08.18 07:42:13 3: PRESENCE_ProcessLocalScan: HandyThomas|0|absent
2013.08.18 07:42:28 3: PRESENCE_DoLocalPingScan: HandyThomas|192.168.55.18|0|4
2013.08.18 07:42:28 3: PRESENCE (HandyThomas) - ping command returned with output:
PING 192.168.55.18 (192.168.55.18): 56 data bytes
es geht dann immmer so weiter egal ob Wlan an oder aus.
Danke
Das Problem liegt daran, dass FHEM keinen Ping-Befehl ausführen darf. Dies kann an mangelnden Rechten liegen oder anderen Sachen.
Auf welchem System läuft dein FHEM (Hardware, Betriebssystem, Version)?
Unter welchem User läuft dein FHEM? Bitte dazu in der Weboberfläche oben folgenden Befehl eingeben und Enter drücken:
{(getpwuid($<))[0]}
Was kommt an Output, wenn du in der Weboberfäche den folgenden Befehl eintippst und Enter drückst?
{qx(ping -c 1 127.0.0.1)}
Vielen Dank
Gruß
Markus
Hallo,
unter dem Befehl:
Zitat{(getpwuid($<))[0]}
kommt: fhem
unter dem Befehl:
Zitat{qx(ping -c 1 127.0.0.1)}
kommt: PING 127.0.0.1 (127.0.0.1): 56 data bytes
Fhem läuft bei mir auf einer FB7390 mit fhem.image von der fhem Seite
Hi,
bei der FritzBox ist das generelle Problem, dass der User "fhem" keine Rechte hat Ping-Pakete zu versenden. Die Tatsache, dass du bei der Erstellung deiner Definition keinen Fehler erhalten hast, lässt darauf schließen, dass du eine ältere Version von PRESENCE im Einsatz hast, da aktuell in so einem Fall bereits eine entsprechende Fehlermeldung kommen würde.
Damit Ping-Checks auf der FritzBox funktionieren, musst du FHEM anpassen, damit es unter dem User "root" läuft. Eine Anleitung dazu findest du hier (//www.fhemwiki.de/wiki/FritzBox:_fhem_unter_root_starten)
Viele Grüße
Markus
Super,
es ist schön wenn es funktioniert.
Danke Danke.
Licht schaltet sich an present aber nicht aus absent.
Aber danke.
Ich werde mal weiter suchen.
Super, um das Abschalten zu erreichen müsstest du einfach ein zweites Notify definieren. Im Gesamten sehe dass dann so aus:
define HandyThomas PRESENCE lan-ping 192.168.55.18 15 15
define Anwesenheit_HandyThomas notify HandyThomas:present set ez_Licht_Decke on
define Abwesenheit_HandyThomas notify HandyThomas:absent set ez_Licht_Decke off
hallo,
ich betreibe fhem auf einem Windowsrecher. Der läuft sowieso ständig, und es bietet sich an.
Ich weiß das Windows nicht gerne supported wird. presence läuft da leider nicht. Ich habe es mit lan-ping versucht, und das Gerät wird immer als present gemeldet. Ich kann auch irgend eine IP angeben, immer present.
Kann man da was machen oder läuft es nicht? Ich habe es anders gelöst, finde presence aber eleganter.
mfg
Tom_S
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
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
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
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
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
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
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
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
Hattet ihr schon Zeit es auszuprobieren?
Gruß
Markus
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
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
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