"Fehlerhaftes" Verhalten von Doif

Begonnen von ThiemoSt, 27 April 2017, 14:33:16

Vorheriges Thema - Nächstes Thema

ThiemoSt

Hallo Zusammen,

ich habe ein (für mich) sehr seltsames Verhalten.
Und zwar möchte ich wie in den Kommentaren beschrieben das meine Rollos herunter fahren wenn es draußen hell ist und die Vorhersagetemperatur über 18°C ist.
Wenn dies nicht eintrifft, aber der AV-Receiver eingeschaltet wird und auch eine bestimmten Input hat (bei Radio z.B. nicht) soll eine Rollade runter fahren da diese direkt gegenüber dem TV ist.
Wenn nichts eintrifft (z.B. wird es Abends wieder dunkler) soll stufenweise die Rollos wieder hoch fahren.

Jedoch bei aktuell das Doif immer im cmd1 hängen, obwohl dort manche Abfrage gar nicht zutreffen.
Wo habe ich hier den Fehler?

Gruß Thiemo

Internals:
   DEF        ##1 - Receiver an, linkes Rollo bei Sonne runter
([di.NN.xx.XX.SonneSonnenseite:twilight] eq "Sonne"
and [OG.wz.HE.Denon:state] eq "on"
and [OG.wz.HE.Denon:input] eq "DVD" or "Cbl/Sat" or "Mediaplayer"
and [$SELF:Automatik] eq "an")
(set OG.wz.RO.FensterLinks:FILTER=pct>[$SELF:FensterLinks] pct [$SELF:FensterLinks])

##2 - beide Rollos bei Sonne runter wenn Vorhersagetemperatur über 18°C
DOELSEIF
([di.NN.xx.XX.SonneSonnenseite:twilight] eq "Sonne"
and [Wetter_Overath:fc1_high_c] > 18
and [$SELF:Automatik] eq "an")
(set OG.wz.RO.FensterLinks pct [$SELF:FensterLinks],
set OG.wz.RO.FensterRechts pct [$SELF:FensterRechts])

##3 - Rollos wieder hoch wenn Schatten ist oder die Vorhersagetemperatur wieder unter 18°C gesunken ist
##DOELSEIF
##(([di.NN.xx.XX.SonneSonnenseite:twilight] eq "Schatten"
##or [Wetter_Overath:fc1_high_c] <= 18)
##and [$SELF:Automatik] eq "an")
DOELSE
(set OG.wz.RO.FensterLinks:FILTER=pct<=20 pct 20,
set OG.wz.RO.FensterRechts:FILTER=pct<=20 pct 20)
(set OG.wz.RO.FensterLinks:FILTER=pct<=60 pct 60,
set OG.wz.RO.FensterRechts:FILTER=pct<=60 pct 60)
(set OG.wz.RO.FensterLinks:FILTER=pct<=80 pct 80,
set OG.wz.RO.FensterRechts:FILTER=pct<=80 pct 80)
(set OG.wz.RO.FensterLinks up,
set OG.wz.RO.FensterRechts up)
   NAME       di.OG.wz.RO.Sonnenseite
   NR         73
   NTFY_ORDER 50-di.OG.wz.RO.Sonnenseite
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2017-04-27 14:23:48   Automatik       an
     2017-04-27 14:23:48   Device          di.OG.wz.RO.Sonnenseite
     2017-04-27 13:56:00   FensterLinks    12
     2017-03-17 10:39:41   FensterRechts   12
     2017-04-27 14:14:50   cmd             1
     2017-04-27 14:14:50   cmd_event       OG.wz.HE.Denon
     2017-04-27 14:14:50   cmd_nr          1
     2017-04-27 14:15:19   e_OG.wz.HE.Denon_state off
     2017-04-27 14:23:48   e_di.OG.wz.RO.Sonnenseite_Automatik an
     2017-04-27 14:14:50   state           cmd_1
     2017-04-27 14:15:09   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'di.NN.xx.XX.SonneSonnenseite','twilight') eq "Sonne" and ReadingValDoIf($hash,'OG.wz.HE.Denon','state') eq "on" and ReadingValDoIf($hash,'OG.wz.HE.Denon','input') eq "DVD" or "Cbl/Sat" or "Mediaplayer" and ReadingValDoIf($hash,'di.OG.wz.RO.Sonnenseite','Automatik') eq "an"
     1          ReadingValDoIf($hash,'di.NN.xx.XX.SonneSonnenseite','twilight') eq "Sonne" and ReadingValDoIf($hash,'Wetter_Overath','fc1_high_c') > 18 and ReadingValDoIf($hash,'di.OG.wz.RO.Sonnenseite','Automatik') eq "an"
   Devices:
     0           di.NN.xx.XX.SonneSonnenseite OG.wz.HE.Denon di.OG.wz.RO.Sonnenseite
     1           di.NN.xx.XX.SonneSonnenseite Wetter_Overath di.OG.wz.RO.Sonnenseite
     all         di.NN.xx.XX.SonneSonnenseite OG.wz.HE.Denon di.OG.wz.RO.Sonnenseite Wetter_Overath
   Do:
     0:
       0          set OG.wz.RO.FensterLinks:FILTER=pct>[di.OG.wz.RO.Sonnenseite:FensterLinks] pct [di.OG.wz.RO.Sonnenseite:FensterLinks]
     1:
       0          set OG.wz.RO.FensterLinks pct [di.OG.wz.RO.Sonnenseite:FensterLinks], set OG.wz.RO.FensterRechts pct [di.OG.wz.RO.Sonnenseite:FensterRechts]
     2:
       0          set OG.wz.RO.FensterLinks:FILTER=pct<=20 pct 20, set OG.wz.RO.FensterRechts:FILTER=pct<=20 pct 20
       1          set OG.wz.RO.FensterLinks:FILTER=pct<=60 pct 60, set OG.wz.RO.FensterRechts:FILTER=pct<=60 pct 60
       2          set OG.wz.RO.FensterLinks:FILTER=pct<=80 pct 80, set OG.wz.RO.FensterRechts:FILTER=pct<=80 pct 80
       3          set OG.wz.RO.FensterLinks up, set OG.wz.RO.FensterRechts up
   Helper:
     event      Automatik: an,Device: di.OG.wz.RO.Sonnenseite,e_di.OG.wz.RO.Sonnenseite_Automatik: an
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   di.OG.wz.RO.Sonnenseite
     timerevent Automatik: an,Device: di.OG.wz.RO.Sonnenseite,e_di.OG.wz.RO.Sonnenseite_Automatik: an
     triggerDev di.OG.wz.RO.Sonnenseite
     timerevents:
       Automatik: an
       Device: di.OG.wz.RO.Sonnenseite
       e_di.OG.wz.RO.Sonnenseite_Automatik: an
     timereventsState:
       Automatik: an
       Device: di.OG.wz.RO.Sonnenseite
       e_di.OG.wz.RO.Sonnenseite_Automatik: an
     triggerEvents:
       Automatik: an
       Device: di.OG.wz.RO.Sonnenseite
       e_di.OG.wz.RO.Sonnenseite_Automatik: an
     triggerEventsState:
       Automatik: an
       Device: di.OG.wz.RO.Sonnenseite
       e_di.OG.wz.RO.Sonnenseite_Automatik: an
   Internals:
   Itimer:
   Readings:
     0           di.NN.xx.XX.SonneSonnenseite:twilight OG.wz.HE.Denon:state OG.wz.HE.Denon:input di.OG.wz.RO.Sonnenseite:Automatik
     1           di.NN.xx.XX.SonneSonnenseite:twilight Wetter_Overath:fc1_high_c di.OG.wz.RO.Sonnenseite:Automatik
     all         di.NN.xx.XX.SonneSonnenseite:twilight OG.wz.HE.Denon:state OG.wz.HE.Denon:input di.OG.wz.RO.Sonnenseite:Automatik Wetter_Overath:fc1_high_c
   Regexp:
     0:
     1:
     All:
   State:
     State:
   Trigger:
Attributes:
   alias      Automatik Rolladen Sonnenseite
   checkReadingEvent 1
   devStateIcon on:fts_shutter_automatic off:fts_shutter_manual initialized:unknown
   icon       fts_shutter_updown
   readingList Automatik FensterLinks FensterRechts
   setList    Automatik:an,aus FensterLinks:slider,0,1,100 FensterRechts:slider,0,1,100
   wait       0:0:60,120,120,120
   webCmd     Automatik:FensterLinks:FensterRechts
FHEM, Ubuntu unter Proxmox (NUCi7)
FHT80B; CUL_FHTTK; HMUARTLGW; HUE; Netatmo; ENIGMA2; FRITZBOX; S7 und viele weitere.

KernSani

and [OG.wz.HE.Denon:input] eq "DVD" or "Cbl/Sat" or "Mediaplayer"
ist nicht korrekt
and ([OG.wz.HE.Denon:input] eq "DVD" or [OG.wz.HE.Denon:input] eq "Cbl/Sat" or [OG.wz.HE.Denon:input] eq "Mediaplayer")

Das ist zumidest das offensichtliche... ob's noch mehr gibt habe ich jetzt nicht gesucht ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Ellert

Zitat von: KernSani am 27 April 2017, 15:48:30
and [OG.wz.HE.Denon:input] eq "DVD" or "Cbl/Sat" or "Mediaplayer"
ist nicht korrekt
and ([OG.wz.HE.Denon:input] eq "DVD" or [OG.wz.HE.Denon:input] eq "Cbl/Sat" or [OG.wz.HE.Denon:input] eq "Mediaplayer")

Das ist zumidest das offensichtliche... ob's noch mehr gibt habe ich jetzt nicht gesucht ;-)

Dies könnte man etwas kürzen
and ([OG.wz.HE.Denon:input] eq "DVD" or [OG.wz.HE.Denon:input] eq "Cbl/Sat" or [OG.wz.HE.Denon:input] eq "Mediaplayer")

auf
and [OG.wz.HE.Denon:input] =~ "^(DVD|Cbl/Sat|Mediaplayer)\$"

KernSani

Zitat von: Ellert am 27 April 2017, 19:39:13
Dies könnte man etwas kürzen
auf
and [OG.wz.HE.Denon:input] =~ "^(DVD|Cbl/Sat|Mediaplayer)\$"
Richtig, ich wollte den TE aber nicht auch noch mit einer Regex verwirren ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ThiemoSt

Da macht man die Syntax korrekt und schon klappt auch die Funktion wie gewünscht  ;D ;D

Danke an euch. Ich habe die Variante mit dem Regex eingesetzt. Für neue DOIF's wird aber sicherlich die lange gestückelte Variante zum Einsatz kommen.
Dieser Regex und ich werden nicht so schnell Freunde  :'(
FHEM, Ubuntu unter Proxmox (NUCi7)
FHT80B; CUL_FHTTK; HMUARTLGW; HUE; Netatmo; ENIGMA2; FRITZBOX; S7 und viele weitere.