Doif schaltet nicht immer (Schreibfehler?)

Begonnen von Wasserwerk33, 10 November 2019, 17:03:37

Vorheriges Thema - Nächstes Thema

Wasserwerk33

Hallo Leute

Ich denke ich habe ein Schreibfehler mit den Klammern. Habe schon versucht sie anderes zu setzten dann geht garnix mehr. Das unregelmäßige Schalten habe ich erst seit dem ich die 2. Zeit drin habe.

So wie heute "gerade" schaltet es gar nicht. Gestern hatte er geschaltet.

Danke schon mal im voraus
"LIST" mit Angehangen:

Internals:
DEF        ((([?6:50-21:45| Mo Di Mi Do Fr] or [?8:00-21:45| MWE]) and [ZWave_SENSOR_NOTIFICATION_3:luminance:d] < 12) and [LedEsszimmer] eq "off") (set Steckdose_1 on) DOELSEIF ([ZWave_SENSOR_NOTIFICATION_3:luminance:d] > 12 or [LedEsszimmer] eq "on") (set Steckdose_1 off)
   FUUID      5c8d07a1-f33f-faf7-344e-8101f2e8fc481907
   MODEL      FHEM
   NAME       Licht_Esszimmer
   NR         51
   NTFY_ORDER 50-Licht_Esszimmer
   STATE      cmd_2
   TYPE       DOIF
   VERSION    19303 2019-05-01 08:47:16
   READINGS:
     2019-11-10 20:08:20   Device          ZWave_SENSOR_NOTIFICATION_3
     2019-11-09 17:49:54   cmd             2
     2019-11-09 17:49:54   cmd_event       LedEsszimmer
     2019-11-09 17:49:54   cmd_nr          2
     2019-11-10 17:02:58   e_LedEsszimmer_STATE on
     2019-11-10 20:08:20   e_ZWave_SENSOR_NOTIFICATION_3_luminance 2 %
     2019-10-15 20:40:24   mode            enabled
     2019-11-09 17:49:54   state           cmd_2
     2019-11-09 21:45:00   timer_01_c01    10.11.2019 06:50:00|MoDiMiDoFr
     2019-11-09 21:45:00   timer_02_c01    10.11.2019 21:45:00|MoDiMiDoFr
     2019-11-09 21:45:00   timer_03_c01    10.11.2019 08:00:00|MWE
     2019-11-09 21:45:00   timer_04_c01    10.11.2019 21:45:00|MWE
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ((::DOIF_time($hash,0,1,$wday,$hms,"MoDiMiDoFr") or ::DOIF_time($hash,2,3,$wday,$hms,"MWE")) and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') < 12) and ::InternalDoIf($hash,'LedEsszimmer','STATE') eq "off"
     1          ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') > 12 or ::InternalDoIf($hash,'LedEsszimmer','STATE') eq "on"
   days:
     0          MoDiMiDoFr
     1          MoDiMiDoFr
     2          MWE
     3          MWE
   devices:
     0           ZWave_SENSOR_NOTIFICATION_3 LedEsszimmer
     1           ZWave_SENSOR_NOTIFICATION_3 LedEsszimmer
     all         ZWave_SENSOR_NOTIFICATION_3 LedEsszimmer
   do:
     0:
       0          set Steckdose_1 on
     1:
       0          set Steckdose_1 off
     2:
   helper:
     event      temperature: 22.0 C
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   ZWave_SENSOR_NOTIFICATION_3
     timerevent luminance: 2 %
     triggerDev ZWave_SENSOR_NOTIFICATION_3
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: LedEsszimmer
       state: cmd_2
     timerevents:
       luminance: 2 %
     timereventsState:
       luminance: 2 %
     triggerEvents:
       temperature: 22.0 C
     triggerEventsState:
       temperature: 22.0 C
   internals:
     0           LedEsszimmer:STATE
     1           LedEsszimmer:STATE
     all         LedEsszimmer:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1573365000
     1          1573418700
     2          1573369200
     3          1573418700
   perlblock:
   readings:
     0           ZWave_SENSOR_NOTIFICATION_3:luminance
     1           ZWave_SENSOR_NOTIFICATION_3:luminance
     all         ZWave_SENSOR_NOTIFICATION_3:luminance
   realtime:
     0          06:50:00
     1          21:45:00
     2          08:00:00
     3          21:45:00
   time:
     0          6:50
     1          21:45:00
     2          8:00
     3          21:45:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
   trigger:
   triggertime:
     1573418700:
       localtime  1573418700
       hash:
   uiState:
   uiTable:
Attributes:
   event-on-update-reading 1
   room       Licht

amenomade

Sorry, aber das so wirklich unlesbar.
Die Klammern scheinen ok zu sein. Aber für den Rest habe ich keinen Mut, um es zu entziffern.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wasserwerk33

Sry.
Habe es nochmal neu eingestellt.

Okay dann sind Klammern schon mal nicht das Problem.


amenomade

So... Danke. Jetzt musst Du beschreiben, was genau nicht funktioniert.

Im "list" sieht man, dass anscheinend LedEsszimmer seit gestern auf "on" ist. Der DOIF sieht dann keine Notwendigkeit, den Status (cmd2) zu ändern.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wasserwerk33

Es schaltet unregelmäßig.
Okay von vorne.

Das Doif gab es schon so länger nur ohne die Tage. Da hat es immer akkurat geschaltet. Jetzt schaltet es mal und mal nicht. Besitze noch eins genauso im Wohnzimmer nur ohne LED.

Dieses schaltet auch unzuverlässig. Aber nicht so schlimm wie das Esszimmer.

Internals:
   DEF        (([?6:50-21:45| Mo Di Mi Do Fr] or [?8:00-21:45| MWE]) and [ZWave_SENSOR_NOTIFICATION_3:luminance:d] < 15) (set Steckdose_2 on) DOELSEIF ([ZWave_SENSOR_NOTIFICATION_3:luminance:d] > 15) (set Steckdose_2 off)
   FUUID      5c8d07d6-f33f-faf7-6f36-febb5d7e252d6950
   MODEL      FHEM
   NAME       Licht_Wohnzimmer
   NR         52
   NTFY_ORDER 50-Licht_Wohnzimmer
   STATE      cmd_2
   TYPE       DOIF
   VERSION    19303 2019-05-01 08:47:16
   READINGS:
     2019-11-10 21:22:31   Device          ZWave_SENSOR_NOTIFICATION_3
     2019-11-10 16:48:10   cmd             2
     2019-11-10 16:48:10   cmd_event       set_cmd_2
     2019-11-10 16:48:10   cmd_nr          2
     2019-11-10 21:22:31   e_ZWave_SENSOR_NOTIFICATION_3_luminance 3 %
     2019-10-18 09:22:12   mode            enabled
     2019-11-10 16:48:10   state           cmd_2
     2019-11-09 21:45:00   timer_01_c01    10.11.2019 06:50:00|MoDiMiDoFr
     2019-11-09 21:45:00   timer_02_c01    10.11.2019 21:45:00|MoDiMiDoFr
     2019-11-09 21:45:00   timer_03_c01    10.11.2019 08:00:00|MWE
     2019-11-09 21:45:00   timer_04_c01    10.11.2019 21:45:00|MWE
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::DOIF_time($hash,0,1,$wday,$hms,"MoDiMiDoFr") or ::DOIF_time($hash,2,3,$wday,$hms,"MWE")) and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') < 15
     1          ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') > 15
   days:
     0          MoDiMiDoFr
     1          MoDiMiDoFr
     2          MWE
     3          MWE
   devices:
     0           ZWave_SENSOR_NOTIFICATION_3
     1           ZWave_SENSOR_NOTIFICATION_3
     all         ZWave_SENSOR_NOTIFICATION_3
   do:
     0:
       0          set Steckdose_2 on
     1:
       0          set Steckdose_2 off
     2:
   helper:
     event      luminance: 3 %
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   ZWave_SENSOR_NOTIFICATION_3
     timerevent luminance: 35 %
     triggerDev ZWave_SENSOR_NOTIFICATION_3
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: set_cmd_2
       state: cmd_2
     timerevents:
       luminance: 35 %
     timereventsState:
       luminance: 35 %
     triggerEvents:
       luminance: 3 %
     triggerEventsState:
       luminance: 3 %
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1573365000
     1          1573418700
     2          1573369200
     3          1573418700
   perlblock:
   readings:
     0           ZWave_SENSOR_NOTIFICATION_3:luminance
     1           ZWave_SENSOR_NOTIFICATION_3:luminance
     all         ZWave_SENSOR_NOTIFICATION_3:luminance
   realtime:
     0          06:50:00
     1          21:45:00
     2          08:00:00
     3          21:45:00
   time:
     0          6:50
     1          21:45:00
     2          8:00
     3          21:45:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
   trigger:
   triggertime:
     1573418700:
       localtime  1573418700
       hash:
   uiState:
   uiTable:
Attributes:


amenomade

Also nochmal: was bedeutet "unregelmässig" genau?
Am besten ein "list" des DOIFs posten, wenn er deiner Meinung nach in einem falschen Zustand ist. Hier hast Du anscheinend manuell ein "set cmd2" gemacht. Damit kann man nichts analysieren.

Vielleicht 2 Tipps:
- in der erste Bedingung, tue zuerst die triggernde Devices (hier luminance) und erst dann die, die nur geprüft werden (hier Zeit)
- man sollte vielleicht bei luminance eine Hysterese bauen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wasserwerk33

Es hat einfach nicht geschaltete obwohl der zwave Sensor auf 4% stand. Also unter den zulässigen 15%. Deswegen habe ich es geschaltet.
Das schalten wenn led ( indirekte Deckenbeleuchtungen) ein  oder aus geschaltet wird klappt ohne Probleme da schaltet sich dann das Licht_Esszimmer passend zu an oder aus.

Nur halt eben nicht wenn es morgens dunkel ist springt sie nicht an. Außer wenn ich sie morgens einmal angeschaltete habe und sie sich dann wieder automatisch abschaltet, springt sie danach ohne Probleme wieder an wenn es dunkel genug ist.
Aber dieses Problem habe ich erst seit dem ich es mit den Wochentagen und 2 verschiedene Zeiten habe.
das Abschalten (Tablet Taster Funksteckdosen) und nächsten Tag wieder automatisch an klappte vorher ohne Probleme.
Die indirekte Lampe wird über einen Taster Augen Tablet geschaltete, dieser Wechsel klappt Ja immer noch ohne Probleme.

amenomade

Na gut... mit dem geposteten "list" kann man nicht wirklich sehen, was Du beschreibst.

Aber mir ist was eingefallen: Heute (also... sagen wir mal, wir haben noch Sonntag...) ist keine Zeitbedingung wahr in deinem DOIF
Mo Di Mi Do Fr ist falsch, da wir So haben
MWE ist auch falsch, da Morgen Montag ist: Morgen ist kein WE

Ich glaube, dein DOIF kann Sonntags nicht "on" schalten. Luminance hätte ja um 21:22 mit 3% schalten müssen... aber siehe oben.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wasserwerk33

Ich probieren mal es einfach den direkten Tag angaben. Heute (Montag) hat es wieder ganz normal geschaltet ohne Probleme den ganzen Tag.

Aber laut Wiki müsste es mit "MWE" gehen.
Wie gesagt ich Tage da mal Samstag Sonntag ein.

amenomade

MWE = 9 = Morgen Wochenende = $twe = tomorrow weekend = wird wahr wenn der Folgetag WE ist.
Was Du willst ist vielleicht eher WE = 7 = Wochenende = $we?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wasserwerk33

Habe mir nochmal wiki durchgelesen. Und ja du hast recht die 7 wäre richtig. Habe es geändert. Mal schauen ob damit das Problem schon weg ist.
Melde mich

Per

Was Allgemeines: die Struktur deines DOIF kann man auch
(A und B) (do a)
(!A) (do b)

darstellen (auch wenn es für "12" keinen Fall gibt).
Da kann man auch A als DOIF_Reading abbilden. Wird übersichtlicher, weniger Last und vor allem leichter zu warten.