PRESENCE Fhem Absturz

Begonnen von ChrisW, 03 Februar 2013, 15:54:42

Vorheriges Thema - Nächstes Thema

justme1968

die idee war ja auch lan-ping in den presenced einzubauen und so das threading zu entkoppeln. das wäre das blockig nicht mehr nötig.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus Bloch

Zitat von: ChrisD schrieb am Di, 12 Februar 2013 18:47Das Problem was ich im letzten Beitrag (Di, 12 Februar 2013 11:18) beschrieben habe hat nicht mehr direkt mit dem ursprünglichen Problem zu tun, es tritt auch unter Linux auf. Soll ich dafür einen neuen Thread beginnen ?


Hallo Chris,

probier bitte morgen mal die Änderungen aus, die ich heute eingebracht habe. Wenn du da noch Probleme siehst, oder Fragen hast, dann mach bitte einen neuen Thread auf, damit wir hier wieder etwas übersichtlicher werden ;-)

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)

ChrisD

Hallo,

Danke für das Update. Das Disable-Attribut wird jetzt beim Start korrekt ausgewertet.

Mit dem Vorschlag von Andre könnte das ursprüngliche Problem (PRESENCE Fhem Absturz) unter Windows gelöst werden. Ich werde dies mal austesten.

Grüße,

ChrisD

Markus Bloch

Zitat von: ChrisD schrieb am Mi, 13 Februar 2013 18:30Mit dem Vorschlag von Andre könnte das ursprüngliche Problem (PRESENCE Fhem Absturz) unter Windows gelöst werden. Ich werde dies mal austesten.


Gelöst wird das Problem dadurch nicht, sondern nur umgangen. Das Problem währe weiterhin für FritzBox und lokalem Bluetooth-Ping relevant.

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)

iCure

Gibt es denn hierfür schon eine Lösung? Würde gerne den PC im Netzwerk erkennen, ob dieser an oder aus ist.

Danke!

ChrisD

Hallo,

Das Problem ist nicht wirklich gelöst, wenn du FHEM unter Windows laufen hast gibt es 2 Möglichkeiten:

- Cygwin Perl verwenden
- modifizierten presenced verwenden

Grüße,

ChrisD

Markus Bloch

Hallo zusammen,

das eigentliche Problem hierbei lautet "Windows" und lässt sich leider nicht wirklich beheben. Perl ist eine Sprache, die aus der Unix-Welt kommt und auch entsprechen auf Konzepte aus der Unix-Welt aufbaut (in diesem Fall das Forking). Windows ist jedoch ganz anders aufgebaut und unterstützt Unix-Konzepte nicht.

Entsprechende Perl-Interpreter für Windows implementieren daher die notwendigen Unix-Konzepte für Perl auf ihre eigene Weiße. Jeder Interpreter geht dabei einen anderen Weg.

Ich kann euch als Lösung nur empfehlen: Nehmt nicht Windows sondern Linux. Das ist die einzige wirklich dauerhaft brauchbare Lösung.

Im Hinblick dass das Forking über kurz oder lang in FHEM an mehreren Stellen zunehmen wird (meiner Meinung nach), führt dabei auch alsbald kein Weg dran vorbei.

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)

ChrisD

Hallo,

Ich verwende FHEM seit 2 Jahren unter Windows ohne Probleme mit der von Andre vorgeschlagenen Lösung.

Das Forken selbst ist übrigens nicht das Problem sondern das korrekte Beenden nach dem fork, hierbei wird nicht immer alles aufgeräumt (dies betrifft auch subprocess welches in der aktuellen Form unter Windows nicht funktioniert). Die Probleme mit fork betreffen nicht nur Windows, auch unter Linux, wie z.B. in diversen Threads bezüglich DbLog beschrieben, kommt es zu unerwünschten Effekten.

Einen Vorteil hat Linux auf jeden Fall: Wenn du Probleme mit FHEM hast wird nicht direkt die Schuld auf das Betriebssystem geschoben.

Grüße,

ChrisD

iCure

Danke für eure Antworten, ich habe allerdings keine Ahnung, was bei der Lösung von Andre zu tun ist.
Gibt es denn bereits irgendwo diese bearbeitete presenced?

Oder gibt es irgendwo außerhalb des Threads mehr dazu?

Grüße,
Marvin

ChrisD

Hallo,

Anbei findest du meine modifizierte Version von presenced. Sie muss getrennt von FHEM gestartet werden. Wenn du die .pl Erweiterung mit Perl verknüpft hast reicht ein Doppelklick auf die Datei, andernfalls musst du sie mit
perl presenceWin.pl
starten.

Da das PRESENCE-Modul presenced nur für Bluetooth verwenden kann und ich PRESENCE nicht verändern wollte, musst du die zu überwachenden Geräte als 'Bluetooth-Geräte' gegenüber PRESENCE deklarieren:
define P_meineFB PRESENCE lan-bluetooth 19:21:68:17:80:01 127.0.0.1:5111

Dabei muss du die IP-Adresse etwas anders angeben, aus 192.168.178.1 wird 19:21:68:17:80:01.

Grüße,

ChrisD



iCure

Hallo,

Vielen lieben Dank für das teilen und die Erklärung! Werde es morgen testen und freue mich schon drauf, dass fhem noch weitere Dinge für mich erledigt :)

Grüße,

Marvin

borzo83

Danke @ChrisD, mit deiner Lösung klappt es nun!

Spiff

Hi ChrisD,

ich bedanke mich auch für diese Lösung!

Gruß
Spiff

xotox91

Hallo Zusammen,

ich versuche FHEM unter Windows Server zum laufen zu bekommen. Mein selbst gebauter CUL macht mir dabei leider einen Strich durch die Rechnung. Nach dem Start von FHEM funktioniert er eine gewisse Zeit tadellos bis im LOG folgende Warnungen erscheinen:

2018.03.21 19:01:34 1: PERL WARNING: Error in PurgeComm at ./FHEM/DevIo.pm line 480.
Das Handle ist ung�ltig.

2018.03.21 19:01:34 1: PERL WARNING: Error in GetCommTimeouts at ./FHEM/DevIo.pm line 480.
Error Closing handle 460 for \\.\com2
Das Handle ist ung�ltig.

Error closing Read Event handle 444 for \\.\com2
Das Handle ist ung�ltig.


Kurze Zeit später lässt sich FHEM gar nicht mehr aufrufen. Nach meinen Recherchen ist der Betrieb von FHEM unter Windows die Ursache für dieses Übel. In diesem Thread wurde das ja bereits ein paar mal angesprochen. Meine Frage ist, hilft mir das modifizierte presenced Script von Chris um dieses Problem in den Griff zu bekommen? Falls ja könnt ihr mir in ein paar kurzen Stichpunkten erklären wie? Das Script einfach parallel zu FHEM laufen zu lassen hat nicht geholfen.
Tausend Dank für euer Hilfe!

ChrisD

Hallo,

Das Skript kann nur helfen wenn du das PRESENCE-Modul mit lan-ping im Einsatz hast und du die Definition so umänderst wie oben beschrieben. In allen anderen Fällen hilft es nicht.

Grüße,

ChrisD