Autor Thema: interessante DOIF Wifilight Konstellation  (Gelesen 743 mal)

Online herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5652
interessante DOIF Wifilight Konstellation
« am: 28 September 2015, 23:13:15 »
Hallo,

ich hab eben einen Zeitlang einen vermeintlichen Fehler DOIF/Wifilight gesucht und wollte die findings kurz teilen:

Ausgang
DOIF soll durch einen Bewegungsmelder einen Lampe anschalten wenn sie aus ist und nach 20 Sekunden wieder ausschalten.

Setup DOIF
Einschalten bei Bewegungsmelder "on" && lampe "off" && Dunkel.
Ausschalten 20 Sekunden nach "off" (wait)

In beiden Fällen Abfrage auf Bewegungsmelder "state"

Das hat manchmal nicht funktioniert und Wifilight hat komischerweise sogar angezeigt "Lampe an". zuerst habe ich einen Fehler in Wifilight gesucht.

Die Lösung war dann aber:
Bei mehrfachen Bewegungen im Raum entsteht folgendes,
- bm "on" && lampe "off" -> Lampe geht an
- bm sendet off, DOIF geht in waittimer 20 Sekunden
- erneute Bewegung, bm "on"
- 20 Sekunden um, DOIF schaltet Lampe ab sendet event "off".

Damit wird im DOIF Bedingung 1 (bm "on" && lampe "off") wahr WÄHREND wifilight innerhalb ReadingsUpdate ist und DOIF schaltet die Lampe SOFORT erneut an. Da sich wifilight noch im ReadingsUpdate (bzw an dessen ende) befindet kommt es zu dem undefinierten Zustand. fhem.pl verhindert glücklicherweise die Rekursion in der eventloop.

Lösung war danach simpel: auf Events des bm umzustellen.

Das soll jetzt wirklich kein pointing in Richtung DOIF (oder Wifilight? ;) ) sein - ich wüsste ad-hoc noch nicht einmal wie man das einfach verhindert.

Mir geht es darum aufzuzeigen eine derartige Situation entstehen kann und man das bei einer Fehlersuche (oder support für andere hier im forum) mit "auf der Uhr" haben sollte - gilt genauso bestimmt auch für andere module.

vg
joerg

Nachtrag:
doch - innerhalb von wifilight könnte ich das vmtl verhindern indem ich readingsEndUpdate an das Ende des "set" lege. Weiß nicht wie das bei anderen ist, ich zumindest habe bisher so eine Konstellation nicht durchdacht oder behandelt ...

Nachtrag 2:
nee, würde nicht reichen wenn das aus einer getimten queue kommt. readingsEndUpdate müsste dann auch der letzte Befehl in der timer routine sein ...
« Letzte Änderung: 28 September 2015, 23:24:07 von herrmannj »
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

 

decade-submarginal