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!
Keiner eine Idee? :(
am besten du verschiebst diesen Beitrag in das DOIF (http://forum.fhem.de/index.php/board,73.0.html) Untergeordnete Board
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.
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ß
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
Vielen Dank, das hatte ich irgendwie nicht so interpretiert...!
Ich habe nun einfach ein "([Wetter:dewpoint] < 100.0)" in die erste Bedingung eingebaut...
Gruß