Hauptmenü

DOIF vs. notify

Begonnen von Prof. Dr. Peter Henning, 25 September 2026, 17:39:05

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Ich habe ein Setting, das verlässlich ein bestimmtes Event auslöst, indem ein Reading gesetzt wird.
Zitat2026-09-25 17:28:43 TelegramBot TelegramBot diagramSource: 90:XXX:ID7y.plot

Könnte mir bitte mal jemand erklären, warum
defmod tb.d notify TelegramBot.*diagramSource.*90.* (etc...)zuverlässig triggert
defmod TelegramBot.Diagram DOIF ([TelegramBot:"diagramSource.*90.*"]) (etc...)aber nicht?

LG

pah

P.S.: Ja, do always ist gesetzt, auch diverse Varianten habe ich ausprobiert.

Damian

Da muss bei dir noch etwas anders im Argen sein, denn

setreading TelegramBot diagramSource 90:XXX:ID7y.plot
führt bei mir zu:

Internals:
   CFGFN     
   FUUID      6ab6aafc-f33f-30f6-3df3-a86e2c6223a8d2b9
   NAME       TelegramBot
   NR         11797
   STATE      ???
   TYPE       dummy
   eventCount 2
   READINGS:
     2026-09-25 19:12:19   diagramSource   90:XXX:ID7y.plot
Attributes:

und

Internals:
   CFGFN     
   DEF        ([TelegramBot:"diagramSource.*90.*"]) ()
   FUUID      6ab6aab7-f33f-30f6-3ba0-f6cdd02d98b25472
   MODEL      FHEM
   NAME       TelegramBot.Diagram
   NOTIFYDEV  global,TelegramBot
   NR         11770
   NTFY_ORDER 50-TelegramBot.Diagram
   STATE      cmd_1
   TYPE       DOIF
   VERSION        0 2026-05-10 21:47:00
   eventCount 3
   READINGS:
     2026-09-25 19:12:19   Device          TelegramBot
     2026-09-25 19:12:19   cmd             1
     2026-09-25 19:12:19   cmd_event       TelegramBot
     2026-09-25 19:12:19   cmd_nr          1
     2026-09-25 19:12:19   e_TelegramBot_events diagramSource: 90:XXX:ID7y.plot
     2026-09-25 19:09:11   mode            enabled
     2026-09-25 19:12:19   state           cmd_1
   Regex:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Prof. Dr. Peter Henning

Im Argen sicher nicht. Wenn ich das "setreading TelegramBot diagramSource 90:XX:YY" von der Kommandozeile aus absetze, triggert das DOIF aus dem Post unten korrekt - das ist aber nicht der gewünschte Weg.

Sondern das Reading wird bei mir per "fhem(setreading...)" gesetzt (und der Event korrekt erzeugt) aus einem Handler für den TelegramBot, dieser Handler wiederum wird durch ein notify auf Telegram Events gestartet.

Dieser Weg funktioniert, ist auch seit Jahren mit einem anderen Reading im produktiven Betrieb. Konkret: wenn ich in diesem Handler ein anderes Reading setze - nicht "diagramSource", sondern "photoSource", triggert ein DOIF mit
([TelegramBot:".*photoSource.*DoorPi"]) ganz verlässlich.

Also gute Frage: Was blockiert die Event-Feststellung in dem DOIF unten? Das Reading e_TelegramBot.Helper_events in dem genannten DOIF zeigt  alle TelegramBot-Events, die ich auch im Event-Monitor sehe - _bis auf das Event mit diagramSource_.

Unter welchen Bedingungen ist genau ein Event in einer Serie, die korrekt im Event-Monitor erscheint, kein Event für DOIF?

LG

pah

Prof. Dr. Peter Henning

Ich kann das Rätsel sogar noch erweitern.

Wenn ich das Reading diagramSource nämlich nicht in dem TelegramBot setze, sondern dazu ein Dummy TelegramBot.Helper verwende (und natürlich in dem DOIF auch auf Events von TelegramBot.Helper lausche), ist alles in Butter und wird korrekt getriggert.

Natürlich kann die Quelle im TelegramBot selbst liegen - irgendetwas sich auf die Event-Verarbeitung auswirken.

Aber warum bei "diagramSource", nicht aber bei "photoSource"?

LG

pah

Damian

Tja, da muss leider passen. Im DOIF sind FHEM-Standardmechanismen zur Event-Erkennung eingebaut, die sich seit Jahren bewährt haben. Ich gehe davon aus, dass es irgendetwas mit der Quelle TelegramBot zu tun hat. Ich weiß z. B., dass es Probleme gab, wenn es über FHEM2FHEM Events gab, zu denen es kein Device auf der DOIF-Seite gab. Das dürfte hier wohl aber nicht das Problem sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF