OWServer/OWDevice nonblocking patch

Begonnen von justme1968, 28 November 2013, 21:50:55

Vorheriges Thema - Nächstes Thema

eppi

Hallo Andre
Ich habe verschiedene probiert, zuerst
    my $nfound = select($rout=$rin, undef, $eout=$ein, 9);
    InternalTimer(gettimeofday()+15, "OWServer_TimeoutChild", $pid, 0);


dann:
    my $nfound = select($rout=$rin, undef, $eout=$ein, 15);
    InternalTimer(gettimeofday()+20, "OWServer_TimeoutChild", $pid, 0);

gebracht hat es nichts - immer noch gleich.....

mit "get Ibutton_Dani id" sehe ich keine Auffälligkeiten, es liefert mir lediglich dir ID des iButton zurück.
Gruss Dani

justme1968

kommt die id auch zurück wenn der ibutton nicht angesteckt ist?

geht es wenn nonblocking deaktiviert wird?

was steht dann im status?

und was steht im log (bei verbose 5)?

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

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

justme1968

hast du das 'get <ibutton> id' gemacht wenn der ibutton nicht angesteckt ist? dann kommt trozdem die id zurück?

ich weiss nicht genau wie sich owfs verhält wenn ein nicht angestecker ibutton abgefragt wird. wenn für id ein undefined zurück kommt kann das modul zur zeit nicht unterscheiden ob das lesen fehlgeschlagen ist weil owfs nicht erreichbar ist oder weil der ibutton nicht steckt.

probiere mal die angehängte version. damit wird bei den devices die id unterstützen im 'read failed' fall ein 'present: 0' in state geschrieben. ich vermute das sollte da stehen wenn der ibutton nicht gesteckt ist.

die alternative wäre mit stateFormat das reading present für STATE zu verwenden.

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

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

eppi

Zitatprobiere mal die angehängte version. damit wird bei den devices die id unterstützen im 'read failed' fall ein 'present: 0' in state geschrieben. ich vermute das sollte da stehen wenn der ibutton nicht gesteckt ist.
Hallo Andre
cool , funktioniert!!! Es wird present 0 geschrieben, wenn der iButton nicht steckt.
Kannst du das so einchecken?

Danke vielmals für deine wertvolle Unterstützung!
Gruss Dani

eppi

Hallo Andre
Ich war wohl etwas voreilig... Ich beobachte, dass zwar der State beim Abziehen des iButton auf "present: 0" wechselt, aber das Reading "present" bleibt weiterhin auf "1".
Ich habe einige notifys die das Reading present triggern, die jetzt nicht mehr funktionieren.

Danke und Gruss Dani

justme1968

ja. das war erst mal nur der test um zu sehen woran es liegt.

den fix muss ich weiter oben einbauen damit ich für die ibuttons unterscheiden kann ob nichts zurückgekommen ist weil der ibutton nicht da ist oder owfs hängt.

kommt nachher.

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

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

justme1968

#51
so... ich habe es jetzt so umgestellt das es auch mit den ibuttons wieder funktionieren sollte.

das problem war das das lesen von einem nicht eingesteckten ibutton ebenfalls ein undefined zurück liefert. genau so wie ein nicht erreichbares owfs.


  • statt dem internal value READ_FAILED in OWServer gibt es jetzt jeweils in NR_READ_FAILED als zähler und ein LAST_READ_FAILED als flag das das letzte lesen schief gegangen ist.
  • NR_READ_FAILED und LAST_READ_FAILED gibt es jetzt jeweils in OWServer und jedem OWDevice
  • zusätzlich wird das LAST_READ_FAILED jetzt verwendet um beim ersten fehlgeschlagenen lesen ein disconnect vom owfs zu machen. sobald ein lesen per fork wieder geklappt hat wird wieder ein connect gemacht.

@ollir: mit dem letzen punkt sollte fhem jetzt auch ein reboot des owfs rechners überstehen. ich habe es gerade drei mal mit erfolgreich einem raspberry pi probiert. alle tests vorher waren auf einem mac da geht es seltsamer weise auch ohne diese änderung.

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

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

eppi

Hallo Andre
Vorab wünsche ich dir frohe Weihnachten. Ich habe heute deine neuste Version von OWServer & OWDevice getestet, jedoch reagieren meine iButton gar nicht mehr. Das heisst, es wird nicht erkannt, ob einer steckt oder entfernt wurde. Das Reading state und present bleiben immer gleich > keine Reaktion.
Wie kann ich dir helfen, dem Problem auf die Schliche zu kommen?
Viele Grüsse, Dani

justme1968

mein fehler. copy&paste feher von alarm nach id. hab es repariert und die version oben ausgetauscht.

bitte teste es noch mal.

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

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

eppi

Wauuuuu. GANZ GROSSES KINO!!! Funktioniert nun einwandfrei!
Herzlichen Dank!
Gruss Dani

Dr. Boris Neubert

Zitat von: eppi am 25 Dezember 2013, 10:46:10
Funktioniert nun einwandfrei!

Andre, soll ich die beiden Dateien aus Antwort #51 einchecken?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

von meiner seite aus ja.

taptalk sagt mir es ist #52. aber ich glaube wir meinen den gleichen: http://forum.fhem.de/index.php/topic,16945.msg118253.html#msg118253.

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

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

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

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

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

ollir

Hallo Andre,

OWDevice.pm und OWServer.pm 4458 funktionieren super.
Seit dem disconnect/connect des owfs hat es funktioniert.

Jetzt hängt kein FHEM wenn der owfs nicht mehr über Netzwerk erreichbar ist.

SUPER und vielen Dank.

VG
Olaf