Nabend,
vielleicht habe ich es überlesen, aber ist es möglich, dass z.B. cmd_1 ausgeführt, sobald ich ein DOIF mit set xxx enable eingeschaltet habe?
Der Hintergrund ist folgender:
Ich habe ein DOIF, welches (wenn es durch einen Bewegungsmelder eingeschaltet wird) minütlich die Uhrzeit an ein Matrix-Display sendet. Wenn man nun um 20:15:10 den Raum betritt, dann wird das cmd_1 ja erst 50 Sekunden später ausgeführt.
Hier ein List des DOIF:
Internals:
.eventMapCmd startClock:noArg on:noArg off:noArg
DEF ([+:01]) {
showPAROLA("edot.esp.parola", uhrzeit("hhmm"), "[$SELF:displayEffect]", "", "", "", "", 25, 58500, "[$SELF:displayBrightness]", 1, "[$SELF:displayFont]");
}
MODEL FHEM
NAME di.sys.uhr
NR 529
NTFY_ORDER 50-di.sys.uhr
STATE disabled
TYPE DOIF
.attraggr:
.attrminint:
READINGS:
2018-05-17 05:51:00 cmd 1
2018-05-17 05:51:00 cmd_event timer_1
2018-05-17 05:51:00 cmd_nr 1
2018-05-13 22:18:43 displayBrightness 15
2018-05-13 22:31:13 displayEffect up
2018-05-13 22:24:08 displayFont bigfont
2018-05-17 18:45:34 last_cmd disabled
2018-05-17 18:45:34 mode disabled
2018-05-17 18:45:34 state disabled
2018-05-17 21:12:00 timer_01_c01 17.05.2018 21:13:00
Regex:
condition:
0 DOIF_time_once($hash,0,$wday)
days:
devices:
do:
0:
0 { showPAROLA("edot.esp.parola", uhrzeit("hhmm"), "[di.sys.uhr:displayEffect]", "", "", "", "", 25, 58500, "[di.sys.uhr:displayBrightness]", 1, "[di.sys.uhr:displayFont]"); }
1:
helper:
DOIF_Readings_events
DOIF_eventas
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
timerevents:
timer_1
triggerEvents:
timer_1
internals:
interval:
intervalfunc:
itimer:
localtime:
0 1526584380
perlblock:
readings:
realtime:
0 21:13:00
time:
0 +:01
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1526584380:
localtime 1526584380
hash:
uiState:
uiTable:
Attributes:
alias Uhrzeit anzeigen
cmdIcon startClock:control_home
devStateIcon disabled:general_aus@red:enable .*:general_an@green:disable
do always
eventMap /cmd_1:startClock/enable:on/disable:off/
group 90_FHEM
icon clock
readingList displayBrightness,displayFont,displayEffect
room Küche,System->Logik
setList displayBrightness:selectnumbers,-5,1,15,0,lin
displayFont:tiny7Seg,tiny7SegFramed,small7Seg,numeric7Seg,ExtASCII,bigfont
displayEffect:print,fade,printfade,fadeprint,left,right,leftright,rightleft,up,down,downup,updown,growup,growdown,growupdown,growdownup,open,close,openclose,closeopen,open_cursor,close_cursor,openclose_cursor,closeopen_cursor,wipe,wipe_cursor,slice,mesh,fade,dissolve,random,cornerleft,cornerright
webCmd displayFont:displayEffect:displayBrightness:startClock
webCmdLabel Schrift:Effekt:Helligkeit:Start
Set Doif cmd_1 oder set doif checkall sollte das machen.
Musst dann nur dem enable als zweiten Befehl mitgeben.
Gesendet von meinem S60 mit Tapatalk
Das funktioniert nicht, set doif cmd_1 funktioniert nur, wenn das DOIF bereits bereits ,,enabled" ist. Wenn es noch auf disable steht, wird set doif cmd_1 nicht ausgeführt.
Zitat von: ComputerZOO am 17 Mai 2018, 21:45:39
Das funktioniert nicht, set doif cmd_1 funktioniert nur, wenn das DOIF bereits bereits ,,enabled" ist. Wenn es noch auf disable steht, wird set doif cmd_1 nicht ausgeführt.
Lies nochmal langsam meinen post.
Vor allem die zweite Zeile...
Gesendet von meinem S60 mit Tapatalk
Hmm, stehe wohl auf der Leitung,
Das
set doif enable;
set doif cmd_1;
funktioniert ist klar, aber was meinst du mit:
Zitat...Musst dann nur dem enable als zweiten Befehl mitgeben...
???
Zitat von: ComputerZOO am 17 Mai 2018, 21:56:51
Hmm, stehe wohl auf der Leitung,
Das
set doif enable;
set doif cmd_1;
funktioniert ist klar, aber was meinst du mit:???
Genau das was du jetzt gemacht hast.
Deinem enable Befehl einen zweiten Befehl mitgeben. [emoji6]
Gesendet von meinem S60 mit Tapatalk
Ok, danke, das war ja nicht das, was ich gesucht habe, ich dachte, das DOIF so etwas irgendwie ,,out-of-the-box" kann.
Dann schreibe ich mir halt nen Notify oder DOIF, welches die Events zur Aktivierung überwacht und mir dann das cmd_1 des eventauslösenden DOIF startet.
So, hier die Lösung:
defmod n.uhr.enabled notify di.*.uhr:mode:.enabled {
fhem ("set $NAME startClock");
}
Wie enablest du denn das doif?
Gesendet von meinem S60 mit Tapatalk
Zitat von: Frank_Huber am 17 Mai 2018, 22:28:27
Wie enablest du denn das doif?
Gesendet von meinem S60 mit Tapatalk
In meinem Fall mit set di.wz.uhr on
(on, off, startClock über die eventMap)
Habe gerade kein FHEM zum Testen hier, aber könnte man ein DOIF auf den eigenen Enable-Event reagieren lassen?
Zitat von: Per am 18 Mai 2018, 11:46:14
Habe gerade kein FHEM zum Testen hier, aber könnte man ein DOIF auf den eigenen Enable-Event reagieren lassen?
Gute Idee Per. $SELF eq "initialized" sollte das sein.
Gesendet von meinem S60 mit Tapatalk