Hallo,
ich habe folgende doif für meine Rollosteuerung geschrieben, ich kann den Fehler leider nicht finden. Die Rollos fahren wie gewollt morgens hoch, aber abends nicht runter.
define doif_WZ_Rollo_links DOIF ([05:00-10:00] and \
[FeKo_WZ_TerassenTuer_links] eq "closed" and \
[AU_HelligkeitsSensor:brightness] > [$SELF:M_lichtsensor] or \
[AU_Helligkeit:Helligkeit_MW] > [$SELF:M_mw]) \
(set WZ_Rollo_links pct 100)\
DOELSEIF \
([16:00-23:59] and \
[FeKo_WZ_TerassenTuer_links] eq "closed" and \
[AU_HelligkeitsSensor:brightness] < [$SELF:A_lichtsensor] or \
[AU_Helligkeit:Helligkeit_MW] < [$SELF:A_mw]) \
(set WZ_Rollo_links pct 0)\
attr doif_WZ_Rollo_links alias _Wohnzimmer Rollologik links
attr doif_WZ_Rollo_links group Rollo
attr doif_WZ_Rollo_links icon helper_doif@green
attr doif_WZ_Rollo_links readingList M_lichtsensor A_lichtsensor M_mw A_mw
attr doif_WZ_Rollo_links room Rollos,Steuerlogik
attr doif_WZ_Rollo_links setList M_lichtsensor A_lichtsensor M_mw A_mw
attr doif_WZ_Rollo_links webCmd enable:disable
M_lichtsensor, M_mw sind interne Variablen.
FeKo_WZ_TerassenTuer_links ist ein Türgriffkontakt.
AU_Helligkeit:Helligkeit_MW ist der berechnete Mittelwert von drei Bewegungsmeldern.
([05:00-10:00] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] > [$SELF:M_lichtsensor] or
[AU_Helligkeit:Helligkeit_MW] > [$SELF:M_mw])
(set WZ_Rollo_links pct 100)
DOELSEIF
([16:00-23:59] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] < [$SELF:M_lichtsensor] or
[AU_Helligkeit:Helligkeit_MW] < [$SELF:M_mw])
(set WZ_Rollo_links pct 0)
Über eure Hilfe würde ich mich sehr freuen
Hubert
Und was ist A_lichtsensor, und warum triggerst Du einmal auf M_lichtsensor, und einmal auf A_lichtsensor?
oft macht man sich das Leben schwer mit zu vielen Parametern, dass hatte ich am Anfang auch. Später möchtest du evtl. noch eine Beschattung haben und dann wird es noch komplizierter...
Ich habe im Laufe der Zeit hier aus dem Forum von vielen Beispielen gelernt... was ich damit sagen will..
Meine Rollläden arbeiten mit Temperatur und Twilight und dummys welche den Modus umschalten, dass läuft jetzt schon einige Zeit sehr gut.
Du hast da verschiedene Lichtsensoren drin z.B. M_lichtsensor und A_lichtsensor das denke ich ist zu kompliziert.
Hier mal mein Beschattungs Beispiel für einen Rollladen.
Dummy
defmod du_RolloSZmodus dummy
attr du_RolloSZmodus alias Schlafzimmer - Modus
attr du_RolloSZmodus devStateIcon FHEM:fts_shutter_automatic@lightgreen Nachtschicht:fts_shutter_up@crimson Beschattung:fts_shutter_updown@blue Aus:general_aus@yellow
attr du_RolloSZmodus group Rollläden OG
attr du_RolloSZmodus icon time_manual_mode@#7a0099
attr du_RolloSZmodus room Automation,Schlafzimmer
attr du_RolloSZmodus setList state:FHEM,Nachtschicht,Beschattung,Aus
attr du_RolloSZmodus sortby 01
attr du_RolloSZmodus webCmd state
setstate du_RolloSZmodus Beschattung
setstate du_RolloSZmodus 2017-05-18 09:31:30 state Beschattung
DOIF aus dem DEV:
([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 20 and [myTwilight:azimuth] > 72 and [myTwilight:elevation] < 50 and [06:45-10:00]) (set RollladenSZ 25)
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 23 and [myTwilight:azimuth] > 72 and [myTwilight:elevation] < 60 and [10:01-13:00])(set RollladenSZ 25)
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 22 and [Temperatur_Terrasse:temperature] < 27 and [myTwilight:azimuth] > 150 and [myTwilight:elevation] < 70 and [13:01-16:00])(set RollladenSZ 50)
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [myTwilight:azimuth] > 230 and [[du_RolloZeitSZ_offen_B]]) (set RollladenSZ 75)
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] < 31 and [[du_RolloZeitSZ_hoch_B]-{sunset_abs()}]) (set RollladenSZ 75)wilight
M_lichtsensor, M_mw sind die Variablen für die Schaltschwelle am morgen.
A_lichtsensor, A_mw sind die Variablen für die Schaltschwelle am Abend.
[AU_HelligkeitsSensor:brightness] ist der Luxwert vom Lichtsensor vergleich mit *_lichtsensor
[AU_Helligkeit:Helligkeit_MW] ist der berechnete Mittellichtwert von drei Bewegungsmeldern (*_mw) als Ausfallsicherung.
Ich habe es auch schon statt mit Variablen mit Festwerten versucht, der Fehler bleibt.
Der Vergleich mit den Variablen funktioniert ohne Probleme der Fehler liegt wohl irgendwie an der Zeitlogik, denn am Abend bleibt der Status weiter auf cmd_1 (hochfahren) anstatt auf cmd_2(herunterfahren).
Gruß
Hubert
Versuch mal deine OR Bedingungen noch mal zu umklammern.
and ([bla] or [Blu]) )
ich versteh auch nicht, warum im oberen Codeteil der ja fast identisch ist wie der untere...! dann aber im unteren der M_lichtsensor drin ist, da sollte dann doch der A_Lichtsensor drin sein, oder checke ich etwas nicht
denn 16:00-23:59 ist doch Abends im unteren DOELSEIF Teil
So wie das DOIF im Moment definiert ist - egal ob A_Wert oder M_Wert da die sowieso laut "list" gleich sind - bleibt die Rollade hoch, so lange [AU_Helligkeit:Helligkeit_MW] > [$SELF:M_mw]), egal die Zeit.
@amenomade
dann müssten die Rollos irgendwann ja wieder runterfahren.
Gruß
Hubert
Hier ist eine einfachere Version meines doif's. Das Verhalten ist gleich. Die Rollo's fahren morgens hoch aber abends nicht runter.
([05:00-10:00] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] > 30 or
[AU_Helligkeit:Helligkeit_MW] > 50)
(set WZ_Rollo_links pct 100)
DOELSEIF
([16:00-23:59] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] < 30 or
[AU_Helligkeit:Helligkeit_MW] < 50)
(set WZ_Rollo_links pct 0)
Gruß
Hubert
Kommt [AU_Helligkeit:Helligkeit_MW] irgendwann unter 50?
Zitat von: HarryHurrtig am 24 Juli 2017, 19:08:28
Hier ist eine einfachere Version meines doif's. Das Verhalten ist gleich. Die Rollo's fahren morgens hoch aber abends nicht runter.
([05:00-10:00] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] > 30 or
[AU_Helligkeit:Helligkeit_MW] > 50)
(set WZ_Rollo_links pct 100)
DOELSEIF
([16:00-23:59] and
[FeKo_WZ_TerassenTuer_links] eq "closed" and
[AU_HelligkeitsSensor:brightness] < 30 or
[AU_Helligkeit:Helligkeit_MW] < 50)
(set WZ_Rollo_links pct 0)
Gruß
Hubert
pct 100 bedeutet normalerweise "Rolladen geschlossen". Ist das bei Dir anders eingestellt?
Protokolliere mal die Events für DOIF, Rolladen und Sensoren, ggf mit DOIFtools und poste die Auszüge zu den Zeiten, wenn das DOIF hätte schalten sollen.
ja [AU_Helligkeit:Helligkeit_MW] geht bis fast auf 0 je nach Wetterlage.
pct 100 ist bei mir Rollo's offen.
Zitat
Protokolliere mal die Events für DOIF, Rolladen und Sensoren, ggf mit DOIFtools und poste die Auszüge zu den Zeiten, wenn das DOIF hätte schalten sollen.
werde ich morgen aufzeichnen.
Zitatpct 100 bedeutet normalerweise "Rolladen geschlossen".
@Ellert: Das kann ich nicht zustimmen. Bei meisten Rolladen richt sich dieser Wert nach Helligkeit. 100 = 100% hell = offen.
@Hubert: bitte auch mitberücksichtigen, was CoolTux gesagt hat und was ich anders gesagt habe. Im Moment steuert bei dir Helligkeit_MW
unabhängig von der Zeit, da "and" mehr als "or" bindet . Im Moment hast Du:
DOIF
(Zeit and Tür and Brightness)
or MW
DOELSEIF
(Zeit and Tür and Brighness)
or MW
@amenomade: manchmal ist man wirklich auf beiden Augen blind. Klar Punkt- vor Strichrechnen ;)
Zwei Klammern und schon klappt alles hervorragend.
Danke an alle die mir geholfen haben. :)
Hubert
Na das war ja Mal ne Steißgburt. Aber schön das es nun klappt ;D
Zitat von: amenomade am 24 Juli 2017, 21:02:23
Bei meisten Rolladen richt sich dieser Wert nach Helligkeit. 100 = 100% hell = offen.
dazu noch von mir, bei mir ist "0" geschlossen, bei allen Rollläden... haben wohl 99% der Rollläden so :)
...aber ich habe hier vor langer Zeit im Forum das auch schon mal anders herum gesehen, finde den Beitrag nicht mehr, aber gibt es wohl auch...
Zitat von: amenomade am 24 Juli 2017, 21:02:23
@Ellert: Das kann ich nicht zustimmen. Bei meisten Rolladen richt sich dieser Wert nach Helligkeit. 100 = 100% hell = offen.
@Hubert: bitte auch mitberücksichtigen, was CoolTux gesagt hat und was ich anders gesagt habe. Im Moment steuert bei dir Helligkeit_MW unabhängig von der Zeit, da "and" mehr als "or" bindet . Im Moment hast Du:
DOIF
(Zeit and Tür and Brightness)
or MW
DOELSEIF
(Zeit and Tür and Brighness)
or MW
@amenomade:Stimmt, da hat mir die Erinnerung einen Streich gespielt.