FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Ximeng am 08 Februar 2016, 11:13:09

Titel: [Gelöst] DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: Ximeng am 08 Februar 2016, 11:13:09
Hallo zusammen,

Ich beschäftige mich seit ein paar Wochen mit FHEM und habe nun ein Problem, an dem ich nicht weiterkomme.  Hoffentlich kann mir hier jemand helfen...

Ich habe eine DOIF Abfrage und aus irgend einem Grund feuert die erste DOIF nicht immer.
Stattdessen wird die DOELSE  Bedingung aufgerufen. Aufgrund der Feuchtigkeit Messwerte dürfte dies allerdings eigentlich nicht sein (siehe angehängte Push Nachricht in der die aktuellen Werte stehen).
Das Problem tritt interessanterweise  nicht immer jedoch mehrfach die Stunde auf.

Dies ist die Push Nachricht die ich bekomme. Eigentlich hätte ich erwartet, dass die erste Bedingung des DOIF erfüllt ist...
Unbekannter Zustand bei Analyse der Feuchtigkeit im Keller

Wetter Taupunkt = 6.1%
Buero H=58%  TP=10.9%
Mitte H=56%  TP=10.7%
Waschraum H=59%  TP=10.5%



Und hier ist meine DOIF
define KL_Humidity_Analysis DOIF (\
([KL_UmweltBuero:humidity] <= 60) &&\
([KL_UmweltKLMitte:humidity] <= 60) &&\
([KL_UmweltWaschraum:humidity] <= 60)\
)\
(\
set KL_Humidity Ok\
)\
DOELSEIF\
(\
(\
   ([KL_UmweltBuero:humidity] > 60) or\
   ([KL_UmweltKLMitte:humidity] > 60) or\
   ([KL_UmweltWaschraum:humidity] > 60)\
) && \
(\
   (([KL_UmweltBuero:dewpoint] - [Wetter:dewpoint]) < 3.0) &&\
   (([KL_UmweltKLMitte:dewpoint] - [Wetter:dewpoint]) < 3.0) &&\
   (([KL_UmweltWaschraum:dewpoint] - [Wetter:dewpoint]) < 3.0) \
)\
)\
(\
set KL_Humidity High\
)\
DOELSEIF\
(\
(\
   ([KL_UmweltBuero:humidity] > 60) or\
   ([KL_UmweltKLMitte:humidity] > 60) or\
   ([KL_UmweltWaschraum:humidity] > 60) \
) && \
(\
   (([KL_UmweltBuero:dewpoint] - [Wetter:dewpoint]) >= 3.0) or\
   (([KL_UmweltKLMitte:dewpoint] - [Wetter:dewpoint]) >= 3.0) or\
   (([KL_UmweltWaschraum:dewpoint] - [Wetter:dewpoint]) >= 3.0) \
)\
)\
(\
set KL_Humidity Ventilation\
)\
DOELSEIF\
(\
(\
   ([KL_UmweltBuero:humidity] >= 65) or\
   ([KL_UmweltKLMitte:humidity] >= 65) or\
   ([KL_UmweltWaschraum:humidity] >= 65)\
) &&\
(\
   (([KL_UmweltBuero:dewpoint] - [Wetter:dewpoint]) < 3.0) &&\
   (([KL_UmweltKLMitte:dewpoint] - [Wetter:dewpoint]) < 3.0) &&\
   (([KL_UmweltWaschraum:dewpoint] - [Wetter:dewpoint]) < 3.0) \
)\
)\
(\
set KL_Humidity ElectricDehydration\
)\
DOELSE\
(\
{\
  pushover("Unbekannter Zustand ...",\
     "Unbekannter Zustand bei Analyse der Feuchtigkeit im Keller \n\n".\
     "Wetter Taupunkt = ".ReadingsVal("Wetter","dewpoint","0")."% \n".\
     "Buero H=".ReadingsVal("KL_UmweltBuero","humidity","0")."%  TP=".ReadingsVal("KL_UmweltBuero","dewpoint","0")."%\n".\
     "Mitte H=".ReadingsVal("KL_UmweltKLMitte","humidity","0")."%  TP=".ReadingsVal("KL_UmweltKLMitte","dewpoint","0")."%\n".\
     "Waschraum H=".ReadingsVal("KL_UmweltWaschraum","humidity","0")."%  TP=".ReadingsVal("KL_UmweltWaschraum","dewpoint","0")."%\n",\
   "APP1");;;;\
}\
set KL_Humidity undefined;;\
)\


Vielen Dank für die Hilfe!
Titel: Antw:DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: Ximeng am 08 Februar 2016, 23:41:32
Keiner eine Idee?  :(
Titel: Antw:DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: moonsorrox am 09 Februar 2016, 05:15:34
am besten du verschiebst diesen Beitrag in das DOIF (http://forum.fhem.de/index.php/board,73.0.html) Untergeordnete Board
Titel: Antw:DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: MartinMuc am 09 Februar 2016, 08:19:48
Dein Problem ist das der Taupunkt überall als Trigger definiert ist nur im ersten Fall nicht, vermutlich hat der Taupunkt getriggert und dann fällt er unten durch.

Titel: Antw:DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: Ximeng am 10 Februar 2016, 01:10:31
Thx, genau das war die Ursache.
Allerdings verstehe ich die Logig des Verhaltens nicht ganz. Es müsste doch trotzdem die erste Bedingung erfüllt sein...

Danke und Gruß
Titel: Antw:DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: Damian am 10 Februar 2016, 12:14:15
Zitat von: Ximeng am 10 Februar 2016, 01:10:31
Thx, genau das war die Ursache.
Allerdings verstehe ich die Logig des Verhaltens nicht ganz. Es müsste doch trotzdem die erste Bedingung erfüllt sein...

Danke und Gruß

Auszug aus der Cammandref:

ZitatDie Angaben werden immer von links nach rechts abgearbeitet. Zu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste, für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.

Gruß

Damian
Titel: Antw:[Gelöst] DOIF, unverständlich warum Bedingung nicht feuert
Beitrag von: Ximeng am 10 Februar 2016, 21:36:54
Vielen Dank, das hatte ich irgendwie nicht so interpretiert...!

Ich habe nun einfach ein "([Wetter:dewpoint] < 100.0)" in die erste Bedingung eingebaut...

Gruß