[gelöst] D[:]IF - Rollos fahren nicht runter.

Begonnen von HarryHurrtig, 24 Juli 2017, 13:28:40

Vorheriges Thema - Nächstes Thema

HarryHurrtig

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

amenomade

#1
Und was ist A_lichtsensor, und warum triggerst Du einmal auf M_lichtsensor, und einmal auf A_lichtsensor?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

moonsorrox

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

HarryHurrtig

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

CoolTux

Versuch mal deine  OR Bedingungen noch mal zu umklammern.

and ([bla] or [Blu]) )
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

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

amenomade

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.





Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

HarryHurrtig

@amenomade
dann müssten die Rollos irgendwann ja wieder runterfahren.

Gruß
Hubert

HarryHurrtig

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

amenomade

Kommt  [AU_Helligkeit:Helligkeit_MW] irgendwann unter 50?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Ellert

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.

HarryHurrtig

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.

amenomade

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

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

HarryHurrtig

@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

CoolTux

Na das war ja Mal ne Steißgburt. Aber schön das es nun klappt  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net