[GELÖST] DOIF mit IF: Syntaxfehler

Begonnen von FFHEM, 18 September 2019, 17:38:19

Vorheriges Thema - Nächstes Thema

FFHEM

Ich verzweifle an einem IF in einem DOELSE-Zweig, ich bekomme die Fehlermeldung:

IF (auto eq "auto") (set ST5 off; sleep 5 quiet;set S3 off) : IF: no right bracket: (set ST5 off

Obwohl die Klammern doch - eigentlich - korrekt sind. Ich wäre für einen Anstupser dankbar, da ich keinen offensichtlichen Fehler mehr sehe...

Vielen Dank!
Gruß,
Friedhelm

Hier das komplette Device:

Internals:
   DEF        ([$SELF:Modus,"manu"] eq "auto"
   and [Tageslicht_aussen] eq "dunkel"
   and [08:00-[Rolladen_hinten_Zeit_runter_fruehestens]]
   and [ANLAGE_STATUS] ne "extern_scharf"
   and [RolladenWohnzimmerLinks:state] ne "off")
   
       (set S3:FILTER=state!=on on;
    sleep 15;set ST5 on;
)

DOELSE
        (
  (
  IF ([$SELF:Modus] eq "auto")    ## Muss "IF" sein, kein DOELSEIF!
          (set ST5 off; sleep 5 quiet;set S3 off)
  )
    )
   FUUID      5c444ff2-f33f-26cd-cdcc-749f1b564e0ea7e7
   MODEL      FHEM
   NAME       di_Licht_Teich
   NOTIFYDEV  global,di_Licht_Teich,Tageslicht_aussen,Rolladen_hinten_Zeit_runter_fruehestens,ANLAGE_STATUS,RolladenWohnzimmerLinks
   NR         1150
   NTFY_ORDER 50-di_Licht_Teich
   STATE      initialized
   TYPE       DOIF
   VERSION    20157 2019-09-13 21:08:50
   READINGS:
     2019-08-03 11:03:22   Modus           auto
     2019-09-18 17:31:17   cmd             0
     2019-09-18 17:31:17   mode            enabled
     2019-09-18 17:31:17   state           initialized
     2019-09-18 17:31:17   timer_01_c01    19.09.2019 08:00:00
     2019-09-18 17:31:17   timer_02_c01    18.09.2019 21:15:00
   Regex:
     accu:
     cond:
       ANLAGE_STATUS:
         0:
           &STATE     ^ANLAGE_STATUS$
       RolladenWohnzimmerLinks:
         0:
           state      ^RolladenWohnzimmerLinks$:^state:
       Tageslicht_aussen:
         0:
           &STATE     ^Tageslicht_aussen$
       di_Licht_Teich:
         0:
           Modus      ^di_Licht_Teich$:^Modus:
     itimer:
       Rolladen_hinten_Zeit_runter_fruehestens:
         itimer:
           &STATE     ^Rolladen_hinten_Zeit_runter_fruehestens$
   attr:
     cmdState:
       0:
         ein
       1:
          aus
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'di_Licht_Teich','Modus','"manu"') eq "auto"     and ::InternalDoIf($hash,'Tageslicht_aussen','STATE') eq "dunkel"     and ::DOIF_time($hash,0,1,$wday,$hms)     and ::InternalDoIf($hash,'ANLAGE_STATUS','STATE') ne "extern_scharf"     and ::ReadingValDoIf($hash,'RolladenWohnzimmerLinks','state') ne "off"
   days:
   do:
     0:
       0          set S3:FILTER=state!=on on;     sleep 15;set ST5 on;
     1:
       0              (   IF ([di_Licht_Teich:Modus] eq "auto")               (set ST5 off; sleep 5 quiet;set S3 off)   )    
   helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
   internals:
     all         Tageslicht_aussen:STATE ANLAGE_STATUS:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1568872800
     1          1568834100
   readings:
     all         di_Licht_Teich:Modus RolladenWohnzimmerLinks:state
   realtime:
     0          08:00:00
     1          21:15:00
   time:
     0          08:00:00
     1          [Rolladen_hinten_Zeit_runter_fruehestens]
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1568834100:
       localtime  1568834100
       hash:
     1568872800:
       localtime  1568872800
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   ein | aus
   do         always
   readingList Modus
   room       DOIF
   setList    Modus:auto,manu
   webCmd     Modus
Raspberry Pi 4B, Homematic, Sonoff, Shelly, Worx, Arduino, ESP8266

Damian

Benutze beim IF Komma statt Semikolon, das funktioniert dort sogar in Verbindung mit sleep  - steht alles in der Commandref
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FFHEM

Danke, Damian, so funktioniert es:

DOELSE
        (
  IF ([$SELF:Modus] eq "auto")   
  (set ST5 off, sleep 5 quiet, set S3 off)
    )


Hatte nur Bedenken gehabt, dass das sleep FHEM blockiert, wenn der darauffolgende Befehl nicht direkt - also ohne Leerzeichen - dahinter steht.
Raspberry Pi 4B, Homematic, Sonoff, Shelly, Worx, Arduino, ESP8266