DoIf klappt nur manchmal... ¿¿¿

Begonnen von Ximeng, 02 September 2017, 17:22:48

Vorheriges Thema - Nächstes Thema

Ximeng

Hallo zusammen,

ich habe zwei etwas umfangreichere DOIFS um zwei verschiedene Rolladen zu steuern. Leider funktioniert eine der beiden DOIFs manchmal nicht (alle paar Tage) und ich habe keinen Schimmer warum!

Diese hier funktioniert tadellos!
define WZ_RolloGartenLinks_AufZu DOIF (  \
  (\
    ([Tageslicht:state] eq "hell") && \
    (([LichtWetter:azimuth] < 238.0) or \
     ([WZ_Beschattung:state] eq "off")) &&\
    ([WZ_rolloAutoMode:state] eq "on")\
  )\
)\
(\
  set WZ_RolloGartenLinks 100;;\
)\
\
\
\
DOELSEIF\
(\
  ([Tageslicht:state] eq "dunkel") &&\
  ([WZ_rolloAutoMode:state] eq "on")\
)  \
(\
  set WZ_RolloGartenLinks 0;;\
)\
\
\
\
DOELSEIF\
(\
  ([WZ_Beschattung:state] eq "on") &&\
  ([LichtWetter:azimuth] >= 238.0) &&\
  ([WZ_rolloAutoMode:state] eq "on")\
) \
(\
  set WZ_RolloGartenLinks 50\
)\
\
\
\
DOELSE\
(\
)
attr WZ_RolloGartenLinks_AufZu cmdState open|closed|shadow|ok
attr WZ_RolloGartenLinks_AufZu room 1.0_Wohnzimmer
attr WZ_RolloGartenLinks_AufZu wait rand(180):rand(180)


und diese wird ab und an nicht aufgerufen...
define WZ_RolloSeitentuer_AufZu DOIF (  \
  ([Tageslicht:state] eq "hell") && \
  (([LichtWetter:azimuth] >125.0) or\
   ([WZ_Beschattung:state] eq "off")) &&\
  ([WZ_rolloSeitentuerLastValue:state] ne "100") &&\
  ([WZ_rolloAutoMode:state] eq "on")\
)\
(\
  set WZ_rolloSeitentuerLastValue 100;;\
  set WZ_RolloSeitentuer 100;;\
)\
\
\
\
DOELSEIF\
(\
  ([WZ_FensterKontaktSeitentuer:state] eq "open") &&\
  ([WZ_rolloSeitentuerLastValue:state] ne "100")\
)\
(\
  set WZ_rolloSeitentuerLastValue 100;;\
  set WZ_RolloSeitentuer 100;;\
)\
\
\
\
DOELSEIF\
(\
  ([Tageslicht:state] eq "dunkel") &&\
  ([WZ_FensterKontaktSeitentuer:state] eq "closed") &&\
  ([WZ_rolloSeitentuerLastValue:state] ne "0") &&\
  ([WZ_rolloAutoMode:state] eq "on")\
)  \
(\
  set WZ_rolloSeitentuerLastValue 0;;\
  set WZ_RolloSeitentuer 0;;\
)\
\
\
\
DOELSEIF\
(\
  ([WZ_Beschattung:state] eq "on") &&\
  ([LichtWetter:azimuth] <= 125.0) &&\
  ([WZ_rolloSeitentuerLastValue:state] ne "50") &&\
  ([WZ_rolloAutoMode:state] eq "on")\
)\
(\
  set WZ_rolloSeitentuerLastValue 50;;\
  set WZ_RolloSeitentuer 50;;\
)\
\
\
\
DOELSEIF\
(\
  (([WZ_RolloSeitentuer:state] eq "MISSING ACK") or\
   ([WZ_RolloSeitentuer:state] eq "unreachable")) &&\
  ([WZ_rolloAutoMode:state] eq "on") &&\
  ([+300])\
)\
(\
  {\
   pushover("Seitentür Error",\
      "Last Value = ".ReadingsVal("WZ_rolloSeitentuerLastValue","state","0")."\n".\
      "Seitentür State = ".ReadingsVal("WZ_RolloSeitentuer","state","0")."\n",\
    "APP1");;;;\
  }\
  set WZ_RolloSeitentuer [WZ_rolloSeitentuerLastValue:state];;\
)\
\
\
DOELSE\
(\
)
attr WZ_RolloSeitentuer_AufZu cmdState open|open_manual|closed|shadow|errorHandling|ok
attr WZ_RolloSeitentuer_AufZu room 1.0_Wohnzimmer
attr WZ_RolloSeitentuer_AufZu wait rand(180):0:rand(180):0:0


Das letzte mal hat es am 1.09. morgens nicht geklappt. Ich habe dann händisch um 7:35 das Rollo (per FHEM Oberfläche) hochgefahren. Dabei habe ich alle einzelnen Parameter überprüft, alle Bedinungen waren erfüllt. Trotzdem ist nichts passiert...  :-\

Heute hat wieder alles geklappt... Im Log steht dazu folgendes:
Zitat2017.09.01 07:02:41 3: CUL_HM set WZ_RolloGartenLinks 100
2017.09.01 07:35:07 3: CUL_HM set WZ_RolloSeitentuer on
2017.09.01 20:38:35 3: CUL_HM set WZ_RolloSeitentuer 0
2017.09.01 20:39:44 3: CUL_HM set WZ_RolloGartenLinks 0
2017.09.02 01:10:15 3: myJeeLink: Unknown code OK LS 13 0 10 150 4 16 30, help me!
2017.09.02 07:01:00 3: CUL_HM set WZ_RolloGartenLinks 100
2017.09.02 07:03:50 3: CUL_HM set WZ_RolloSeitentuer 100

Hat zufällig jemand eine Idee?

Ellert

Schon mal do always probiert?

Wenn's nicht hilft und  Du dem Problem auf die Spur kommen möchtest, könntest mit DOIFtools loggen, dann hast Du ein umfangreiches Log, dass Du analysieren kannst.

https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche

https://wiki.fhem.de/wiki/DOIFtools#Erstellen_eines_Debug-Logfile

Ximeng

Danke für die Tipps. Ich versuche noch mal das wait wegzulassen, vielleicht liegt es auch daran...
Wenn das nicht hilft, schaue ich mir deine Links an!

Ximeng

es scheint am wait() gelegen zu haben. Ohne wait tritt der Fehler nicht mehr aus  :)