Zweite Werteabfrage verzögert dürchführen

Begonnen von eldrik, 11 Mai 2014, 22:31:46

Vorheriges Thema - Nächstes Thema

eldrik

Hi,

Ich habe derzeit einen readingsProxy, welcher auf einen Pin meines 1 Wire ds2408 hört, ändert sich dieser wird eine Funktion über valueFn aufgerufen.

Über die Funktion Frage ich den einen Pin ab, an dem ein Reedkontakt einer Schiebetür hängt und an einem anderen Pin hängt ein weiterer Reedkontakt der Schiebetür, mit beiden zusammen stelle ich den Zustand der Tür fest, geschlossen, gekippt oder geöffnet.

Nun kann es jedoch sein, dass im Falle einer geöffneten Tür, der zweite Reedkontakt noch nicht den Wert geändert hat und der Status wird als Konsequenz nicht korrekt angezeigt.

Wie kann ich die Abfrage des zweiten Werts um einen Sicherheitspuffer hinauszögern?

Das ist mein derzeit verwendeter Code:

{ if ($VALUE == "0" && ReadingsVal("F2Contact_EG_rechts1","sensed.5","0") == "0"){"closed"} elsif ($VALUE == "1" && ReadingsVal("F2Contact_EG_rechts1","sensed.5","0") == "0"){"tilted"} elsif ($VALUE == "1" && ReadingsVal("F2Contact_EG_rechts1","sensed.5","0") == "1"){"open"}}

Über eure Unterstützung Würde ich mich freuen.

Greetz
Eldrik

justme1968

#1
ich würde das mit einer structue lösen die das ganze unabhängig von timing und reihenfolge macht.

- einen readingsProxy für den einen kontakt mit den zuständen open und closed
- einen zweiten readingsProxy für den anderen kontakt mit den zusänden tilted und closed
- eine structure die das ganze in die priorotät open tilted closed bringt

dann sind alle pins und devices unabhängig von einander und es spielt an keiner stelle mehr eine reihenfolge oder ein timing eine rolle.

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

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

Zrrronggg!

Der Code ist ja nicht vollständig.

Irgendwas läst diese Abfrage ja aus. Da gibt's irgendein "define statusabfrage notify irgendwas { if ($VALUE ==...", oder? Und warum schiebst du dann die ganze Anfrage nicht x Sekunden nach hinten indem du das define ein weiteres anlegen lässt?


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

eldrik

Zitat von: justme1968 am 11 Mai 2014, 22:41:21
ich würde das mit einer structue lösen die das ganze unabhängig von timing und reihenfolge macht.

- einen readingsProxy für den einen kontakt mit den zuständen open und closed
- einen zweiten readingsProxy für den anderen kontakt mit den zusänden tilted und closed
- eine structure die das ganze in die priorotät open tilted closed bringt

dann sind alle pins und devices unabhängig von einander und es spielt an keiner stelle mehr eine reihenfolge oder ein timing eine rolle.

gruss
  andre

Hey Andre,

also einen readingsProxy (Kontakt oben), der nur noch sich selbst auf 0 und 1 prüft und den Zustand closed und tilted erhält und einen zweiten readingsProxy (Kontakt unten) der die Zustände closed und open erhält?

Im structure dann über clientstate_priority open|tilted|closed die Priorität festlegen?!

Greetz
Eldrik

justme1968

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

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

eldrik

kurze Rückmeldung, habe das ganze wie von Andre vorgeschlagen implementiert und es funktioniert hervorragend  :)

Greetz
Eldrik

justme1968

ich hab gerade die readingsProxy seite im wiki angefangen.

vielleicht magst du ja deine anwendungen da rein setzen :)

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

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