FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: BeJott am 18 September 2018, 13:13:52

Titel: [GELÖST] DOIF mit zwei Bedingungen
Beitrag von: BeJott am 18 September 2018, 13:13:52
Hallo zusammen,

ich habe ein Problem mit einem DOIF/DOELSEIF mit verUNDeter Bedingung.

Ich möchte, wenn der Homestatus auf "Nacht" (=2) wechselt UND mein Kind nicht zuhause ist (Variable KIND = "abwesend"), dass alle Lampen ausgehen, außer denen im Flur, Wohnzimmer und Schlafzimmer.
Wenn die Variable "KIND" auf "anwesend" steht, möchte ich zusätzlich das Kinderzimmer Licht anlassen.

Der folgende Code funkitioniert immer genau einmal, nach Initialisierung, danach nicht mehr.
([dummy.STATUS] eq "2" and [KIND] eq "abwesend")
   (set dummy.NIGHT on)
   (set bazi.Lampe1|kch.Lampe1|kizi.Lampe1|dummy.AWAY|dummy.HOME|dummy.HOLI off)
   (set flr.Lampe1|wozi.Lampe1|slzi.Lampe2 pct 50)
DOELSEIF
([dummy.STATUS] eq "2" and [KIND] eq "anwesend")
   (set dummy.NIGHT on)
   (set bazi.Lampe1|kch.Lampe1|dummy.AWAY|dummy.HOME|dummy.HOLI off)
   (set kizi.Lampe1|flr.Lampe1|wozi.Lampe1|slzi.Lampe2 pct 50)


Gibt es bei FHEM DOIF eine Syntax, um eine IF-Anweisung zu beenden, ähnlich wie bei C "end if" oder ähnliches?

Oder erkennt jemand, was ich falsch mache?

Vielen Dank im Voraus!

Gruß
Thomas
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: pc1246 am 18 September 2018, 13:44:11
Moin
Ein list Deines DOIF waere hilfreicher, als der Ausschnitt!
Wann moechtest du denn die Lampen wieder an, bzw. aus, machen?
Gruss Christoph
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: BeJott am 18 September 2018, 13:47:29
Mahlzeit!

Was genau meinst du mit "ein list deines DOIF"?

Die Lichter mache ich nach Bedarf manuell an.

Gruß
Thomas
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: kumue am 18 September 2018, 13:49:20
in der GUI oder auf der Console eingeben:
list <NAME_DEINES_DOIF>
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: BeJott am 18 September 2018, 13:55:17
Internals:
   DEF        ([dy.STATUS] eq "2" and [dy.KIND] eq "abwesend")
   (set dy.NIGHT on)
   (set bz.Lampe1|kc.Lampe1|kizi.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off)
   (set fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50)
DOELSEIF
([dy.STATUS] eq "2" and [dy.KIND] eq "anwesend")
   (set dy.NIGHT on)
   (set bz.Lampe1|kc.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off)
   (set kizi.Lampe1|fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50)
   MODEL      FHEM
   NAME       s.NIGHT
   NR         57
   NTFY_ORDER 50-s.NIGHT
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-09-18 11:32:05   Device          dy.STATUS
     2018-09-14 12:28:13   cmd             1.3
     2018-09-14 12:28:13   cmd_event       dy.STATUS
     2018-09-14 12:28:13   cmd_nr          1
     2018-09-14 12:28:13   cmd_seqnr       3
     2018-09-16 19:04:18   e_dy.KIND_STATE off
     2018-09-18 11:32:05   e_dy.STATUS_STATE 3
     2018-09-14 12:28:06   mode            enabled
     2018-09-14 12:28:13   state           cmd_1
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          InternalDoIf($hash,'dy.STATUS','STATE') eq "2" and InternalDoIf($hash,'dy.KIND','STATE') eq "abwesend"
     1          InternalDoIf($hash,'dy.STATUS','STATE') eq "2" and InternalDoIf($hash,'dy.KIND','STATE') eq "anwesend"
   devices:
     0           dy.STATUS dy.KIND
     1           dy.STATUS dy.KIND
     all         dy.STATUS dy.KIND
   do:
     0:
       0          set dy.NIGHT on
       1          set bz.Lampe1|kc.Lampe1|kizi.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off
       2          set fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50
     1:
       0          set dy.NIGHT on
       1          set bz.Lampe1|kc.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off
       2          set kizi.Lampe1|fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50
     2:
   helper:
     event      3
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   dy.STATUS
     timerevent 2
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 3
       cmd_event: dy.STATUS
       state: cmd_1
     timerevents:
       2
     timereventsState:
       state: 2
     triggerEvents:
       3
     triggerEventsState:
       state: 3
   internals:
     0           dy.STATUS:STATE dy.KIND:STATE
     1           dy.STATUS:STATE dy.KIND:STATE
     all         dy.STATUS:STATE dy.KIND:STATE
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      do.NIGHT
   room       0.2 - DOIF
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: TomLee am 18 September 2018, 13:58:32
https://forum.fhem.de/index.php/topic,71806.0.html (https://forum.fhem.de/index.php/topic,71806.0.html)
https://fhem.de/commandref_DE.html#DOIF_do_always (https://fhem.de/commandref_DE.html#DOIF_do_always)

Gruß

Thomas
Titel: Antw:DOIF mit zwei Bedingungen
Beitrag von: TomLee am 18 September 2018, 14:13:27
Und noch was hilfreiches:

https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil (https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil)
https://fhem.de/commandref_DE.html#DOIF_wait (https://fhem.de/commandref_DE.html#DOIF_wait)
Titel: Antw:[GELÖST] DOIF mit zwei Bedingungen
Beitrag von: BeJott am 18 September 2018, 14:41:16
@TomLEE: Vielen Dank, "do always" hat mein Problem gelöst.

Gruß
Thomas