[Gelöst] DOIF Ausgabeformatierung funktioniert nicht mehr

Begonnen von mpmd, 08 April 2016, 08:03:35

Vorheriges Thema - Nächstes Thema

mpmd

Hallo Zusammen,

zur Steuerung meines Küchenlichts verwende ich ein DOIF welches auf Bewegung triggern soll, aber beim Erreichen eines Lichtschwellwertes nicht schaltet und abschalten soll, wenn eine zweite Grenze überschritten wird.

Modul hat monatelang tadellos funktioniert, seit ca. Anfang April werden die Helligkeit nicht mehr wie gewünscht berücksichtigt.

Die Lampe schaltet nicht aus beim Überschreiten der Luminance > 15, wie gewünscht und setzt trotzdem den Resttimer, obwohl die Bedingung nicht erfüllt ist.

([EG_KI_Motionsensor] eq "open" && [?EG_KI_Fenster_FTK:luminance:d] < 8) (set EG_KI_Lampe on) DOELSEIF ([EG_KI_Fenster_FTK:luminance:d] >15 || [EG_KI_Motionsensor] eq "closed") (set EG_KI_Lampe off)



Device EG_KI_Motionsensor 2016-04-08 07:50:24
cmd_count                                 1                              2016-04-08 07:49:45
cmd_event                                 EG_KI_Motionsensor 2016-04-08 07:49:45
cmd_nr                                      2                             2016-04-08 07:49:45
e_EG_KI_Fenster_FTK_luminance 55 %                       2016-04-08 07:50:24
e_EG_KI_Motionsensor_STATE      open                       2016-04-08 07:50:24
state                                          cmd_2                     2016-04-08 07:49:45
wait_timer                                  08.04.2016 08:00:36 cmd_2 EG_KI_Motionsensor 2016-04-08 07:57:36

Ich bin der Meinung das Ausgabeformatierung nicht berücksichtigt wird.

Vielleicht hat einer von Euch eine Idee.

Einen schönen Tag noch.

CoolTux

Bitte sei so nett und mache ein


list EG_KI_Motionsensor


Und schreibe die Ausgabe hier in Codetags.



Vielen Dank
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

mpmd

Habe gerade herausgefunden wie das funktioniert.

Internals:
   DEF        ([EG_KI_Motionsensor] eq "open" && [?EG_KI_Fenster_FTK:luminance:d] < 8) (set EG_KI_Lampe on) DOELSEIF ([EG_KI_Fenster_FTK:luminance:d] >15 || [EG_KI_Motionsensor] eq "closed") (set EG_KI_Lampe off)
   NAME       KI_Lampe_DOIF
   NR         430
   NTFY_ORDER 50-KI_Lampe_DOIF
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-04-08 08:59:20   Device          EG_KI_Motionsensor
     2016-04-08 08:00:36   cmd_count       2
     2016-04-08 08:00:36   cmd_event       EG_KI_Motionsensor
     2016-04-08 08:00:36   cmd_nr          2
     2016-04-08 08:59:19   e_EG_KI_Fenster_FTK_luminance 94 %
     2016-04-08 08:59:20   e_EG_KI_Motionsensor_STATE open
     2016-04-08 08:00:36   state           cmd_2
     2016-04-08 08:59:20   wait_timer      08.04.2016 09:02:20 cmd_2 EG_KI_Motionsensor
   Condition:
     0          InternalDoIf($hash,'EG_KI_Motionsensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "open" && ReadingValDoIf($hash,'EG_KI_Fenster_FTK','luminance','(-?\d+(\.\d+)?)','',AttrVal($hash->{NAME},'notexist',undef)) < 8
     1          ReadingValDoIf($hash,'EG_KI_Fenster_FTK','luminance','(-?\d+(\.\d+)?)','',AttrVal($hash->{NAME},'notexist',undef)) >15 || InternalDoIf($hash,'EG_KI_Motionsensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
   Devices:
     0           EG_KI_Motionsensor
     1           EG_KI_Fenster_FTK EG_KI_Motionsensor
     all         EG_KI_Motionsensor EG_KI_Fenster_FTK
   Do:
     0:
       0          set EG_KI_Lampe on
     1:
       0          set EG_KI_Lampe off
   Helper:
     event      motion: open
     globalinit 1
     last_timer 0
     sleepdevice EG_KI_Motionsensor
     sleepsubtimer 0
     sleeptimer 1
     timerdev   EG_KI_Motionsensor
     timerevent motion: open
     triggerDev EG_KI_Motionsensor
     timerevents:
       motion: open
     triggerEvents:
       motion: open
   Internals:
     0           EG_KI_Motionsensor:STATE
     1           EG_KI_Motionsensor:STATE
     all         EG_KI_Motionsensor:STATE
   Itimer:
   Readings:
     0           EG_KI_Fenster_FTK:luminance
     1           EG_KI_Fenster_FTK:luminance
     all         EG_KI_Fenster_FTK:luminance
   Regexp:
     0:
     1:
     All:
   State:
   Trigger:
Attributes:
   do         resetwait
   repeatsame 5:2
   verbose    5
   wait       0:180


Nach genauer Betrachtung des DOIF bin ich der Meinung, das mir der "resetwait" in die Parade fährt und somit das Ausschalten verhindert, da die Wartezeit immer wieder verlängert wird. Ich habe das Attr "do resetwait" gelöscht und werde die ganze Sache beobachten.

Morgen werde ich dazu eine Rückmeldung geben.

mpmd

Also die Rückmeldung. Die Auswertung der Ausgabeformatierung funktioniert einwandfrei.
"restwait" hat das Verhalten maßgeblich beeinflusst, sodass es für mich wirkte dass der Dezimalwert nicht ausgewertet wird.

Habe mein DOIF folgendermaßen erweitert, um beim Überschreiten eines Lichtschwellwertes das Ausschaltkommando abzusetzen.

([EG_KI_Fenster_FTK:luminance:d] >50 && [?EG_KI_Lampe] eq "on") (set EG_KI_Lampe off) DOELSEIF ([EG_KI_Motionsensor] eq "open" && [?EG_KI_Fenster_FTK:luminance:d] < 8 && [?EG_KI_Lampe] eq "off") (set EG_KI_Lampe on) DOELSEIF (([EG_KI_Fenster_FTK:luminance:d] >15 || [EG_KI_Motionsensor] eq "closed") && [?EG_KI_Lampe] eq "on") (set EG_KI_Lampe off)