DOIF fährt Jalousien runter und sofort wieder hoch

Begonnen von Vize, 21 Dezember 2015, 19:21:50

Vorheriges Thema - Nächstes Thema

Vize

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 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

Wuppi68

#1

(
  [{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
FHEM unter Proxmox als VM

Vize

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

Ellert

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}


Ellert

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 beschriebenen Verhalten von sunrise/sunset zusammen.

Gollum2

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.



"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."

Fhem auf Raspberry PI 2
HM LAN HM USB, CUL 433
IT Steckdosen, Diverse HM Aktoren und Sensoren, Yamaha Receiver, Panasonic TV, Harmony Hub

Vize

Hallo Gollum2,

Hier 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