FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thoffi1978 am 18 März 2021, 18:12:22

Titel: DOIF geht nicht in 2 Zweig
Beitrag von: Thoffi1978 am 18 März 2021, 18:12:22
Hallo,

vermutlich sehe ich den Wald vor lauter Bäumen nicht.
Es ist auch nicht mein erstes DOIF, doch irgendwie drehe ich mich hier.

Der Zustand von dem DOIF ändert sich nicht und schaltet deshalb um 11 Uhr auch nicht.
Könnt Ihr mir sagen woran das liegt?


([11:00] and [Jalousie_Automatik] eq "Auto")
(set room=Jalousien:FILTER=TYPE=CUL_HM:FILTER=pct!=62 100)
DOELSE
()



Vielen Dank,
Hoffi


LIST:
Internals:
   DEF        ([11:00] and [Jalousie_Automatik] eq "Auto")
(set room=Jalousien:FILTER=TYPE=CUL_HM:FILTER=pct!=62 100)
DOELSE
()
   FUUID      60254843-f33f-7e98-9b89-0169750d1a5384c6
   MODEL      FHEM
   NAME       Rollo_Gruppe_Hoch
   NOTIFYDEV  Jalousie_Automatik,global
   NR         483
   NTFY_ORDER 50-Rollo_Gruppe_Hoch
   STATE      cmd_1
   TYPE       DOIF
   VERSION    23810 2021-02-23 20:14:35
   .attraggr:
   .attrminint:
   READINGS:
     2021-03-16 11:00:00   cmd             1
     2021-03-16 11:00:00   cmd_event       timer_1
     2021-03-16 11:00:00   cmd_nr          1
     2021-03-15 16:08:41   mode            enabled
     2021-03-16 11:00:00   state           cmd_1
     2021-03-18 11:00:00   timer_01_c01    19.03.2021 11:00:00
   Regex:
     accu:
     cond:
       Jalousie_Automatik:
         0:
           &STATE     ^Jalousie_Automatik$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) and ::InternalDoIf($hash,'Jalousie_Automatik','STATE') eq "Auto"
   days:
   do:
     0:
       0          set room=Jalousien:FILTER=TYPE=CUL_HM:FILTER=pct!=62 100
     1:
       0         
   helper:
     DEVFILTER  ^global$|^Jalousie_Automatik$
     NOTIFYDEV  global|Jalousie_Automatik
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   
     timerevent timer_1
     triggerDev
     timerevents:
       timer_1
     timereventsState:
       timer_1
     triggerEvents:
       timer_1
     triggerEventsState:
       timer_1
   internals:
     all         Jalousie_Automatik:STATE
   interval:
   intervalfunc:
   localtime:
     0          1616148000
   realtime:
     0          11:00:00
   time:
     0          11:00:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1616148000:
       localtime  1616148000
       hash:
   uiState:
   uiTable:
Attributes:
   group      Jalousien
   room       Jalousien,Jalousien Di´s
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Otto123 am 18 März 2021, 19:12:07
Hi,

zu viel Filter :)
list TYPE=CUL_HM:FILTER=pct!=62
list room=Arbeitszimmer:FILTER=pct=62

ZitatFalls die Spezifikation von :FILTER=NAME=WERT gefolgt wird, dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck gefiltert.

Gruß Otto
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Thoffi1978 am 19 März 2021, 14:16:32
ok.

Ich hatte vorher ein "einfaches" AT
*11:00 {if (Value("Jalousie_Automatik") eq "Auto") {fhem("set room=Jalousien:FILTER=TYPE=CUL_HM:FILTER=pct!=62 100")}}

damit ging es gut.

Jetzt habe ich das DOIF schon "gekürzt" aber noch nicht genug.

([11:00] and [Jalousie_Automatik] eq "Auto")
(set model=HM-LC-BL1PBU-FM:FILTER=pct!=62 100)
DOELSE
()


Wie kann ich dem DOIF sagen, dass die Jalousieschalter um 11Uhr hoch gehen sollen, wenn Sie nicht auf 62% stehen?

Torsten
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Otto123 am 19 März 2021, 14:40:54
Hallo Torsten,

ok da lag ich eventuell falsch, ich meinet es geht nur ein Filter.
Deinen Filter kannst Du immer mit list probieren.
Du kannst den Befehl immer in der Kommandozeile probieren, wenn er funktioniert gut.

Du sagts DOIF wechselt nicht den Zustand es steht laut list aber auf cmd_1 und hat einen Timer für den nächsten Tag gesetzt. Ich sehe da keine Fehler.

Mich verwirrt immer die leer ELSE - die habe ich noch nie begriffen. Scheinbar hast Du es geschafft das sich der Zustand nicht ändert und er das letzte mal am 16. geschaltet hat. Das wäre ein Fall für do always ?

Gruß Otto
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Thoffi1978 am 19 März 2021, 17:51:10
Hallo Otto,

ich hatte erst nur den einen Zweig da stehen.
Das leere DOELSE war dann nur ein weiterer Versuch, ob das DOIF schaltet. Tut es aber auch nicht.

Mit do always kann ich es mal ausprobieren, aber wenn "11Uhr" vorbei ist, sollte es doch in CMD2 wechseln. Oder habe ich da ein Denkfehler?

Den Timer hat er auf nächsten Tag gesetzt, hat ihn aber nicht ausgeführt. Vielleicht weil er den Zustand (CMD1) nicht wechselt?

Wenn ich das set in die Eingabe gebe, wird es ausgeführt.
Ich lasse das DOIF jetzt mal so unangetastet und gucke mal wie/ob er das WE schaltet.


Torsten
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Otto123 am 19 März 2021, 21:51:32
Hallo Torsten,

ich tue mich mit dem DOIF immer schwer...
Aber ich habe etwas ähnliches und dort ist do always gesetzt. Das tut ;)
defmod di_SonosCheck DOIF ([05:00] and [?Sonos] ne "opened" )(attr Sonos disable 1)(attr Sonos disable 0)
attr di_SonosCheck do always
attr di_SonosCheck room Bad,Status
attr di_SonosCheck wait 0,10


Gruß Otto
Titel: Antw:DOIF geht nicht in 2 Zweig
Beitrag von: Thoffi1978 am 22 März 2021, 15:21:53
Hallo Otto,

mit Do always funktioniert das DOIF.

Weshalb das DOIF aber den Zweig nicht wechselt erschließt sich mir noch nicht. Aber es funktioniert.

Vielen Dank,
Torsten