[gelöst] Welcher Trigger hat zuletzt getriggert?

Begonnen von spi3845, 11 Juli 2025, 09:30:14

Vorheriges Thema - Nächstes Thema

spi3845

Hallo zusammen,

kann man in einem DOIF/Perl sehen, welcher Trigger zuletzt getriggert und zu der Ausführung des DOIFs geführt hat?

Bsp.
if ([remotecontrol:"on"] or [Wandtaster:"on"]) ...Wer hat getriggert? remotecontrol oder Wandtaster?

["<Regex-Devices>:<Regex-Events>"] Welches passende Regex-Device mit welchem Event hat getriggert?

Viele Grüße,
spi

Damian

Es werden Readings erzeugt, die mit "e_" beginnen, am Namen des Readings kannst du erkennen welches Device, am Inhalt welcher Wert und an der Zeit des Readings wann getriggert wurde.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

spi3845

Zitat von: Damian am 11 Juli 2025, 12:15:28Es werden Readings erzeugt, die mit "e_" beginnen, am Namen des Readings kannst du erkennen welches Device, am Inhalt welcher Wert und an der Zeit des Readings wann getriggert wurde.

Cool - danke!

tobi01001

help DOIF
ZitatIn der Bedingung und im Ausführungsteil werden die Schlüsselwörter $SELF durch den eigenen Namen des DOIF-Moduls, $DEVICE durch das aktuelle Device, $EVENT durch die passende Eventzeile, $EVENTS kommagetrennt durch alle Eventzeilen des Triggers ersetzt.

Entsprechend können Perl-Variablen in der DOIF-Bedingung ausgewertet werden, sie werden in Kleinbuchstaben geschrieben. Sie lauten: $device, $event, $events

Das kannst du dir ins Log oder sonstwohin schreiben und siehst, we ausgelöst hat. Außerdem schreibt DOIF readings mit e_$DEVICE_$EVENT (teil eins) dessen Wert den "Wert des Events" enthält und der Zeistempel wann das passiert ist....

define di_dummyDI DOIF ([du_dummyDI1:state] or [du_dummyDI2:state]) (set $SELF myTrigger $DEVICE $EVENT)
attr di_dummyDI DbLogExclude .*
attr di_dummyDI event-on-change-reading .*
attr di_dummyDI readingList myTrigger
#   CFGFN     
#   DEF        ([du_dummyDI1:state] or [du_dummyDI2:state]) (set $SELF myTrigger $DEVICE $EVENT)
#   FUUID      6870e61c-f33f-bc77-42b8-9ece57b943720ec4
#   MODEL      FHEM
#   NAME       di_dummyDI
#   NOTIFYDEV  global,du_dummyDI2,du_dummyDI1
#   NR         956
#   NTFY_ORDER 50-di_dummyDI
#   STATE      cmd_1
#   TYPE       DOIF
#   VERSION    29460 2024-12-29 20:25:48
#   eventCount 4
#   Helper:
#     DBLOG:
#       cmd:
#         myDbLog:
#           TIME       1752229404.34134
#           VALUE      0
#       mode:
#         myDbLog:
#           TIME       1752229404.34134
#           VALUE      enabled
#       state:
#         myDbLog:
#           TIME       1752229404.34134
#           VALUE      initialized
#   READINGS:
#     2025-07-11 12:25:29   Device          du_dummyDI2
#     2025-07-11 12:24:51   cmd             1
#     2025-07-11 12:24:51   cmd_event       du_dummyDI1
#     2025-07-11 12:24:51   cmd_nr          1
#     2025-07-11 12:24:51   e_du_dummyDI1_state on
#     2025-07-11 12:25:29   e_du_dummyDI2_state off
#     2025-07-11 12:24:20   mode            enabled
#     2025-07-11 12:24:51   myTrigger       du_dummyDI1 on
#     2025-07-11 12:24:51   state           cmd_1
#   Regex:
#     accu:
#     bar:
#     barAvg:
#     collect:
#     cond:
#       du_dummyDI1:
#         0:
#           state      ^du_dummyDI1$:^state:
#       du_dummyDI2:
#         0:
#           state      ^du_dummyDI2$:^state:
#   attr:
#     cmdState:
#     wait:
#     waitdel:
#   condition:
#     0          ::ReadingValDoIf($hash,'du_dummyDI1','state') or ::ReadingValDoIf($hash,'du_dummyDI2','state')
#   do:
#     0:
#       0          set di_dummyDI myTrigger $DEVICE $EVENT
#     1:
#   helper:
#     NOTIFYDEV  global,du_dummyDI2,du_dummyDI1
#     event      off
#     globalinit 1
#     last_timer 0
#     sleeptimer -1
#     timerdev   du_dummyDI2
#     timerevent off
#     triggerDev du_dummyDI2
#     timerevents:
#       off
#     timereventsState:
#       state: off
#     triggerEvents:
#       off
#     triggerEventsState:
#       state: off
#   hmccu:
#   internals:
#   readings:
#     all         du_dummyDI1:state du_dummyDI2:state
#   trigger:
#   uiState:
#   uiTable:
#
setstate di_dummyDI cmd_1
setstate di_dummyDI 2025-07-11 12:25:29 Device du_dummyDI2
setstate di_dummyDI 2025-07-11 12:24:51 cmd 1
setstate di_dummyDI 2025-07-11 12:24:51 cmd_event du_dummyDI1
setstate di_dummyDI 2025-07-11 12:24:51 cmd_nr 1
setstate di_dummyDI 2025-07-11 12:24:51 e_du_dummyDI1_state on
setstate di_dummyDI 2025-07-11 12:25:29 e_du_dummyDI2_state off
setstate di_dummyDI 2025-07-11 12:24:20 mode enabled
setstate di_dummyDI 2025-07-11 12:24:51 myTrigger du_dummyDI1 on
setstate di_dummyDI 2025-07-11 12:24:51 state cmd_1

define du_dummyDI1 dummy
attr du_dummyDI1 DbLogExclude .*
attr du_dummyDI1 event-on-change-reading .*
#   CFGFN     
#   DEF       
#   FUUID      6870e606-f33f-bc77-d189-e58e8a562debcd64
#   NAME       du_dummyDI1
#   NR         953
#   STATE      on
#   TYPE       dummy
#   eventCount 1
#   READINGS:
#     2025-07-11 12:24:51   state           on
#   hmccu:
#
setstate du_dummyDI1 on
setstate du_dummyDI1 2025-07-11 12:24:51 state on


Im perl modus werden in den e_ readings die Blöcke genannt und wann sie zuletzt ausgeführt wurden. Aber auch da sind $EVENT und $DEVICE verfügbar....
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

spi3845