DOIF geht nicht in 2 Zweig

Begonnen von Thoffi1978, 18 März 2021, 18:12:22

Vorheriges Thema - Nächstes Thema

Thoffi1978

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

Otto123

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
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

Thoffi1978

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

Otto123

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
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

Thoffi1978

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

Otto123

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
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

Thoffi1978

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