FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Vize am 21 Dezember 2015, 19:21:50

Titel: DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Vize am 21 Dezember 2015, 19:21:50
Guten Abend,

für zwei Rollos im Obergeschoß habe ich folgende zeitabhängige Schaltung mittels DOIF eingerichtet.

([{sunrise(540,"07:30","08:00")}-{sunset(0,"16:30","22:45")}|8] or [{sunrise(0,"09:00","09:30")}-{sunset(0,"16:30","23:00")}|7]) (set (gz|sz).*rollo auf) DOELSE (IF ([Wetter:fc2_low_c] < 0) (set (gz|sz).*rollo 20) ELSE (set (gz|sz).*rollo:FILTER=level>0 zu))

Die Rollos sollen also zunächst morgens auf- und abends wieder zufahren, abhängig von Sonnenauf- und -untergang.
Wie man sieht habe ich im DOELSE-Fall für das Zufahren noch eine Art "Frostschutz" als IF...ELSE Fall mit eingebaut.

Nun ist es so, dass die Rollos heute z.B. um 16:56 den Schaltbefehl zum Zufahren bekommen haben und sofort danach den Befehl zum Auffahren. Sie sind also offen geblieben...und das DOIF steht im state cmd_1...
Logfile:
2015.12.21 16:56:52 3: CUL_HM set gz_213_rollo off
2015.12.21 16:56:52 3: CUL_HM set sz_208_rollo off
2015.12.21 16:56:52 3: CUL_HM set gz_213_rollo on
2015.12.21 16:56:52 3: CUL_HM set sz_208_rollo on

Gestern Abend z.B. sind sie aber brav zugefahren...vorgestern wieder nicht?!?

moonsorrox hat hier (http://forum.fhem.de/index.php/topic,45941.msg377081.html#msg377081) geschrieben, dass es unter Umständen Probleme macht, eine "IF-ELSE-Verschachtelung" im DOELSE-Teil einzubauen.

Ist das wirklich so, und muss ich hier auch den Weg über DOELSEIF gehen?
Ich bin dankbar für jegliche Aufklärungshilfe!

Gruß
Andreas
Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Wuppi68 am 21 Dezember 2015, 20:34:20

(
  [{sunrise(540,"07:30","08:00")}-{sunset(0,"16:30","22:45")}|8] or
  [{sunrise(0,"09:00","09:30")}-{sunset(0,"16:30","23:00")}|7]
) (set (gz|sz).*rollo auf)
DOELSE
  (
    IF ([Wetter:fc2_low_c] < 0)
      (set (gz|sz).*rollo 20)
    ELSE (set (gz|sz).*rollo:FILTER=level>0 zu)
  )


Lesefreundlicher

geht auch mit der Formatierung im DEF Editor

mach mal ein list vom DOIF ...

da sieht man ein wenig mehr von den "Variablen"

btw: sunset in D ist spätestens um 22:01 in Flensburg
Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Vize am 22 Dezember 2015, 08:28:50
Zitat von: Wuppi68 am 21 Dezember 2015, 20:34:20
mach mal ein list vom DOIF ...

Moin,

wird schwierig, da ich gestern das Ganze doch noch mit DOELSEIF-Bedingungen umgestrickt habe, um diese Variante zu testen.
Mal schauen, ob ich es die Tage nochmal zurück stelle...

Zitatbtw: sunset in D ist spätestens um 22:01 in Flensburg

"Bürgerlicher" Sonnenuntergang ist bei uns spätestens 22:38 - sunrise/sunset ohne Zusatz nutzt ja wohl diesen Wert.
Wollte nur erstmal auf Nummer sicher gehen...  ;)

Gibt es sonst noch Vermutungen, Ideen zum von mir beschriebenen Verhalten?

Gruß
Andreas
Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Ellert am 22 Dezember 2015, 09:06:36
Ich schliesse mich dem Wunsch nach einer lesefreundlichen Darstellung an: Hier gibt es ein paar Tips zum Def-Editor mit der codemirror-Erweiterung.

Ich denke nicht, dass IF das Problem ist.

Um die Ursache zu weiter zu analysieren, könntest Du alle Events des DOIF mit loggen.

Vielleicht mit einem notify
define ny notify <deinDOIFname>.* {Log 1, $NAME.": ".$EVENT}

Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Ellert am 22 Dezember 2015, 09:20:59
ZitatGibt es sonst noch Vermutungen, Ideen zum von mir beschriebenen Verhalten?

Eventuell hängt es mit dem hier http://forum.fhem.de/index.php/topic,45739.msg374960.html#msg374960 (http://forum.fhem.de/index.php/topic,45739.msg374960.html#msg374960) beschriebenen Verhalten von sunrise/sunset zusammen.
Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Gollum2 am 22 Dezember 2015, 15:12:31
moin..

ich vermute es liegt an der sofortigen Neuberechnung der Zeiten (sunrise und sunset) nach Aufführung.
Dadurch wird das DOIF zweimal direkt hintereinander ausgeführt....

Ich habe das anders realisiert (zwei Funktionen) und habe auch das Problem, das - je nachdem dem ob die Tage kurzer oder länger werden - einer der beiden zweimal ausgeführt wird.
Bei zwei Funktionen ist es aber nicht so schlimm, da dort im schlimmsten Fall nur der gewünschte Befehl zweimal gesendet wird.

Also meine Empfehlung: Mach zwei Funktionen - Eine für das auffahren und eine für das zufahren der Fenster.



Titel: Antw:DOIF fährt Jalousien runter und sofort wieder hoch
Beitrag von: Vize am 22 Dezember 2015, 17:18:28
Hallo Gollum2,

Hier (http://forum.fhem.de/index.php/topic,45941.msg378324.html#msg378324) habe bei nem analogen Fall geschrieben, dass ich immer noch Probleme mit der Steuerung habe.

Hast du bei dir jeweils ein DOIF für morgens und ein DOIF für abends angelegt, oder wie hast du es realisiert?

Gruß
Andreas