FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: hyper2910 am 02 Februar 2021, 22:40:43

Titel: Do if problem
Beitrag von: hyper2910 am 02 Februar 2021, 22:40:43
Hallo,

Ich verzweifele mittlerweile

defmod Tuer.Motion.doif DOIF ([T:light] <3 and ([0x680ae2fffe39ae76:state] eq "motion")) (set Tuerlicht on-for-timer 45)

Wenn es dunkel ist und ein Bewegungsmeldern "motion" meldet soll ein Licht für 45sek angehen.

Irgendwie schaltet das DOIF nicht das Licht.
Ich sehe das CMD2 und bei Bewegung auch CMD1 getriggert wird, aber das blöde Licht geht nicht an.

Einzeln funktioniert der Befehl...


Titel: Antw:Do if problem
Beitrag von: Stelaku am 02 Februar 2021, 23:13:52
Hallo hyper2910

Kann denn das Device Tuerlicht überhaupt on-for-timer ?

Gruß

Stephan
Titel: Antw:Do if problem
Beitrag von: Otto123 am 02 Februar 2021, 23:53:45
Hallo,

Vorschlag (Edit: Fehler mit Devicenamen korrigiert):
defmod Tuer.Motion.doif DOIF ([T:light] <3 and ([0x680ae2fffe39ae76:state] eq "motion")) (set Tuerlicht on)(set Tuerlicht off)
attr Tuer.Motion.doif do resetwait
attr Tuer.Motion.doif  room Flur
attr Tuer.Motion.doif wait 0,45


Vorteil gegenüber on-for-timer: würde nachtriggern wenn die Zeiten passen.

Gruß Otto
Titel: Antw:Do if problem
Beitrag von: kumue am 03 Februar 2021, 06:43:23
Zitat von: Otto123 am 02 Februar 2021, 23:53:45
Hallo,

Vorschlag:
defmod Tuer.Motion.doif DOIF ([T:light] <3 and ([0x680ae2fffe39ae76:state] eq "motion")) (set Tuerlicht on)(set Tuerlicht off)
attr di_Flurlicht do resetwait
attr di_Flurlicht room Flur
attr di_Flurlicht wait 0,45


Vorteil gegenüber on-for-timer: würde nachtriggern wenn die Zeiten passen.

Gruß Otto

Ein Schönheitsfehler...
Damit keine unnötigen Fehlermeldungen kommen:

attr Tuer.Motion.doif do resetwait
attr Tuer.Motion.doif room Flur
attr Tuer.Motion.doif wait 0,45
Titel: Antw:Do if problem
Beitrag von: hyper2910 am 03 Februar 2021, 08:13:33
Hi zusammen,


also On-for-timer geht mit dem device, manuell kann ich es ja schalten.

defmod Tuer.Motion1.doif DOIF ([T:light] <3 and ([0x680ae2fffe39ae76:state] eq "motion")) (set Tuerlicht on)(set Tuerlicht off)

Tuer.Motion1.doif
initialized

Habe ich getestet, aber der steht nur auf initialzed, mehr passiert da nicht!

Titel: Antw:Do if problem
Beitrag von: pc1246 am 03 Februar 2021, 08:31:14
Moin
So ein freundliches list von "Tuer.Motion.doif" wuere eventuell Licht ins dunkel bringen!
Gruss Christoph
Titel: Antw:Do if problem
Beitrag von: kumue am 03 Februar 2021, 08:31:37
ist T:light aktuell >3 ?...

Ein list vom DOIF wäre hilfreich
list Tuer.Motion1.doif
Titel: Antw:Do if problem
Beitrag von: hyper2910 am 03 Februar 2021, 08:53:05
Hier noch das List


Internals:
   CFGFN     
   DEF        ([T:light] <3 and ([0x680ae2fffe39ae76:state] eq "motion")) (set Tuerlicht on)(set Tuerlicht off)
   FUUID      601a3f99-f33f-395a-7345-9107d70a1fb90ea7
   MODEL      FHEM
   NAME       Tuer.Motion1.doif
   NOTIFYDEV  T,global,0x680ae2fffe39ae76
   NR         64844
   NTFY_ORDER 50-Tuer.Motion1.doif
   STATE      initialized
   TYPE       DOIF
   VERSION    23640 2021-01-30 10:49:48
   READINGS:
     2021-02-03 08:15:56   Device          0x680ae2fffe39ae76
     2021-02-03 07:15:53   cmd             0
     2021-02-03 08:15:56   e_0x680ae2fffe39ae76_state no_motion
     2021-02-03 08:14:15   e_T_light       4
     2021-02-03 08:52:09   mode            enabled
     2021-02-03 08:52:09   state           initialized
   Regex:
     accu:
     cond:
       0x680ae2fffe39ae76:
         0:
           state      ^0x680ae2fffe39ae76$:^state:
       T:
         0:
           light      ^T$:^light:
   attr:
     wait:
       0:
         0
         45
   condition:
     0          ::ReadingValDoIf($hash,'T','light') <3 and (::ReadingValDoIf($hash,'0x680ae2fffe39ae76','state') eq "motion")
   do:
     0:
       0          set Tuerlicht on
       1          set Tuerlicht off
     1:
   helper:
     DEVFILTER  ^global$|^T$|^0x680ae2fffe39ae76$
     NOTIFYDEV  global|T|0x680ae2fffe39ae76
     event      no_motion,occupancy: false,requested_brightness_percent: 100,requested_brightness_level: 254,battery: ok,battery_level: 47,linkquality: 39
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev 0x680ae2fffe39ae76
     triggerEvents:
       no_motion
       occupancy: false
       requested_brightness_percent: 100
       requested_brightness_level: 254
       battery: ok
       battery_level: 47
       linkquality: 39
     triggerEventsState:
       state: no_motion
       occupancy: false
       requested_brightness_percent: 100
       requested_brightness_level: 254
       battery: ok
       battery_level: 47
       linkquality: 39
   internals:
   readings:
     all         T:light 0x680ae2fffe39ae76:state
   trigger:
   uiTable:
Attributes:
   do         resetwait
   room       4.00 Draussen
   wait       0,45
Titel: Antw:Do if problem
Beitrag von: Otto123 am 03 Februar 2021, 08:59:38
Moin,

sorry für den Fehler, wollte es von meinem Code noch anpassen und habe die Hälfte vergessen  :-[

Zitat2021-02-03 08:15:56   e_0x680ae2fffe39ae76_state no_motion
     2021-02-03 08:14:15   e_T_light       4
Keine der beiden Bedingungen ist erfüllt, also warum sollte das DOIF schalten?

Gruß Otto
Titel: Antw:Do if problem
Beitrag von: kumue am 03 Februar 2021, 09:04:16
Zitat von: Otto123 am 03 Februar 2021, 08:59:38
Moin,

sorry für den Fehler, wollte es von meinem Code noch anpassen und habe die Hälfte vergessen  :-[
Keine der beiden Bedingungen ist erfüllt, also warum sollte das DOIF schalten?

Gruß Otto

...war ja auch schon spät.... :)

Ansonsten... Otto hats auf den Punkt gebracht.
Titel: Antw:Do if problem
Beitrag von: hyper2910 am 03 Februar 2021, 09:07:37
klar jetzt nicht mehr weil es heller ist.


eben war der Wert noch auf 2.

Ich muss aber jetzt auch zur Arbeit und werde heute abend im Dunkeln nochmals testen!

Titel: Antw:Do if problem
Beitrag von: Otto123 am 03 Februar 2021, 09:13:55
falls Du heute Abend noch Hilfe brauchst solltest Du auch bitte ein list 0x680ae2fffe39ae76 liefern ;)
Titel: Antw:Do if problem
Beitrag von: kumue am 03 Februar 2021, 09:47:02
und im Dunkel für Bewegung sorgen  ;)
Titel: Antw:Do if problem
Beitrag von: hydrotec am 03 Februar 2021, 11:36:42
Hallo zusammen,

kleine Zwischenfrage.
Es soll doch nur auf den Trigger "motion" reagiert werden.
Müsste der Aufruf dann nicht folgendermaßen aussehen?
(([0x680ae2fffe39ae76:"^state:.motion$"]) and ([?T:light] <3)) (set Tuerlicht on)(set Tuerlicht off)

Gruß Karsten
Titel: Antw:Do if problem
Beitrag von: kumue am 03 Februar 2021, 11:43:30
im ersten post sah das aber nicht so aus, aber nun dank des ? wird das Licht nur abgefragt und triggert selbst nicht...
sollte passen
Titel: Antw:Do if problem
Beitrag von: Otto123 am 03 Februar 2021, 11:58:02
kann man so machen - viele Wege führen zum Licht.
Dann muss der Event aber auch exakt so aussehen: ^state:.motion$

Das weiß aber nur der TE (bestenfalls :) )

Ich gebe zu bedenken, dass state im Event normal nicht vorkommt. Also ich würde sagen, dass passt (allein mit der Änderung) nicht. Stichwort addStateEvent
Lassen wir ihn erstmal im Dunkeln testen, optimieren kann man immer noch.
Titel: Antw:Do if problem
Beitrag von: hydrotec am 03 Februar 2021, 12:36:29
Hallo Otto,

Zitat von: Otto123 am 03 Februar 2021, 11:58:02
Dann muss der Event aber auch exakt so aussehen: ^state:.motion$
da hast du natürlich recht.
Ich hatte nur das Event vom TE übernommen.
Genauer kann man das nur im Event monitor erkennen auf welches Event DOIF reagieren soll.

Mir ging es nur darum, das wenn (wie im ersten Post geschrieben) beide Events abgefragt werden,
dann müssten die Events doch gleichzeitig stattfinden damit DOIF reagiert, oder täusche ich mich da.

Wie gesagt, war nur ne kleine Zwischenfrage  ;)

Zitat von: Otto123 am 03 Februar 2021, 11:58:02
Lassen wir ihn erstmal im Dunkeln testen, optimieren kann man immer noch.
Zustimmung  :)
Titel: Antw:Do if problem
Beitrag von: Damian am 03 Februar 2021, 12:42:25
Zitat von: hydrotec am 03 Februar 2021, 12:36:29
Hallo Otto,
da hast du natürlich recht.
Ich hatte nur das Event vom TE übernommen.
Genauer kann man das nur im Event monitor erkennen auf welches Event DOIF reagieren soll.

Mir ging es nur darum, das wenn (wie im ersten Post geschrieben) beide Events abgefragt werden,
dann müssten die Events doch gleichzeitig stattfinden damit DOIF reagiert, oder täusche ich mich da.

Wie gesagt, war nur ne kleine Zwischenfrage  ;)
Zustimmung  :)

Das, was du im ersten Poste definiert hast, sind keine Event-Abfragen, sondern event-getriggerte Zustandsabfragen. Zustände lassen sich im Grunde zu jedem Zeitpunkt abfragen. Event-Abfragen (Eventangaben in Anführungszeichen) dagegen sind nur zum Triggerzeitpunkt wahr und sonnst sind sie nicht wahr.
Titel: Antw:Do if problem
Beitrag von: hydrotec am 03 Februar 2021, 13:16:13
Hallo Damian,

Dankeschön für die Aufklärung.  :)

Gruß Karsten