Ich brauche mal einen Tipp für ein funktionierendes DOIF

Begonnen von moonsorrox, 05 Dezember 2016, 13:47:29

Vorheriges Thema - Nächstes Thema

moonsorrox

Hintergrund ist jetzt zu Weihnachten und auch in der dunklen Jahreszeit nutze ich meine Terrassenbeleuchtung.

Ich habe folgendes DOIF welches auch so bisher funktionierte.
Funktion ist, wenn der Rollladen (in dieser Zeit ja sehr früh) unten ist und ich die Terrassentür öffne, geht der Rollladen hoch und das Licht auf der Terrassen geht an, dass funktioniert auch alles sehr gut, abgefragt wird auch noch ein DOIF für das Tageslicht welches mir "hell" oder "dunkel" sagt.
So, nun mache ich die Terrassentür zu und der Rollladen fährt wieder runter und das Terrassenlicht (set NI3_LichtTerrasse off) geht aus.
Soweit so gut
Hier der Code aus dem DEF des Rollladen Terrasse
([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([[du_RolloZeitWZ_hoch]|8] or [[du_RolloZeitWZ_hoch_WoE]|7])) (set RollladenWZT on)
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state] eq "closed" and [{sunset("CIVIL",-100,"16:35","22:20")}|78])) (set RollladenWZT off)
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "open" and ([du_Tageslicht:state] eq "dunkel")) (set RollladenWZT on,set NI3_LichtTerrasse on)
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00]) (set RollladenWZT off,set NI3_LichtTerrasse off)


jetzt ist das Licht aber vorher durch die Weihnachtsschaltung oder auch durch meine Anwesenheitssimulation schon "AN" das Rollladen DOIF triggert nun gegen 17:00 Uhr einmal und das Licht geht sofort "AUS" was jetzt so nicht gewollt ist...

Hier der Code aus dem DEF von der Terrassenbeleuchtung zu Weihnachten
([du_Modus_TerrassenBeleuchtung] eq "Weihnachten" and ([{sunset("CIVIL",-600,"16:30","22:30")}|8] or [{sunset("CIVIL",-800,"16:30","22:20")}|7]) and ($month==12 or $month==1)) (set NI3_LichtTerrasse on, ({Log 1, "TerrassenBeleuchtung Weihnachten - EIN"})) DOELSEIF ([([22:55]+(60*int(rand(120))))] and ($month==12 or $month==1)) (set NI3_LichtTerrasse off, ({Log 1, "TerrassenBeleuchtung Weihnachten - AUS"}))

Der Code für die Simulation ist ähnlich. aber auch hier geht das Licht aus.

Ich suche jetzt nach einer Lösung wie ich das richtig hinbekomme, dass jetzt zur dunklen Jahreszeit die Terrassenbeleuchtung nicht ausgeht... Ich habe schon den Status mit rein gebracht aber er triggert trotzdem aus dem Rollladen DOIF auch das "?" hat es nicht gebracht.

Ich hoffe hier hat jemand einen Ansatz für mich  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Per

Zitat von: moonsorrox am 05 Dezember 2016, 13:47:29Ich hoffe hier hat jemand einen Ansatz für mich
Dein DOIF hat ja keine Ahnung, dass das Licht an anderer Stelle gewollt (!) eingeschaltet wurde.
Zwei Ansätze:
- alles, was das Licht betrifft in ein DOIF
- ein weiteres DOIF entscheiden lassen, welche Automatik (Weihnachtslicht, Anwesenheit oder o.a.) den Vorrang hat.

moonsorrox

Das weiß ich ja das dieses DOIF mit dem anderen nicht kommuniziert, deshalb will ich es ja auch irgendwie zusammen bringen.

Licht ist eigentlich immer getrennt von den Rollläden in div. DOIFs aber hier muss es ja miteinder arbeiten. Deshalb ja auch meine Frage weil ich keinen Ansatz habe das miteinander in dem Fall zu kombinieren  :-\
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Yil

Hallo Per,

ZitatZwei Ansätze:
- alles, was das Licht betrifft in ein DOIF
- ein weiteres DOIF entscheiden lassen, welche Automatik (Weihnachtslicht, Anwesenheit oder o.a.) den Vorrang hat.

Interessiert mich auch. Kannst Du dafür mal ein Beispiel geben? Das könnte auch mein Problem lösen.

VG Yil
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi

Brockmann

Zitat von: moonsorrox am 05 Dezember 2016, 13:47:29
Ich hoffe hier hat jemand einen Ansatz für mich  ;)
Frag in dem Terassen-Beleuchtungs-DOIF zusätzlich den Status des Weihnachtsbeleuchtungs-DOIFs ab, so dass das Terassen-DOIF das Licht nur ausschalten darf, wenn es nicht durch das Weihnachts-DOIF eingeschaltet wurde. Mit cmdstate kannst Du ja "sprechende" Stati definieren, um Dich nicht mit cmd1 und cmd2 rumschlagen zu müssen...

moonsorrox

Zitat von: Brockmann am 06 Dezember 2016, 08:51:30
Frag in dem Terassen-Beleuchtungs-DOIF zusätzlich den Status des Weihnachtsbeleuchtungs-DOIFs ab

d.h ich müsste diesen DOELSEIF Zweig trennen..?
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00]) (set RollladenWZT off,set NI3_LichtTerrasse off)

und ihn zweimal schreiben dann kann ich auch die Terrassenbeleuchtung extra abfragen

DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and [WZ_TK_Terrasse:state] eq "closed" and [?du_Tageslicht:state] eq "dunkel" and [?16:50-02:00]) (set RollladenWZT off)
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and [WZ_TK_Terrasse:state] eq "closed" and [?du_Tageslicht:state] eq "dunkel" and [?16:50-02:00]) (set NI3_LichtTerrasse off)


das hatte ich so noch nicht und werde es gleich mal einbauen, manchmal fehlt der Denkanstoß ich bin mal gespannt ob das so geht

dann in den 2. DOELSEIF Zweig den Status für die Terrassenbeleuchtung.
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and [WZ_TK_Terrasse:state] eq "closed" and [?du_Tageslicht:state] eq "dunkel" and [?LichtTerrasse:state] ne "on" and [?16:50-02:00]) (set NI3_LichtTerrasse off)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Brockmann

Nee, so gehts nicht. Das DOIF würde immer nur den ersten Zweig ausführen.

Mach aus
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00]) (set RollladenWZT off,set NI3_LichtTerrasse off)

das hier
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00])
  set RollladenWZT off,
  IF ([du_Modus_TerrassenBeleuchtung] ne "Weihnachten")(set NI3_LichtTerrasse off)


Dann wird das Rollo immer bewegt, aber das Licht wird nur ausgeschaltet, wenn nicht Weihnachten ist.
Alternativ, aber IMHO unübersichtlicher:


DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00] and [du_Modus_TerrassenBeleuchtung] eq "Weihnachten")
  (set RollladenWZT off)
DOELSEIF ([?du_RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TK_Terrasse:state]) eq "closed" and ([?du_Tageslicht:state] eq "dunkel") and [?16:50-02:00])
  (set RollladenWZT off,set NI3_LichtTerrasse off)

Dabei diese Reihenfolge einhalten, also erst die speziellere Kondition, dann die allgemeinere!

Ungetestet und ohne Gewähr...

moonsorrox

#7
OK, vielen Dank ich werde das mal so einbauen und mich melden  :D

EDIT:// hier meine Rückmeldung, es funktioniert soweit so gut...
ein kleiner Wermutstropfen mit dem ich aber leben könnte wenn es dafür jetzt keine einfache Lösung geben würde.

Alles funktioniert bis auf den Zeitpunkt, wenn die Terrassenbeleuchtung dann wirklich aus ist (heute um 00.48 Uhr) und ich öffne fährt der Rollladen hoch das Licht geht an aber nicht wieder aus beim runter fahren, dass habe ich heute manuell ausgeschaltet.
Ich werde das heute nochmals testen, denn ich habe gerade gesehen im Log habe ich eine Ausschaltung um 00.48 Uhr, evtl muss ich warten da ich den Rollladen nur kurz habe hoch fahren lassen bis ich die Lampe gesehen habe.

Diese Zeit ändert sich da ich dort eine Simulation drin habe, aber spätestens gegen 1.30 Uhr arbeitet dann auch die Simulation nicht mehr.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM