FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: misux am 23 April 2018, 15:28:00

Titel: DOIF sendet Nachrichten immer 2 mal...
Beitrag von: misux am 23 April 2018, 15:28:00
HI! ich habe ein DOIF eingerichtet das mir wenns Klingelt Nachrichten per Telegram senden soll... Kann jemand aus dem Codeschnipsel ersehen warum die Nachricht immer 2 mal gesendet wird wenns ein mal klingelt?

Vielen Dank für eure Mühe!

List vom DOIF:
Internals:
   DEF        ([TuerKlingel] eq "on" and [?Haus] eq "absent")
(get CAMEingang image) (get CAMHof image)
(set Telegram message Haustür klingelt!)
(set Telegram sendPhoto /opt/fhem/www/snapshots/CAMEingang_snapshot.jpg)
(set Telegram sendPhoto /opt/fhem/www/snapshots/CAMHof_snapshot.jpg)
   MODEL      FHEM
   NAME       DOIFKlingel
   NR         124
   NTFY_ORDER 50-DOIFKlingel
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-04-23 14:58:45   Device          TuerKlingel
     2018-04-23 14:58:43   cmd             1.5
     2018-04-23 14:58:43   cmd_event       TuerKlingel
     2018-04-23 14:58:43   cmd_nr          1
     2018-04-23 14:58:43   cmd_seqnr       5
     2018-04-23 14:58:45   e_TuerKlingel_STATE off
     2018-04-10 18:39:08   mode            enabled
     2018-04-23 14:58:43   state           cmd_1
   Regex:
   condition:
     0          InternalDoIf($hash,'TuerKlingel','STATE') eq "on" and InternalDoIf($hash,'Haus','STATE') eq "absent"
   devices:
     0           TuerKlingel
     all         TuerKlingel
   do:
     0:
       0          get CAMEingang image
       1          get CAMHof image
       2          set Telegram message Haustür klingelt!
       3          set Telegram sendPhoto /opt/fhem/www/snapshots/CAMEingang_snapshot.jpg
       4          set Telegram sendPhoto /opt/fhem/www/snapshots/CAMHof_snapshot.jpg
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      off
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   TuerKlingel
     timerevent on
     triggerDev TuerKlingel
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       off
     triggerEventsState:
       state: off
   internals:
     0           TuerKlingel:STATE Haus:STATE
     all         TuerKlingel:STATE Haus:STATE
   itimer:
   perlblock:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 1
   do         always
   room       2 DOIF


List von der Klingel:
Internals:
   BTN        00
   CULHat1_MSGCNT 18
   CULHat1_RAWMSG 810b04xx0101a0017293000000
   CULHat1_RSSI -57
   CULHat1_TIME 2018-04-23 14:58:45
   CULHat3_MSGCNT 16
   CULHat3_RAWMSG 810b04xx0101a0017293000000
   CULHat3_RSSI -54
   CULHat3_TIME 2018-04-23 14:58:45
   DEF        7293 00
   IODev      CULHat1
   LASTInputDev CULHat1
   MSGCNT     34
   NAME       TuerKlingel
   NR         120
   STATE      off
   TYPE       FS20
   XMIT       7293
   CODE:
     1          7293 00
   READINGS:
     2018-04-10 17:45:06   onoffState      OFF
     2018-04-23 14:58:45   state           off
Attributes:
   IODev      CULHat1
   ignore     0
   model      fs20kse
   room       FS20
   webCmd     off
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: CoolTux am 23 April 2018, 16:01:18

attr TuerKlingel event-on-change-reading state
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: Frank_Huber am 23 April 2018, 17:25:55
und evtl das DOIF mit dem Attribut cmdPause "entprellen"
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: Ellert am 23 April 2018, 20:33:07
Du könntest auch auf Events triggern und die eindeutig spezifizieren.

Das Attribut checkReadingEvent in Verbindung mit state in der Abfrage, wäre auch eine Lösung.

Zur weiteren Konkretisierung von Vorschlägen solltest Du die erzeugten Events posten.
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: misux am 24 April 2018, 20:35:13
okay, ich habe jetzt erstmal


checkReadingEvent 1
cmdpause 3
do always
event-on-change-reading state
   
eingerichtet und werde beobachten wie sich das verhält. Wenns funktioniert werde ich das hier berichten... Wenn nicht auch ;D

Vielen Dank!
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: misux am 25 April 2018, 14:24:27
okay, hat leider nichts gebracht... Nachrichten kommen immernoch doppelt...

Zitat von: Ellert am 23 April 2018, 20:33:07
Du könntest auch auf Events triggern und die eindeutig spezifizieren.

Das Attribut checkReadingEvent in Verbindung mit state in der Abfrage, wäre auch eine Lösung.

Zur weiteren Konkretisierung von Vorschlägen solltest Du die erzeugten Events posten.

Könntest du mir das bitte etwas leienhafter erklären? Weis nicht so recht wo ich anfangen soll...
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: Frank_Huber am 25 April 2018, 14:33:48
Abfrage auf den Zustand: ([TuerKlingel] eq "on") --> ist immer wahr solange "on" ist.
Abfage auf Event: ([TuerKlingel:"on"]) --> tritt nur ein im Zeitpunkt vom Wechsel off zu on.
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: Ellert am 25 April 2018, 16:20:02
Zitat von: misux am 25 April 2018, 14:24:27
Weis nicht so recht wo ich anfangen soll...
Suche in der Befehlsreferenz zu DOIF nach den genannten Stichworten und lese den Text problembezogen. Wenn dann Fragen offen bleiben, dann stelle Verständnisfragen. Ich halte es für überflüssig Teile der Befehlsreferenz nachzuerzählen. Zum Eventmonitor gibt es einen Wiki-Artikel, folge dort auch den Links.
Titel: Antw:DOIF sendet Nachrichten immer 2 mal...
Beitrag von: Ellert am 25 April 2018, 16:25:48
Zitat von: Frank_Huber am 25 April 2018, 14:33:48
Abfrage auf den Zustand: ([TuerKlingel] eq "on") --> ist immer wahr solange "on" ist.
Abfage auf Event: ([TuerKlingel:"on"]) --> tritt nur ein im Zeitpunkt vom Wechsel off zu on.
Das hängt von den konkreten Events ab.
Wenn es z.B. die Events Tuerklingel: on und Tuerklingel:contact on gibt, könnte in Deinem Beispiel 2x getriggert werden.