Hauptmenü

DOIF mit Readingsage

Begonnen von Ronn, 09 Februar 2020, 23:41:26

Vorheriges Thema - Nächstes Thema

Ronn

Hallo,

ich habe ein DOIF das mit Readingsage nicht arbeitet. Was ist mein Fehler?


([ku_rollo:pct] > 49 and ReadingsAge("ku_bwm","state",0) > 20 and [ku_bwm:state] eq "motion") (set Kuechenlicht on)
DOELSE
(set Kuechenlicht off)


Ohne ReadingsAge fuktioniert das DOIF. Vielleicht kann jemand helfen? Besten Dank.

abc2006

Was mir als erstes einfällt: versucht doch mal
[ku_bwm:state:sec] > 20

https://commandref.fhem.de/commandref_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung

Falls das nicht hilft, poste bitte ein list von deinem Device incl. aussagekräftiger Beschreibung, was "nicht arbeitet" bedeutet.

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Ronn

Hallo,

anbei das List:


Internals:
   CFGFN     
   DEF        ([ku_rollo:pct] > 49 and ReadingsAge("ku_bwm","state",0) > 3 and [ku_bwm:state] eq "motion") (set Kuechenlicht on)
DOELSE
(set Kuechenlicht off)
   FUUID      5e401d97-f33f-5169-0acd-f1981b2d7263f27f
   MODEL      FHEM
   NAME       di_ku_li_rollo
   NOTIFYDEV  global,ku_rollo,ku_bwm
   NR         16184
   NTFY_ORDER 50-di_ku_li_rollo
   STATE      off
   TYPE       DOIF
   VERSION    20929 2020-01-10 09:44:35
   .attraggr:
   .attrminint:
   READINGS:
     2020-02-09 23:53:43   Device          ku_bwm
     2020-02-09 23:53:23   cmd             2
     2020-02-09 23:53:23   cmd_event       ku_bwm
     2020-02-09 23:53:23   cmd_nr          2
     2020-02-09 23:53:43   e_ku_bwm_state  motion
     2020-02-09 23:53:03   mode            enabled
     2020-02-09 23:53:23   state           off
     2020-02-09 23:53:23   wait_timer      no timer
   Regex:
     accu:
     cond:
       ku_bwm:
         0:
           state      ^ku_bwm$:^state:
       ku_rollo:
         0:
           pct        ^ku_rollo$:^pct:
   attr:
     cmdState:
       0:
         on
       1:
         off
     wait:
       0:
         0
       1:
         10
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'ku_rollo','pct') > 49 and ReadingsAge("ku_bwm","state",0) > 3 and ::ReadingValDoIf($hash,'ku_bwm','state') eq "motion"
   do:
     0:
       0          set Kuechenlicht on
     1:
       0          set Kuechenlicht off
   helper:
     DEVFILTER  ^global$|^ku_bwm$|^ku_rollo$
     NOTIFYDEV  global|ku_bwm|ku_rollo
     event      motion,reachable: 1,battery: 82
     globalinit 1
     last_timer 0
     sleepdevice ku_bwm
     sleepsubtimer -1
     sleeptimer -1
     timerdev   ku_bwm
     timerevent motion,reachable: 1,battery: 82
     triggerDev ku_bwm
     timerevents:
       motion
       reachable: 1
       battery: 82
     timereventsState:
       state: motion
       reachable: 1
       battery: 82
     triggerEvents:
       motion
       reachable: 1
       battery: 82
     triggerEventsState:
       state: motion
       reachable: 1
       battery: 82
   internals:
   readings:
     all         ku_rollo:pct ku_bwm:state
   trigger:
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   devStateIcon on:general_an_fuer_zeit@green off|initialized:general_aus@red disabled:general_aus@grey
   room       DOIF,Küche
   wait       0:10


Überlegung ist, dass das Licht erst dann angeht, wenn der Bewegungsmelder nach einer Zeit x ohne Bewegung ist und das Rollo über 50% geschlossen. Das als Hintergrund.

abc2006

Wenn ich dich richtig verstehe, könnte es daran liegen, dass
a) Readingsage >3
und
b) bwm eq "motion"
niemals gleichzeitig zutreffen.

Sendet dein BWM ein Event, wenn *keine* Bewegung mehr erkannt wird?

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Ronn

Guten Morgen,

wenn keine Bewegung mehr stattfindet springt der Bewegungsmelder auf nomotion.

amenomade

Wenn ku_bwm:state auf "motion" geht, dann ist ReadingsAge("ku_bwm","state",0) gleich 0 (das Reading wurde eh gerade aktualisiert)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

abc2006

Was hälst du von dem Ansatz, wenn das Reading auf nomotion geht, den Rollo zu prüfen und ggf. ein paar Sekunden zu warten, und dann das Licht einzuschalten?

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

amenomade

Wenn x > 10:
([ku_bwm] eq "motion" and [?ku_rollo:pct] > 49 and [?$SELF] =~ "cmd2_2|initialized")
(set Kuechenlicht on)
DOELSEIF ([ku_bwm] eq "nomotion")
(set Kuechenlicht off)
()

wait 0:10,y
mit y = x-10

do resetwait dazu, wenn erneutes "motion" während das Licht noch an ist, dazu führen soll, dass das Licht länger an bleibt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Ronn

Hallo,

danke für eure Rückmeldungen. Ich habe den Code jetzt mal reinkopiert. Das Licht geht nicht an. Hier das List:


Internals:
   CFGFN     
   DEF        ([ku_bwm] eq "motion" and [?ku_rollo:pct] > 49 and [?$SELF] =~ "cmd2_2|initialized")
(set Kuechenlicht on)
DOELSEIF ([ku_bwm] eq "nomotion")
(set Kuechenlicht off)
()
   FUUID      5e41c636-f33f-5169-7a61-c2f80353be43a02b
   MODEL      FHEM
   NAME       ku_rollo_help
   NOTIFYDEV  ku_bwm,global
   NR         2916
   NTFY_ORDER 50-ku_rollo_help
   STATE      cmd_2
   TYPE       DOIF
   VERSION    20929 2020-01-10 09:44:35
   .attraggr:
   .attrminint:
   READINGS:
     2020-02-11 19:41:43   Device          ku_bwm
     2020-02-11 19:30:28   cmd             2.2
     2020-02-11 19:30:28   cmd_event       ku_bwm
     2020-02-11 19:30:28   cmd_nr          2
     2020-02-11 19:30:28   cmd_seqnr       2
     2020-02-11 19:41:43   e_ku_bwm_STATE  nomotion
     2020-02-11 19:28:05   mode            enabled
     2020-02-11 19:30:28   state           cmd_2
     2020-02-11 19:30:28   wait_timer      no timer
   Regex:
     accu:
     cond:
       ku_bwm:
         0:
           &STATE     ^ku_bwm$
         1:
           &STATE     ^ku_bwm$
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         10
         30
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'ku_bwm','STATE') eq "motion" and ::ReadingValDoIf($hash,'ku_rollo','pct') > 49 and ::InternalDoIf($hash,'ku_rollo_help','STATE') =~ "cmd2_2|initialized"
     1          ::InternalDoIf($hash,'ku_bwm','STATE') eq "nomotion"
   do:
     0:
       0          set Kuechenlicht on
     1:
       0          set Kuechenlicht off
       1         
     2:
   helper:
     DEVFILTER  ^global$|^ku_bwm$
     NOTIFYDEV  global|ku_bwm
     event      battery: 82,reachable: 1,nomotion
     globalinit 1
     last_timer 0
     sleepdevice ku_bwm
     sleepsubtimer -1
     sleeptimer -1
     timerdev   ku_bwm
     timerevent battery: 82,reachable: 1,nomotion
     triggerDev ku_bwm
     timerevents:
       battery: 82
       reachable: 1
       nomotion
     timereventsState:
       battery: 82
       reachable: 1
       state: nomotion
     triggerEvents:
       battery: 82
       reachable: 1
       nomotion
     triggerEventsState:
       battery: 82
       reachable: 1
       state: nomotion
   internals:
     all         ku_bwm:STATE ku_rollo_help:STATE
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   wait       0:10,30


Mit :sec hatte ich auch schon umgesetzt. Auch kein Erfolg. Würde ein dummy etwas nutzen? Wo die Sekunden/Zeit ausgelesen werden können? Ich hatte gedacht es würde ähnlich wie ein anderes DOIF funktionieren. Mit dem hier


(([00:00-06:00,+[1]:00]) and ReadingsAge("ku_bwm","state",0) > 3600 and [ku_strom_tv:state] eq "on") (set ku_strom_tv off) (set Pushnachricht msg 'Fernseher Küche...' '...sollte jetzt ausgeschsltet sein!')


prüfe ich stündlich ob noch Bewegung in der Küche war. Ansonsten schaltet er den TV aus. Dachte dass, das durch ,,motion" genauso erzielt werden kann.

amenomade

Sorry, mein Schuld ;)

Statt
[?$SELF] =~ "cmd2_2|initialized"
eher
[?$SELF] =~ "cmd_2|initialized"

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus