FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ComputerZOO am 17 Mai 2018, 21:13:54

Titel: [Gelöst] Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: ComputerZOO am 17 Mai 2018, 21:13:54
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
Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: Frank_Huber am 17 Mai 2018, 21:25:14
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

Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag 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.
Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: Frank_Huber am 17 Mai 2018, 21:47:02
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

Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag 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:
Zitat...Musst dann nur dem enable als zweiten Befehl mitgeben...
???
Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: Frank_Huber am 17 Mai 2018, 21:59:14
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

Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: ComputerZOO am 17 Mai 2018, 22:04:53
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.
Titel: Antw:Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: ComputerZOO am 17 Mai 2018, 22:27:10
So, hier die Lösung:

defmod n.uhr.enabled notify di.*.uhr:mode:.enabled {
  fhem ("set $NAME startClock");
}
Titel: Antw:[Gelöst] Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: Frank_Huber am 17 Mai 2018, 22:28:27
Wie enablest du denn das doif?

Gesendet von meinem S60 mit Tapatalk

Titel: Antw:[Gelöst] Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: ComputerZOO am 17 Mai 2018, 22:42:53
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)
Titel: Antw:[Gelöst] Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag 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?
Titel: Antw:[Gelöst] Automatische Befehlsausführung nach dem „enablen“ eines DOIF
Beitrag von: Frank_Huber am 18 Mai 2018, 12:06:48
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