Hauptmenü

Ich verstehe DOIF nicht

Begonnen von Nemo0815, 10 Oktober 2019, 11:05:38

Vorheriges Thema - Nächstes Thema

Nemo0815

Hallo,

ich habe folgendes DOIF

([08:00-20:00] and ([JemandZuhause] eq "true")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,0,100)) ((set LEDLeiste HSV 300,100,100))
DOELSEIF
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,100,100)) ((set LEDLeiste HSV 300,100,50))
DOELSE
(set IT_Steckdose_1 off) (set WifiLightGang HSV 0,0,300) (set LEDLeiste off)



Aussderdem ist do always  und checkall all gesetzt.

Es geht um die Condition 2 und den ELSE Pfad. Ich hätte erwartet dass zwischen 20:01 und 00:30, wenn JemandZuhause true ist aber Schlafenszeit von false auf true  wechselt  der DOELSE Zweig ausgeführt wird. Wird er aber nicht.

Was mache ich falsch?


Otto123

Hi,

1. Fehler: Du postest DEF und kein list :( Man sieht so nicht was das DOIF wirklich tut / getan hat
2. Fehler (set WifiLightGang HSV 0,0,300) -> ((set WifiLightGang HSV 0,0,300))  - ich bin aber nicht ganz sicher ob das wirklich das Problem ist. (Doku)

Überflüssige Klammern:
([08:00-20:00] and ([JemandZuhause] eq "true")) -> ([08:00-20:00] and [JemandZuhause] eq "true")
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) -> ([20:01-00:30] and [JemandZuhause] eq "true" and [SchlafensZeit] eq "false")

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

Zitat von: Otto123 am 10 Oktober 2019, 12:04:51
1. Fehler: Du postest DEF und kein list :( Man sieht so nicht was das DOIF wirklich tut / getan hat
Klar. Und so sieht man die Attribute auch nicht. Die sind insb. beim DOIF entscheidend!

Also, "list" bitte! ;) Und am besten, "list" wenn es laut Benutzer nicht richtig funktioniert hat.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Nemo0815

Sorry hat etwas länger gedauert,



Internals:
   DEF        ([08:00-20:00] and ([JemandZuhause] eq "true")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,0,100)) ((set LEDLeiste HSV 300,100,100))
DOELSEIF
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,100,100)) ((set LEDLeiste HSV 300,100,50))
DOELSE
(set IT_Steckdose_1 off) (set WifiLightGang HSV 0,0,300) (set LEDLeiste off)

   FUUID      5c4c5851-f33f-a685-3594-4daa54e24a9968cf
   MODEL      FHEM
   NAME       GangLEDAutomatik2
   NOTIFYDEV  global,JemandZuhause,SchlafensZeit
   NR         274
   NTFY_ORDER 50-GangLEDAutomatik2
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20268 2019-09-28 21:00:39
   READINGS:
     2019-10-14 10:00:00   Device          SchlafensZeit
     2019-10-14 10:00:00   cmd             1.3
     2019-10-14 10:00:00   cmd_event       SchlafensZeit
     2019-10-14 10:00:00   cmd_nr          1
     2019-10-14 10:00:00   cmd_seqnr       3
     2019-10-13 17:21:49   e_JemandZuhause_STATE true
     2019-10-14 10:00:00   e_SchlafensZeit_STATE false
     2019-10-10 10:59:41   mode            enabled
     2019-10-14 10:00:00   state           cmd_1
     2019-10-13 20:00:00   timer_01_c01    14.10.2019 08:00:00
     2019-10-13 20:00:00   timer_02_c01    14.10.2019 20:00:00
     2019-10-14 00:30:00   timer_03_c02    14.10.2019 20:01:00
     2019-10-14 00:30:00   timer_04_c02    15.10.2019 00:30:00
   Regex:
     accu:
     cond:
       JemandZuhause:
         0:
           &STATE     ^JemandZuhause$
         1:
           &STATE     ^JemandZuhause$
       SchlafensZeit:
         0:
         1:
           &STATE     ^SchlafensZeit$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and (::InternalDoIf($hash,'JemandZuhause','STATE') eq "true")
     1          ::DOIF_time($hash,2,3,$wday,$hms) and (::InternalDoIf($hash,'JemandZuhause','STATE') eq "true") and (::InternalDoIf($hash,'SchlafensZeit','STATE') eq "false")
   days:
   do:
     0:
       0          set IT_Steckdose_1 on
       1          (set WifiLightGang HSV 300,0,100)
       2          (set LEDLeiste HSV 300,100,100)
     1:
       0          set IT_Steckdose_1 on
       1          (set WifiLightGang HSV 300,100,100)
       2          (set LEDLeiste HSV 300,100,50)
     2:
       0          set IT_Steckdose_1 off
       1          set WifiLightGang HSV 0,0,300
       2          set LEDLeiste off
   helper:
     DEVFILTER  ^global$|^JemandZuhause$|^SchlafensZeit$
     NOTIFYDEV  global|JemandZuhause|SchlafensZeit
     event      false
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   SchlafensZeit
     timerevent false
     triggerDev SchlafensZeit
     timerevents:
       false
     timereventsState:
       state: false
     triggerEvents:
       false
     triggerEventsState:
       state: false
   internals:
     all         JemandZuhause:STATE SchlafensZeit:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   intervaltimer:
   localtime:
     0          1571032800
     1          1571076000
     2          1571076060
     3          1571092200
   readings:
   realtime:
     0          08:00:00
     1          20:00:00
     2          20:01:00
     3          00:30:00
   time:
     0          08:00:00
     1          20:00:00
     2          20:01:00
     3          00:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     1           2  3
   trigger:
   triggertime:
     1571076000:
       localtime  1571076000
       hash:
     1571076060:
       localtime  1571076060
       hash:
     1571092200:
       localtime  1571092200
       hash:
   uiState:
   uiTable:
Attributes:
   checkall   all
   do         always

amenomade

Also bei dem "list" ist es zwischen 8 Uhr und 20 Uhr, jemand ist zu Hause, dann führt das DOIF cmd1 aus.

Bisher alles gut. DOIF macht was er soll.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Nemo0815

Zitat von: amenomade am 14 Oktober 2019, 19:46:32
Also bei dem "list" ist es zwischen 8 Uhr und 20 Uhr, jemand ist zu Hause, dann führt das DOIF cmd1 aus.

Bisher alles gut. DOIF macht was er soll.

Was auch funktioniert, das Command 3 macht Probleme (die vorgeschlagene Änderung oben hat übrigens keine Wirkung gezeigt - das Licht bleibt an...).

Otto123

Um eine Ahnung vom Problem zu erlangen, wäre ein list in dem Zustand hilfreich der Probleme macht ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz