Hallo zusammen,
um div. Plotabrisse zu vermeiden, verwende ich AddLog. Ich setzte also stündlich einen "Trigger device state << addlog" ab.
Sieht bei mir im Detail also so aus:
2015-12-03_20:20:19 WF.tuerkontakt closed
2015-12-03_21:00:00 WF.tuerkontakt closed << addLog
2015-12-03_22:00:00 WF.tuerkontakt closed << addLog
Damit meine notifys nicht ständig anspringen konnte ich mir so helfen:
WF.tuerkontakt.closed { , anstatt GA.tuerkontakt.closed.* {
Beim DOIF habe ich leider noch nichts gefunden.
Der DOIF sieht so aus:
([WF.tuerkontakt:?closed]
Wie kann ich nun vermeiden, dass der DOIF nicht durch
WF.tuerkontakt closed << addLog
anspringt ??
So funktioniert es zwar, ist aber alles andere als elegant:
([WF.tuerkontakt:?closed << addLog])() ## Mache nichts bei Trigger WF.tuerkontakt closed << addLog
DOELSEIF
([WF.tuerkontakt:?closed]
.....
Bei HM könntest Du das DOIF auf das Reading "contact" Triggern.
Ich will mal versuchen, meine Frage verständlicher zu fomulieren ...
Ich such den Perl Code der bei einem "closed << addlog" unwahr setzt, und bei einem "closed" wahr setzt...
Zitat von: Rampler am 06 Dezember 2015, 20:02:31
Ich will mal versuchen, meine Frage verständlicher zu fomulieren ...
Ich such den Perl Code der bei einem "closed << addlog" unwahr setzt, und bei einem "closed" wahr setzt...
DOIF ([WF.tuerkontakt:?closed$]) (tue, was du willst)
Gruß
Damian
Zitat von: Damian am 06 Dezember 2015, 21:31:47
DOIF ([WF.tuerkontakt:?closed$]) (tue, was du willst)
Hallo Damian,
habe ich gerae getestet, funktioniert leider nicht:
Internals:
DEF ([WF.tuerkontakt:?closed$] and
[WF.keymatic] eq "locked")
(set FL.EG.anzeige.led04 led green)
DOELSEIF
([WF.tuerkontakt:?closed$] and
[WF.keymatic] eq "unlocked")
(set FL.EG.anzeige.led04 led orange)
DOELSEIF
([WF.tuerkontakt:?open$])
(set FL.EG.anzeige.led04 led red)
NAME WF.ledcontrol
NR 310
NTFY_ORDER 50-WF.ledcontrol
STATE initialized
TYPE DOIF
Readings:
2015-12-07 14:57:10 Device WF.tuerkontakt
2015-12-07 14:57:10 e_WF.tuerkontakt_events closed << addLog
2015-12-07 14:57:01 state initialized
Condition:
0 EventDoIf('WF.tuerkontakt',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'closed$') and InternalDoIf('WF.keymatic','STATE','') eq "locked"
1 EventDoIf('WF.tuerkontakt',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'closed$') and InternalDoIf('WF.keymatic','STATE','') eq "unlocked"
2 EventDoIf('WF.tuerkontakt',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'open$')
Devices:
0 WF.tuerkontakt WF.keymatic
1 WF.tuerkontakt WF.keymatic
2 WF.tuerkontakt
all WF.tuerkontakt WF.keymatic
Do:
0:
0 set FL.EG.anzeige.led04 led green
1:
0 set FL.EG.anzeige.led04 led orange
2:
0 set FL.EG.anzeige.led04 led red
3:
Helper:
globalinit 1
last_timer 0
sleeptimer -1
triggerDev WF.tuerkontakt
triggerEvents:
closed << addLog
Internals:
0 WF.keymatic:STATE
1 WF.keymatic:STATE
all WF.keymatic:STATE
Itimer:
Readings:
State:
Timerfunc:
Trigger:
all WF.tuerkontakt
Attributes:
cmdState green|orange|red
do always
event-on-change-reading no
icon message_attention
room Windfang
wait 1:0:0
Sorry, funktioniert doch, mich hat nur die Zeile
2015-12-07 14:57:10 e_WF.tuerkontakt_events closed << addLog
irretiert...
DANKE nochmal !!
Gruß
Klaus
PS: Gibt es auch eine Lösung, wenn ich nicht das EVENT sondern das Reading Abfrage, also:
([WF.tuerkontakt] eq "closed") ... ?