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
attr TuerKlingel event-on-change-reading state
und evtl das DOIF mit dem Attribut cmdPause "entprellen"
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.
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!
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...
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.
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.
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.