FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dracolein am 02 September 2020, 08:47:09

Titel: Lauflicht mit FHEM
Beitrag von: Dracolein am 02 September 2020, 08:47:09
Hallo zusammen,

ich habe eine 4-flutige Esstischlampe, ausgestattet mit 4 Tradfri Ikea Birnchen, die jeweils als eigenes Device in FHEM integriert sind und seit Januar 2020 ihren Dienst als Gruppenverband zuverlässig verrichten.

Nun möchte ich zum Spaß, um Frau & Kinder zu erschrecken, gern diese 4 Devices nutzen, um ein Lauflicht mit FHEM zu realisieren. Damit meine ich, dass ich z.B. auf einen virtuellen Taster drücke, und dann Birne 1 von 0% auf 100% Helligkeit ansteigt, Birne 2 ebenfalls danach usw. Das Ganze soll primär erstmal funktionieren, sekundär auch noch cool aussehen, d.h. die optisch sichtbaren Helligkeitsübergänge sollten "smooth" wirken (z.B. beginnt Birne 2 bereits heller zu werden, während Birne 1 erst bei ~50% Helligkeit angelangt ist) ähnlich wie in den 80ern das rote Lauflicht bei K.I.T.T aus der Serie Knight Rider 8) Einziger Unterschied: das Lauflicht soll nicht hin und her wandern, sondern nach Zyklusende von Birne 4 wieder bei Birne 1 beginnen.

Leider habe ich überhaupt keine Idee, wie ich diese Ablaufkette realisieren soll und wäre um Ratschläge dankbar.
Erste eigene Gedanken:
- Dummy für das Ein-/ Ausschalten der Sequenz
- für jede Birne ein eigenes DOIF
-- DOIF1: Wenn Dummy=ON, Birne1 auf 100% Helligkeit setzen; Birne1 auf 0% wenn Birne2=ON
-- DOIF2: Wenn Dummy=ON, Wait=0,5 Sek, danach Birne2 auf 100% Helligkeit; Birne2 auf 0% wenn Birne3=ON
-- DOIF3: Wenn Dummy=ON, wait=1,0 Sek, danach Birne3 auf 100; Birne3 auf 0% wenn Birne 4=ON
-- DOIF4: Wenn Dummy=ON, wait=1,5 Sek, danach Birne4 auf 100; Birne4 auf 0% wenn Birne 1=ON
usw.

Titel: Antw:Lauflicht mit FHEM
Beitrag von: yersinia am 02 September 2020, 09:09:51
Lustige Idee, das würde auch in einem DOIF gehen - sogar in einem cmd. Pseudocode:
DOIF (DUMMY eq "on")
    (SET BIRNE1 100%)
    (SET BIRNE2 100%)
    (SET BIRNE1 0%, SET BIRNE3 100%)
    (SET BIRNE2 0%, SET BIRNE4 100%)
    (SET BIRNE4 0%)

Attribute:
wait 0,1,1,1,1:
do always

https://fhem.de/commandref_DE.html#DOIF_wait
Titel: Antw:Lauflicht mit FHEM
Beitrag von: CBSnake am 02 September 2020, 09:17:35
Hi,

Tradfri kann sowas halt nicht selbstständig sprich FHEM hat den Hut auf und gibt die Kommandos/Sequenzen vor und das kann schon zu ordentlich last führen, Tradfri ist da nicht das schnellste :-)

Du kannst das in ein DOIF packen, entweder mit Abfrage der vorherigen Lampe, dazu ist Tradfri aber vermutlich zu langsam oder halt hardcodiert in Sekunden.


([irgendwas zum starten z.b. [dummy_licht] eq "on")
(set lampe1 100%)

PS: ah ich sehe yersinia hatte ne ähnliche idee :-)
(set lampe2 100%)
(set lampe 1 0%)
(set lampe3 100%)
(set lampe2 0%)
(set lampe 4 100%)
(set lampe 3 0%)
(set Lampe 4 0%)



mit dem Attribut wait kannst du die verschiedenen (set lampe) "unterteilen" hier mal 2 Sekunden Abstand (0 für die erste lampe):

wait 0,2,2,2,2,2,2,2

mit repeatcmd kannst das ganze dann auch wiederholen solange dummy_licht auf on ist

Probiers mal aus, ich denke aber Tradfri wird sich da verschlucken :-)
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 03 September 2020, 06:53:53
Moin zusammen,

danke für die Tips, ich habe mal etwas rumprobiert gestern abend:



Internals:
   DEF        ([Lauflichtschalter:state] eq "on") (set HUEDevice5 100%) (set HUEDevice6 100%) (set HUEDevice7 100%, set HUEDevice5 0%) (set HUEDevice8 100%, set HUEDevice6 0%) (set HUEDevice7 0%) (set HUEDevice8 0%)
   FUUID      5f4fc664-f33f-4dec-a473-15a60c61f9f018c2
   MODEL      FHEM
   NAME       doif_Lauflicht
   NOTIFYDEV  Lauflichtschalter,global
   NR         121
   NTFY_ORDER 50-doif_Lauflicht
   STATE      cmd_1
   TYPE       DOIF
   VERSION    22030 2020-05-25 14:10:16
   READINGS:
     2020-09-03 06:50:48   Device          Lauflichtschalter
     2020-09-03 06:50:46   cmd             1.6
     2020-09-03 06:50:46   cmd_event       Lauflichtschalter
     2020-09-03 06:50:46   cmd_nr          1
     2020-09-03 06:50:46   cmd_seqnr       6
     2020-09-03 06:50:48   e_Lauflichtschalter_state off
     2020-09-02 18:32:56   mode            enabled
     2020-09-03 06:50:46   state           cmd_1
     2020-09-03 06:50:46   wait_timer      no timer
   Regex:
     accu:
     cond:
       Lauflichtschalter:
         0:
           state      ^Lauflichtschalter$:^state:
   attr:
     cmdState:
     wait:
       0:
         0
         2
         2
         2
         2
         2
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'Lauflichtschalter','state') eq "on"
   do:
     0:
       0          set HUEDevice5 100%
       1          set HUEDevice6 100%
       2          set HUEDevice7 100%, set HUEDevice5 0%
       3          set HUEDevice8 100%, set HUEDevice6 0%
       4          set HUEDevice7 0%
       5          set HUEDevice8 0%
     1:
   helper:
     DEVFILTER  ^global$|^Lauflichtschalter$
     NOTIFYDEV  global|Lauflichtschalter
     event      off
     globalinit 1
     last_timer 0
     sleepdevice Lauflichtschalter
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Lauflichtschalter
     timerevent on
     triggerDev Lauflichtschalter
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       off
     triggerEventsState:
       state: off
   internals:
   perlblock:
   readings:
     all         Lauflichtschalter:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Befehle
   wait       0,2,2,2,2,2


Die Birnchen werden der Reihe nach im Abstand von 2 Sekunden eingeschaltet und es wird versucht, diese auch wieder auszuschalten, ABER: Nach dem ersten Durchlauf stoppt die Sequenz und alle Birnen beinhalten in FHEM noch den Status Helligkeit=1%, ergo ist keine Lampe richtig aus gegangen.
Ich poste noch schnell den Event-Monitor Abschnitt und muss jetzt erstmal zur Arbeit :-)

Zitat
2020-09-03 06:54:07 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:07 DOIF doif_Lauflicht cmd_seqnr: 1
2020-09-03 06:54:07 DOIF doif_Lauflicht cmd: 1.1
2020-09-03 06:54:07 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:07 DOIF doif_Lauflicht cmd_1_1
2020-09-03 06:54:07 DOIF doif_Lauflicht wait_timer: 03.09.2020 06:54:09 cmd_1_2 Lauflichtschalter
2020-09-03 06:54:07 dummy Lauflichtschalter on
2020-09-03 06:54:07 HUEDevice HUEDevice5 bri: 100
2020-09-03 06:54:07 HUEDevice HUEDevice5 onoff: 1
2020-09-03 06:54:07 HUEDevice HUEDevice5 pct: 39
2020-09-03 06:54:07 HUEDevice HUEDevice5 dim37%
2020-09-03 06:54:07 HUEDevice HUEGroup2 any_on: 1
2020-09-03 06:54:07 HUEDevice HUEDevice5 bri: 2
2020-09-03 06:54:07 HUEDevice HUEDevice5 pct: 1
2020-09-03 06:54:07 HUEDevice HUEDevice5 dim06%
2020-09-03 06:54:08 HUEDevice HUEDevice5 bri: 100
2020-09-03 06:54:08 HUEDevice HUEDevice5 pct: 39
2020-09-03 06:54:08 HUEDevice HUEDevice5 dim37%
2020-09-03 06:54:09 DOIF doif_Lauflicht wait_timer: no timer
2020-09-03 06:54:09 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:09 DOIF doif_Lauflicht cmd_seqnr: 2
2020-09-03 06:54:09 DOIF doif_Lauflicht cmd: 1.2
2020-09-03 06:54:09 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:09 DOIF doif_Lauflicht cmd_1_2
2020-09-03 06:54:09 DOIF doif_Lauflicht wait_timer: 03.09.2020 06:54:11 cmd_1_3 Lauflichtschalter
2020-09-03 06:54:09 HUEDevice HUEDevice6 bri: 100
2020-09-03 06:54:09 HUEDevice HUEDevice6 onoff: 1
2020-09-03 06:54:09 HUEDevice HUEDevice6 pct: 39
2020-09-03 06:54:09 HUEDevice HUEDevice6 dim37%
2020-09-03 06:54:09 HUEDevice HUEDevice6 bri: 2
2020-09-03 06:54:09 HUEDevice HUEDevice6 pct: 1
2020-09-03 06:54:09 HUEDevice HUEDevice6 dim06%
2020-09-03 06:54:10 HUEDevice HUEDevice6 bri: 100
2020-09-03 06:54:10 HUEDevice HUEDevice6 pct: 39
2020-09-03 06:54:10 HUEDevice HUEDevice6 dim37%
2020-09-03 06:54:11 DOIF doif_Lauflicht wait_timer: no timer
2020-09-03 06:54:11 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:11 DOIF doif_Lauflicht cmd_seqnr: 3
2020-09-03 06:54:11 DOIF doif_Lauflicht cmd: 1.3
2020-09-03 06:54:11 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:11 DOIF doif_Lauflicht cmd_1_3
2020-09-03 06:54:11 DOIF doif_Lauflicht wait_timer: 03.09.2020 06:54:13 cmd_1_4 Lauflichtschalter
2020-09-03 06:54:11 HUEDevice HUEDevice5 bri: 0
2020-09-03 06:54:11 HUEDevice HUEDevice5 pct: 1
2020-09-03 06:54:11 HUEDevice HUEDevice5 dim06%
2020-09-03 06:54:11 HUEDevice HUEDevice7 bri: 100
2020-09-03 06:54:11 HUEDevice HUEDevice7 onoff: 1
2020-09-03 06:54:11 HUEDevice HUEDevice7 pct: 39
2020-09-03 06:54:11 HUEDevice HUEDevice7 dim37%
2020-09-03 06:54:11 HUEDevice HUEDevice7 bri: 2
2020-09-03 06:54:11 HUEDevice HUEDevice7 pct: 1
2020-09-03 06:54:11 HUEDevice HUEDevice7 dim06%
2020-09-03 06:54:11 HUEDevice HUEDevice5 bri: 1
2020-09-03 06:54:12 HUEDevice HUEDevice7 bri: 100
2020-09-03 06:54:12 HUEDevice HUEDevice7 pct: 39
2020-09-03 06:54:12 HUEDevice HUEDevice7 dim37%
2020-09-03 06:54:13 DOIF doif_Lauflicht wait_timer: no timer
2020-09-03 06:54:13 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:13 DOIF doif_Lauflicht cmd_seqnr: 4
2020-09-03 06:54:13 DOIF doif_Lauflicht cmd: 1.4
2020-09-03 06:54:13 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:13 DOIF doif_Lauflicht cmd_1_4
2020-09-03 06:54:13 DOIF doif_Lauflicht wait_timer: 03.09.2020 06:54:15 cmd_1_5 Lauflichtschalter
2020-09-03 06:54:13 HUEDevice HUEDevice6 bri: 0
2020-09-03 06:54:13 HUEDevice HUEDevice6 pct: 1
2020-09-03 06:54:13 HUEDevice HUEDevice6 dim06%
2020-09-03 06:54:13 HUEDevice HUEDevice8 bri: 100
2020-09-03 06:54:13 HUEDevice HUEDevice8 onoff: 1
2020-09-03 06:54:13 HUEDevice HUEDevice8 pct: 39
2020-09-03 06:54:13 HUEDevice HUEDevice8 dim37%
2020-09-03 06:54:13 HUEDevice HUEGroup2 all_on: 1
2020-09-03 06:54:13 HUEDevice HUEDevice8 bri: 2
2020-09-03 06:54:13 HUEDevice HUEDevice8 pct: 1
2020-09-03 06:54:13 HUEDevice HUEDevice8 dim06%
2020-09-03 06:54:13 HUEDevice HUEDevice6 bri: 1
2020-09-03 06:54:13 ESPEasy ESPEasy_ESP_Easy1_am2302_sensor presence: present
2020-09-03 06:54:13 ESPEasy ESPEasy_ESP_Easy1_am2302_sensor hum: 49.8 tem: 23.3
2020-09-03 06:54:14 HUEDevice HUEDevice8 bri: 100
2020-09-03 06:54:14 HUEDevice HUEDevice8 pct: 39
2020-09-03 06:54:14 HUEDevice HUEDevice8 dim37%
2020-09-03 06:54:15 DOIF doif_Lauflicht wait_timer: no timer
2020-09-03 06:54:15 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:15 DOIF doif_Lauflicht cmd_seqnr: 5
2020-09-03 06:54:15 DOIF doif_Lauflicht cmd: 1.5
2020-09-03 06:54:15 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:15 DOIF doif_Lauflicht cmd_1_5
2020-09-03 06:54:15 DOIF doif_Lauflicht wait_timer: 03.09.2020 06:54:17 cmd_1_6 Lauflichtschalter
2020-09-03 06:54:15 HUEDevice HUEDevice7 bri: 0
2020-09-03 06:54:15 HUEDevice HUEDevice7 pct: 1
2020-09-03 06:54:15 HUEDevice HUEDevice7 dim06%
2020-09-03 06:54:15 HUEDevice HUEDevice7 bri: 1
2020-09-03 06:54:17 DOIF doif_Lauflicht wait_timer: no timer
2020-09-03 06:54:17 DOIF doif_Lauflicht cmd_nr: 1
2020-09-03 06:54:17 DOIF doif_Lauflicht cmd_seqnr: 6
2020-09-03 06:54:17 DOIF doif_Lauflicht cmd: 1.6
2020-09-03 06:54:17 DOIF doif_Lauflicht cmd_event: Lauflichtschalter
2020-09-03 06:54:17 DOIF doif_Lauflicht cmd_1
2020-09-03 06:54:17 HUEDevice HUEDevice8 bri: 0
2020-09-03 06:54:17 HUEDevice HUEDevice8 pct: 1
2020-09-03 06:54:17 HUEDevice HUEDevice8 dim06%
2020-09-03 06:54:17 HUEDevice HUEDevice8 bri: 1
Titel: Antw:Lauflicht mit FHEM
Beitrag von: CBSnake am 03 September 2020, 07:14:52
Hi,

auf die schnelle:

Versuche es mal mit set off anstatt der 0%
Und ergänze das Doif noch um repeatcmd
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 03 September 2020, 07:31:45
Hey das funktioniert, super.
Auch habe ich die Timings auf 0.5 Sekunden pro Befehl reduzieren können und die Lampen reagieren fein.

Einzig die Wiederholung des doif verstehe ich noch nicht so ganz. Mit dem Attribut repeatcmd =1 läuft die Sequenz endlos wie eine Schleife durch, aber scheinbar wird die Bedingung (Lauflichtschalter =on) nicht mehr abgefragt, da sich das doif nicht mehr stoppen lässt. Da muss ich mich nachher nochmal reindenken, wo meine Fehler sind.


edit:
Attribut do always gelöscht, jetz läufts.
Ich bastel noch etwas herum und werde Euch abends eine YT-Sequenz einstellen
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 04 September 2020, 06:16:53
Guten Morgen, hier das optische Ergebnis bisher

https://youtu.be/ts2G_GSRSPA
Titel: Antw:Lauflicht mit FHEM
Beitrag von: CBSnake am 04 September 2020, 08:30:09
Moin,

sehr schön, welches Gateway etc nutzt du da?

Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 04 September 2020, 08:42:11
Bei mir läuft FHEM auf einem Raspberry Pi 4 mit einem ConBee II USB-Stick. Das ist mein einziges zigbee Gateway; ich hatte nie ein anderes. Damit läuft Tradfri, eine HUE-Lampe und diverse Aqara Sensoren

Ich habe die Timings auf 0,4 Sek runtersetzen können und weiterhin die Befehle auf
set HUEDevice6 pct 100
geändert. Letzteres bewirkt, dass jede Birne ganz kurz volle Helligkeit erreicht und der optische Effekt besser wirkt, als auf dem YT-Video (Stand: gestern abend).

Wo ich mich gedanklich schwer tue, ist, wie die Befehlsreihenfolge verändert werden müsste, damit nach Abschluss der Sequenz der Restart schneller geht.

Aktuell siehts so aus:

       0          set HUEDevice5 pct 100
       1          set HUEDevice6 pct 100
       2          set HUEDevice7 pct 100, set HUEDevice5 off
       3          set HUEDevice8 pct 100, set HUEDevice6 off
       4          set HUEDevice7 off
       5          set HUEDevice8 off


Theoretisch würde ich die letzte Zeile ändern wollen:
       5          set HUEDevice8 off, set HUEDevice5 pct 100
damit die erste Birne bereits wieder startet. Jedoch müsste ab dem zweiten Durchlauf die erste Befehlszeile ignoriert werden  ???

Zuviel Gehirnschmalz soll auch nicht hineinfliessen, es bleibt ein Spaß. Eventuell wäre dieser Effekt ganz nützlich als parallel optische Anzeige, wenn die Haustürklingel betätigt wurde (welche noch nicht smart ist bei mir)
Titel: Antw:Lauflicht mit FHEM
Beitrag von: betateilchen am 04 September 2020, 09:02:28
Sowas ähnliches habe ich in einem langen Flur gebaut, aber nicht, um Leute zu erschrecken, sondern um das Licht (einzelne Strahler) der Person die durch den Flur geht, folgen zu lassen. Es muss schließlich nicht über die gesamte Zeit der gesamte Flur beleuchtet sein. Dafür habe ich die Lampen in eine structure gepackt und entscheide am Anfang und Ende des Flurs mittels jeweils einem Bewegungsmelder die Laufrichtung.

Funktioniert seit langem völlig zuverlässig.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Mitch am 04 September 2020, 10:23:11
Lustige Idee!

@Dracolein: magst du mal deinen aktuellen Code posten?
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 04 September 2020, 10:32:08
Zitat von: betateilchen am 04 September 2020, 09:02:28
Sowas ähnliches habe ich in einem langen Flur gebaut, aber nicht, um Leute zu erschrecken, sondern um das Licht (einzelne Strahler) der Person die durch den Flur geht, folgen zu lassen. Es muss schließlich nicht über die gesamte Zeit der gesamte Flur beleuchtet sein. Dafür habe ich die Lampen in eine structure gepackt und entscheide am Anfang und Ende des Flurs mittels jeweils einem Bewegungsmelder die Laufrichtung.

Funktioniert seit langem völlig zuverlässig.
Coole Idee vom Grundsatz.
Wenn die Person jedoch sich mitten im Flur umdreht, kannst du diesen Fall nicht abfangen, oder?

Die Idee eines Lauflichts kenne ich sonst nur von Treppenstufen, die nacheinander wellenförmig beleuchtet werden. Sowas finde ich auch mega, zumal ich endlos Treppenstufen hätte. Aber der Installationsaufwand ist mir viel zu groß.
Zitat von: Mitch am 04 September 2020, 10:23:11
Lustige Idee!

@Dracolein: magst du mal deinen aktuellen Code posten?

Dummy Lauflichtschalter:

Internals:
   FUUID      5f4fc600-f33f-4dec-6071-13aaea661b21f5bd
   NAME       Lauflichtschalter
   NR         120
   STATE      off
   TYPE       dummy
   READINGS:
     2020-09-04 07:34:43   state           off
Attributes:
   genericDeviceType switch
   room       Befehle,Homekit
   setList    on off
   webCmd     on:off


DOIF Lauflicht:

Internals:
   DEF        ([Lauflichtschalter:state] eq "on") (set HUEDevice5 pct 100) (set HUEDevice6 pct 100) (set HUEDevice7 pct 100, set HUEDevice5 off) (set HUEDevice8 pct 100, set HUEDevice6 off) (set HUEDevice7 off) (set HUEDevice8 off) DOELSEIF ([Lauflichtschalter:state] eq "off") (set HUEDevice5 off) (set HUEDevice6 off) (set HUEDevice7 off) (set HUEDevice8 off)
   FUUID      5f4fc664-f33f-4dec-a473-15a60c61f9f018c2
   MODEL      FHEM
   NAME       doif_Lauflicht
   NOTIFYDEV  Lauflichtschalter,global
   NR         121
   NTFY_ORDER 50-doif_Lauflicht
   STATE      cmd_2
   TYPE       DOIF
   VERSION    22030 2020-05-25 14:10:16
   READINGS:
     2020-09-04 07:34:43   Device          Lauflichtschalter
     2020-09-04 07:34:43   cmd             2.4
     2020-09-04 07:34:43   cmd_event       Lauflichtschalter
     2020-09-04 07:34:43   cmd_nr          2
     2020-09-04 07:34:43   cmd_seqnr       4
     2020-09-04 07:34:43   e_Lauflichtschalter_state off
     2020-09-04 07:33:18   mode            enabled
     2020-09-04 07:34:43   state           cmd_2
     2020-09-04 07:34:43   wait_timer      no timer
   Regex:
     accu:
     cond:
       Lauflichtschalter:
         0:
           state      ^Lauflichtschalter$:^state:
         1:
           state      ^Lauflichtschalter$:^state:
   attr:
     cmdState:
     repeatcmd:
       1
     wait:
       0:
         0
         0.4
         0.4
         0.4
         0.4
         0.4
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'Lauflichtschalter','state') eq "on"
     1          ::ReadingValDoIf($hash,'Lauflichtschalter','state') eq "off"
   do:
     0:
       0          set HUEDevice5 pct 100
       1          set HUEDevice6 pct 100
       2          set HUEDevice7 pct 100, set HUEDevice5 off
       3          set HUEDevice8 pct 100, set HUEDevice6 off
       4          set HUEDevice7 off
       5          set HUEDevice8 off
     1:
       0          set HUEDevice5 off
       1          set HUEDevice6 off
       2          set HUEDevice7 off
       3          set HUEDevice8 off
     2:
   helper:
     DEVFILTER  ^global$|^Lauflichtschalter$
     NOTIFYDEV  global|Lauflichtschalter
     event      off
     globalinit 1
     last_timer 0
     sleepdevice Lauflichtschalter
     sleepsubtimer 3
     sleeptimer -1
     timerdev   Lauflichtschalter
     timerevent off
     triggerDev Lauflichtschalter
     DOIF_eventa:
       cmd_nr: 2
       cmd_seqnr: 4
       cmd_event: Lauflichtschalter
       cmd_2
     DOIF_eventas:
       cmd_nr: 2
       cmd_seqnr: 4
       cmd_event: Lauflichtschalter
       state: cmd_2
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       off
     triggerEventsState:
       state: off
   internals:
   readings:
     all         Lauflichtschalter:state
   trigger:
   uiState:
   uiTable:
Attributes:
   repeatcmd  1
   room       Befehle
   wait       0,0.4,0.4,0.4,0.4,0.4
Titel: Antw:Lauflicht mit FHEM
Beitrag von: betateilchen am 04 September 2020, 10:43:39
Zitat von: Dracolein am 04 September 2020, 10:32:08
Coole Idee vom Grundsatz.
Wenn die Person jedoch sich mitten im Flur umdreht, kannst du diesen Fall nicht abfangen, oder?

Doch. Wenn nicht innerhalb einer bestimmten Zeit der zweite Bewegungsmelder auslöst, greift ein watchdog und schaltet sicherheitshalber die gesamte Beleuchtung ein.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 04 September 2020, 12:11:57
Ich hätte noch eine weitere Frage, um diesem Mini-Projekt tatsächlich ein wenig Sinn zu verleihen:

Angenommen meine Haustürklingel schaltet diese DOIF-Lauflichtsequenz für eine eine Zeit t=10 Sekunden ein. So endet diese Sequenz immer damit, dass alle 4 Birnen am Ende abgeschaltet werden. Soweit so gut. Nun besteht die Möglichkeit, dass die Esstischlampe abends ganz normal eingeschaltet ist, während das besagte Event ausgelöst wird und die Lampe ihre Lauflichtsequenz beginnt, durchläuft und mit vollständig ausgeschalteter Lampe endet.

Wie schaffe ich es, dass die Lampe nach Ende der Lauflichtsequenz in ihren vorherigen Zustand zurückkehrt ?
Das Reading "pct" jeder Birne dient als Referenz zur Speicherung des jeweiligen Ist-Zustands (falls Lampe aus ist: pct=0, sonst pct=Dimmstufe in Prozent). Theoretisch müsste ich mein obiges DOIF verändern, dass besagtes HUEDevice-Reading zunächst irgendwo zwischengespeichert wird, danach die Lauflichtsequenz abgespult wird und zum Abschluss der Ursprungsstatus wieder hergestellt wird.

Nun habe ich mir aus diversen Beispielen folgende Puzzleteile zusammengebaut:

Istwerte auslesen und auf neuen Readings abspeichern:

(setreading HUEDevice5 last_pct [HUEDevice5:pct], setreading HUEDevice6 last_pct [HUEDevice6:pct], setreading HUEDevice7 last_pct [HUEDevice7:pct], setreading HUEDevice8 last_pct [HUEDevice8:pct])


Gespeicherte Werte wieder zurück übertragen auf alle 4 Birnen:

(set HUEDevice5 pct [HUEDevice5:last_pct], set HUEDevice6 pct [HUEDevice6:last_pct], set HUEDevice7 pct [HUEDevice7:last_pct], set HUEDevice8 pct [HUEDevice8:last_pct])

Wären diese Codeschnipsel korrekt und innerhalb eines DOIF nutzbar, oder muss ich mit{ReadingsVAL...} arbeiten?
Weiterhin kann ich diese Puzzleteile nicht einfach in obiges Doif einfügen, sondern muss das irgendwie verschachteln. Andernfalls würden bei jedem Sequenzdurchlauf die Readings gelesen & überschrieben werden. Hier scheitere ich derzeit noch gedanklich und hoffe auf Tips. Im Prinzip bräuchte ich ein Konstrukt

WENN Lauflichtschalter=on DANN werte zwischenspeichern, Sequenz endlos abspielen
WENN Lauflichtschalter=off DANN sequenz beenden, werte zurückspeichern
WENN Haustürklingel=on DANN werte zwischenspeichern, Sequenz für 10 Sekunden abspielen, danach Werte zurückspeichern

Geht das alles in einem einzigen DOIF ?
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Damian am 04 September 2020, 15:06:26
Zitat von: Dracolein am 04 September 2020, 12:11:57
Ich hätte noch eine weitere Frage, um diesem Mini-Projekt tatsächlich ein wenig Sinn zu verleihen:

Angenommen meine Haustürklingel schaltet diese DOIF-Lauflichtsequenz für eine eine Zeit t=10 Sekunden ein. So endet diese Sequenz immer damit, dass alle 4 Birnen am Ende abgeschaltet werden. Soweit so gut. Nun besteht die Möglichkeit, dass die Esstischlampe abends ganz normal eingeschaltet ist, während das besagte Event ausgelöst wird und die Lampe ihre Lauflichtsequenz beginnt, durchläuft und mit vollständig ausgeschalteter Lampe endet.

Wie schaffe ich es, dass die Lampe nach Ende der Lauflichtsequenz in ihren vorherigen Zustand zurückkehrt ?
Das Reading "pct" jeder Birne dient als Referenz zur Speicherung des jeweiligen Ist-Zustands (falls Lampe aus ist: pct=0, sonst pct=Dimmstufe in Prozent). Theoretisch müsste ich mein obiges DOIF verändern, dass besagtes HUEDevice-Reading zunächst irgendwo zwischengespeichert wird, danach die Lauflichtsequenz abgespult wird und zum Abschluss der Ursprungsstatus wieder hergestellt wird.

Nun habe ich mir aus diversen Beispielen folgende Puzzleteile zusammengebaut:

Istwerte auslesen und auf neuen Readings abspeichern:

(setreading HUEDevice5 last_pct [HUEDevice5:pct], setreading HUEDevice6 last_pct [HUEDevice6:pct], setreading HUEDevice7 last_pct [HUEDevice7:pct], setreading HUEDevice8 last_pct [HUEDevice8:pct])


Gespeicherte Werte wieder zurück übertragen auf alle 4 Birnen:

(set HUEDevice5 pct [HUEDevice5:last_pct], set HUEDevice6 pct [HUEDevice6:last_pct], set HUEDevice7 pct [HUEDevice7:last_pct], set HUEDevice8 pct [HUEDevice8:last_pct])

Wären diese Codeschnipsel korrekt und innerhalb eines DOIF nutzbar, oder muss ich mit{ReadingsVAL...} arbeiten?
Weiterhin kann ich diese Puzzleteile nicht einfach in obiges Doif einfügen, sondern muss das irgendwie verschachteln. Andernfalls würden bei jedem Sequenzdurchlauf die Readings gelesen & überschrieben werden. Hier scheitere ich derzeit noch gedanklich und hoffe auf Tips. Im Prinzip bräuchte ich ein Konstrukt

WENN Lauflichtschalter=on DANN werte zwischenspeichern, Sequenz endlos abspielen
WENN Lauflichtschalter=off DANN sequenz beenden, werte zurückspeichern
WENN Haustürklingel=on DANN werte zwischenspeichern, Sequenz für 10 Sekunden abspielen, danach Werte zurückspeichern

Geht das alles in einem einzigen DOIF ?

Im Prinzip geht vieles, allerdings bist du im DOIF-FHEM-Modus auf eine flache Hierarchie der Form if ... elseif ... elseif ... beschränkt. Irgendwann musst du mehr tricksen als programmieren, damit es funktioniert.

Wenn die Sache komplexer wird, dann musst du die Aufgabe auf mehrere Module verteilen oder im DOIF-Perl-Modus programmieren. Dort kannst du innerhalb eines Moduls beliebige Komplexität unterbringen, allerdings musst du dir etwas Perl und das Konzept des DOIF-Perl-Modus mit Perlblöcken, Variablen, Timern usw. erst einmal klar machen.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Damian am 05 September 2020, 13:19:57
So würde eine "programmierte" Lösung aussehen:

defmod lauflicht DOIF subs \
{\
  @{$_a}=qw/lamp1 lamp2 lamp3/;;   # Liste mit Lampen\
  $_max_repeat=5;;                 # Maximale Anzahl der Durchläufe\
  $_delay=0.5;;                    # Verzögerung\
  \
  @{$_state}=();;                  # Liste für Status der Lampen\
  $_counter=0;;                    # Zähler wird auf den ersten Wert gesetzt\
  $_repeat=0;;                     # Nummer der Durchlaufs\
  \
  sub lauflicht {    # Funktion zum Schalten der Lampen\
        if ($_repeat == $_max_repeat) {       # Wenn maximale Anzahl der Wiederholungen erreicht\
  set_states();;                       # Status der Lampen wiederherstellen\
  return;;                             # Ende\
}\
if ($_counter == @{$_a}) {            # letzte Lampe erreicht\
  fhem_set ($_a[@{$_a}-1]." off");;\
  $_counter=0;;\
  $_repeat++;;\
}\
fhem_set ($_a[$_counter]." on");;\
fhem_set ($_a[$_counter-1]." off") if ($_counter > 0) ;;\
$_counter++;;\
set_Exec("Timer",$_delay,'lauflicht');;  # Timer für den nächsten Schaltvorgang setzen\
  }\
  \
  sub save_states { \
   for ($i=0;;$i<@{$_a};;$i++) {$_state[$i]=ReadingsVal($_a[$i],"state","")};;  # Status der Lampen sichern\
   for ($i=0;;$i<@{$_a};;$i++) {fhem_set ("$_a[$i] off")};;                     # alle Lampen ausschalten\
  }\
  \
  sub set_states { # Status der Lampen wiederherstellen\
    for ($i=0;;$i<@{$_a};;$i++) {fhem_set ("$_a[$i] $_state[$i]")};;\
    $_counter=0;;\
    $_repeat=0;;\
  }\
}\
\
{## ["Taster:on"];;       # Aktion zum Staten des Lauflichts \
  save_states();;  # Merke Status der Lampen\
  lauflicht();;    # Lauflicht starten\
}\
\
{## ["Taster:off"];;     # Aktion zum Beenden des Lauflichts\
  del_Exec("Timer");; # Timer löschen\
  set_states();;      # Status der Lampen wiederherstellen\
}
attr lauflicht room DOIF_Labor


Die Angaben zu Lampen, Anzahl der Durchläufe und die Verzögerung werden am Anfang definiert. Die Aktion zum Starten oder vorzeitigen Beenden wird am Ende im jeweiligen Block definiert (Taster:on/off).

Testen kann man es mit Dummys lamp1, lamp2, lamp3. Starten des Lauflichts mit set lauflicht block_01, vorzeitiges Beenden mit set lauflicht block_02.

Die Lampen werden immer auf ihren ursprünglichen Zustand zurückgesetzt.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 15 September 2020, 18:33:51
Hallo, ich nochmal.

Inzwischen habe ich unsere 20 jahre alte Haustürklingel ganz simpel per 12VAC Relais und einem batteriebetriebenen Zigbee Türkontakt in FHEM integriert.
Kleines Problem: Beim Auslösen der Klingel werden kurzzeitig ganz viele Statusänderungen des Zigbee-Devices an FHEM übertragen, weil die Spule natürlich flickert.

Jetzt bin ich am überlegen, wie ich mein Lauflicht mit dem Klingelsignal kombinieren kann unter Verwendung des hier gebastelten DOIFs. Mein Problem: Sobald die Bedingung des DOIF-Befehls erlischt, bricht natürlich auch meine Lauflicht-Ablaufkette mittendrin ab, sodass manchmal eine Birne nicht abschaltet.
Jetzt könnte ich irgendwie versuchen, die Bedingung mit einem Timer zu kombinieren und die Zeit per trial&error genau abzupassen, sodass alle Birnen noch abgeschaltet werden; aber gibt es nicht eine elegantere Lösung?

Ideal wäre eine Ablaufkette / Schrittkette, die sich per Trigger einschaltet und durchläuft.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Damian am 15 September 2020, 18:59:20
Zitat von: Dracolein am 15 September 2020, 18:33:51
Hallo, ich nochmal.

Inzwischen habe ich unsere 20 jahre alte Haustürklingel ganz simpel per 12VAC Relais und einem batteriebetriebenen Zigbee Türkontakt in FHEM integriert.
Kleines Problem: Beim Auslösen der Klingel werden kurzzeitig ganz viele Statusänderungen des Zigbee-Devices an FHEM übertragen, weil die Spule natürlich flickert.

Jetzt bin ich am überlegen, wie ich mein Lauflicht mit dem Klingelsignal kombinieren kann unter Verwendung des hier gebastelten DOIFs. Mein Problem: Sobald die Bedingung des DOIF-Befehls erlischt, bricht natürlich auch meine Lauflicht-Ablaufkette mittendrin ab, sodass manchmal eine Birne nicht abschaltet.
Jetzt könnte ich irgendwie versuchen, die Bedingung mit einem Timer zu kombinieren und die Zeit per trial&error genau abzupassen, sodass alle Birnen noch abgeschaltet werden; aber gibt es nicht eine elegantere Lösung?

Ideal wäre eine Ablaufkette / Schrittkette, die sich per Trigger einschaltet und durchläuft.

In meiner Lösung wird der ursprünglicher Zustand der Lampen wiederhergestellt, wenn die Bedingung (Taster:off) erlischt.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: KyleK am 15 September 2020, 22:53:04
ZitatInzwischen habe ich unsere 20 jahre alte Haustürklingel ganz simpel per 12VAC Relais und einem batteriebetriebenen Zigbee Türkontakt in FHEM integriert.

Off-Topic, aber kannst  du das etwas näher erläutern? Überlege schon lange wie ich meine bestehende Klingel smart machen kann.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: MadMax-FHEM am 16 September 2020, 00:42:05
Zitat von: KyleK am 15 September 2020, 22:53:04
Off-Topic, aber kannst  du das etwas näher erläutern? Überlege schon lange wie ich meine bestehende Klingel smart machen kann.

Bzgl. Klingel smart machen sollte im Forum einiges zu finden sein -> schon mal gesucht!!?

Es kommt auch drauf an: welche Art von Klingel/Türsprcher etc. du hast...

Welche Systeme du schon laufen hast...

Hier denke ich: Relais "in" den Klingelkreis, Klingel wird gedrückt und klingelt -> Relais "schnappt zu" -> Zigbee-Sensor "erkennt" (wie Fensterkontakt) das und gibt das weiter...

Ich habe einen Homematic-Schalter-Sensor per "Gleichrichter" und Optokoppler (statt Relais) hängen...

Es gibt von Homematic auch direkt einen Klingelsensor, der kann "einfach so" in den Klingelkreis "gebaut" werden (hatte ich auch, hat aber vom Platz her nicht in meinen Türsprecher gepasst, daher andere Lösung)

Und wenn du z.B. einen Türsprecher mit "Bussystem" hast, dann musst du eben schauen.
Für z.B. Siedle gibt es wohl auch dafür Lösungen...

Ansonsten, da ja komplett off-topic: neuen Thread aufmachen... Dann verm. den 1000 und ersten ;)

Gruß, Joachim
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 16 September 2020, 07:26:31
Zitat von: MadMax-FHEM am 16 September 2020, 00:42:05

Hier denke ich: Relais "in" den Klingelkreis, Klingel wird gedrückt und klingelt -> Relais "schnappt zu" -> Zigbee-Sensor "erkennt" (wie Fensterkontakt) das und gibt das weiter...

Exakt, die Idee stammt auch weniger von mir, sondern mehr von Google.

Meine Klingel basiert auf 8-10VAC, wenn geklingelt wird, zieht eine Spule an und betätigt per Schieber die Klangmetalle.
Eigentlich wollte ich den Zigbee Türkontakt direkt an die Spule drankleben, mit der Absicht, dass der verbaute Reedkontakt von der besagten Spule magnetisch betätigt wird. Klappte leider nicht zuverlässig, also habe ich parallel zur Klingel das genannte Relais verbaut, dessen Spule von den 8-10VAC betätigt wird und dann einen Wechsler aktiviert, der den Reedkontakt des Zigbee Sesors schließt. Fertig. Zumindest auf der Hardwareseite.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 16 September 2020, 09:54:49
Ich hätte noch ein weiteres Problem, was ich nicht verstehe.

Inzwischen habe ich ein Notify gebastelt
define notify_Haustuerklingel notify Haustuerklingel:closed set dummy_Haustuerklingel on
was einen Dummy schaltet, sobald der Sensor das Klingelsignal bemerkt.

Der Dummy wiederum dient als Bedingung meines in diesem Thread gezeigten DOIFs. Sobald Dummy=on, startet das Doif seine Ablaufkette.
Nun dachte ich mir, jung und naiv wie ich bin, setze ich zum Schluss der Ablaufkette noch den Befehl dran
set dummy_Haustuerklingel off

Das klappt augenscheinlich auch. Die Ablaufkette läuft durch und zum Schluss wird der Dummy auf off gesetzt, ABER: das Doif lässt sich danach kein zweites Mal starten. Erst wenn ich im Webfrontend das Dummy per Mausklick "Off" betätige dann kann man die Ablaufkette ganz normal erneut einmalig starten.
Frage: wo liegt der Fehler?
Titel: Antw:Lauflicht mit FHEM
Beitrag von: slor am 16 September 2020, 13:01:42
do = always hast du gesetzt?
Titel: Antw:Lauflicht mit FHEM
Beitrag von: slor am 16 September 2020, 13:04:39
Super cooles Beispliel!
Bekommt man da noch mehr Knight Rider rein? also nicht "im Kreis" blinken, sondern lauflicht von links nach rechts und dann wieder von rechts nach links etc?

Zitat von: Damian am 05 September 2020, 13:19:57
So würde eine "programmierte" Lösung aussehen:

defmod lauflicht DOIF subs \
{\
  @{$_a}=qw/lamp1 lamp2 lamp3/;;   # Liste mit Lampen\
  $_max_repeat=5;;                 # Maximale Anzahl der Durchläufe\
  $_delay=0.5;;                    # Verzögerung\
  \
  @{$_state}=();;                  # Liste für Status der Lampen\
  $_counter=0;;                    # Zähler wird auf den ersten Wert gesetzt\
  $_repeat=0;;                     # Nummer der Durchlaufs\
  \
  sub lauflicht {    # Funktion zum Schalten der Lampen\
        if ($_repeat == $_max_repeat) {       # Wenn maximale Anzahl der Wiederholungen erreicht\
  set_states();;                       # Status der Lampen wiederherstellen\
  return;;                             # Ende\
}\
if ($_counter == @{$_a}) {            # letzte Lampe erreicht\
  fhem_set ($_a[@{$_a}-1]." off");;\
  $_counter=0;;\
  $_repeat++;;\
}\
fhem_set ($_a[$_counter]." on");;\
fhem_set ($_a[$_counter-1]." off") if ($_counter > 0) ;;\
$_counter++;;\
set_Exec("Timer",$_delay,'lauflicht');;  # Timer für den nächsten Schaltvorgang setzen\
  }\
  \
  sub save_states { \
   for ($i=0;;$i<@{$_a};;$i++) {$_state[$i]=ReadingsVal($_a[$i],"state","")};;  # Status der Lampen sichern\
   for ($i=0;;$i<@{$_a};;$i++) {fhem_set ("$_a[$i] off")};;                     # alle Lampen ausschalten\
  }\
  \
  sub set_states { # Status der Lampen wiederherstellen\
    for ($i=0;;$i<@{$_a};;$i++) {fhem_set ("$_a[$i] $_state[$i]")};;\
    $_counter=0;;\
    $_repeat=0;;\
  }\
}\
\
{## ["Taster:on"];;       # Aktion zum Staten des Lauflichts \
  save_states();;  # Merke Status der Lampen\
  lauflicht();;    # Lauflicht starten\
}\
\
{## ["Taster:off"];;     # Aktion zum Beenden des Lauflichts\
  del_Exec("Timer");; # Timer löschen\
  set_states();;      # Status der Lampen wiederherstellen\
}
attr lauflicht room DOIF_Labor


Die Angaben zu Lampen, Anzahl der Durchläufe und die Verzögerung werden am Anfang definiert. Die Aktion zum Starten oder vorzeitigen Beenden wird am Ende im jeweiligen Block definiert (Taster:on/off).

Testen kann man es mit Dummys lamp1, lamp2, lamp3. Starten des Lauflichts mit set lauflicht block_01, vorzeitiges Beenden mit set lauflicht block_02.

Die Lampen werden immer auf ihren ursprünglichen Zustand zurückgesetzt.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Damian am 16 September 2020, 13:25:05
Zitat von: slor am 16 September 2020, 13:04:39
Super cooles Beispliel!
Bekommt man da noch mehr Knight Rider rein? also nicht "im Kreis" blinken, sondern lauflicht von links nach rechts und dann wieder von rechts nach links etc?

Das ist dir überlassen ;)

Da es fast ausschließlich Perl ist, kannst du alles programmieren, was du willst ;)

Vorausgesetzt man kann etwas Perl und versteht, was da passiert.

Zu der im Mittelpunkt stehenden Funktion set_Exec findet man hier die Doku: https://fhem.de/commandref_DE.html#DOIF_set_Exec

Sie wird demnächst etwas aufgebohrt und kann dann mit Wiederholungen umgehen, siehe: https://forum.fhem.de/index.php/topic,114252.0.html



Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 16 September 2020, 14:55:21
Zitat von: slor am 16 September 2020, 13:01:42
do = always hast du gesetzt?
Nein das hatte ich nicht, mit Deinem Tip funktioniert es, danke. Den Rest muss ich heute abend vor Ort ausprobieren.
Titel: Antw:Lauflicht mit FHEM
Beitrag von: Dracolein am 21 September 2020, 08:52:16
Ich setze zum Abschluss deses Projekts nochmal mein aktuelles DOIF rein, falls andere Anfänger dies benötigen.
Im Prinzip habe ich auf simpelstem Niveau - aber funktionell - nun auch die Zustände jeder Birne vor Beginn der Lichtsequenz zwischengespeichert und nach Abschluss selbiger überschreibe ich die Readings wieder mit dem alten Wert. Sollte es z.B. eines winterlichen Abends klingeln und die Leuchten sind auf 25% gedimmt, aktiviert sich die Lauflichtsequenz und setzt die 25% Dimmung zum Abschluss wieder ein, sodass niemand im dunkeln sitzen bleibt.
Danken allen Helfern, das klappt bisher zuverlässig und gut.


Internals:
   DEF        ([dummy_Haustuerklingel:state] eq "on") (setreading HUEDevice5 pct_backup [HUEDevice5:pct]) (setreading HUEDevice6 pct_backup [HUEDevice5:pct]) (setreading HUEDevice7 pct_backup [HUEDevice5:pct]) (setreading HUEDevice8 pct_backup [HUEDevice5:pct]) (set HUEDevice5 pct 100) (set HUEDevice6 pct 100) (set HUEDevice7 pct 100, set HUEDevice5 off) (set HUEDevice8 pct 100, set HUEDevice6 off) (set HUEDevice7 off) (set HUEDevice8 off) (set HUEDevice5 pct 100) (set HUEDevice6 pct 100) (set HUEDevice7 pct 100, set HUEDevice5 off) (set HUEDevice8 pct 100, set HUEDevice6 off) (set HUEDevice7 off) (set HUEDevice8 off) (set HUEDevice5 pct 100) (set HUEDevice6 pct 100) (set HUEDevice7 pct 100, set HUEDevice5 off) (set HUEDevice8 pct 100, set HUEDevice6 off) (set HUEDevice7 off) (set HUEDevice8 off) (set dummy_Haustuerklingel off) (set HUEDevice5 pct [HUEDevice5:pct_backup]) (set HUEDevice6 pct [HUEDevice6:pct_backup]) (set HUEDevice7 pct [HUEDevice7:pct_backup]) (set HUEDevice8 pct [HUEDevice8:pct_backup])
   FUUID      5f61b6f0-f33f-4dec-c606-5dcdf20d2d0171d6
   MODEL      FHEM
   NAME       doif_Lauflicht_Klingel
   NOTIFYDEV  global,dummy_Haustuerklingel
   NR         123
   NTFY_ORDER 50-doif_Lauflicht_Klingel
   STATE      cmd_1
   TYPE       DOIF
   VERSION    22030 2020-05-25 14:10:16
   READINGS:
     2020-09-20 19:04:48   Device          dummy_Haustuerklingel
     2020-09-20 19:04:55   cmd             1.27
     2020-09-20 19:04:55   cmd_event       dummy_Haustuerklingel
     2020-09-20 19:04:55   cmd_nr          1
     2020-09-20 19:04:55   cmd_seqnr       27
     2020-09-20 19:04:48   e_dummy_Haustuerklingel_state on
     2020-09-18 13:56:31   mode            enabled
     2020-09-20 19:04:55   state           cmd_1
     2020-09-20 19:04:55   wait_timer      no timer
   Regex:
     accu:
     cond:
       dummy_Haustuerklingel:
         0:
           state      ^dummy_Haustuerklingel$:^state:
   attr:
     cmdState:
     wait:
       0:
         0
         0
         0
         0
         0
         0.4
         0.4
         0.4
         0.4
         0.4
         0
         0.4
         0.4
         0.4
         0.4
         0.4
         0
         0.4
         0.4
         0.4
         0.4
         0.4
         0.4
         0
         0
         0
         0
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'dummy_Haustuerklingel','state') eq "on"
   do:
     0:
       0          setreading HUEDevice5 pct_backup [HUEDevice5:pct]
       1          setreading HUEDevice6 pct_backup [HUEDevice5:pct]
       10         set HUEDevice5 pct 100
       11         set HUEDevice6 pct 100
       12         set HUEDevice7 pct 100, set HUEDevice5 off
       13         set HUEDevice8 pct 100, set HUEDevice6 off
       14         set HUEDevice7 off
       15         set HUEDevice8 off
       16         set HUEDevice5 pct 100
       17         set HUEDevice6 pct 100
       18         set HUEDevice7 pct 100, set HUEDevice5 off
       19         set HUEDevice8 pct 100, set HUEDevice6 off
       2          setreading HUEDevice7 pct_backup [HUEDevice5:pct]
       20         set HUEDevice7 off
       21         set HUEDevice8 off
       22         set dummy_Haustuerklingel off
       23         set HUEDevice5 pct [HUEDevice5:pct_backup]
       24         set HUEDevice6 pct [HUEDevice6:pct_backup]
       25         set HUEDevice7 pct [HUEDevice7:pct_backup]
       26         set HUEDevice8 pct [HUEDevice8:pct_backup]
       3          setreading HUEDevice8 pct_backup [HUEDevice5:pct]
       4          set HUEDevice5 pct 100
       5          set HUEDevice6 pct 100
       6          set HUEDevice7 pct 100, set HUEDevice5 off
       7          set HUEDevice8 pct 100, set HUEDevice6 off
       8          set HUEDevice7 off
       9          set HUEDevice8 off
     1:
   helper:
     DEVFILTER  ^global$|^dummy_Haustuerklingel$
     NOTIFYDEV  global|dummy_Haustuerklingel
     event      on
     globalinit 1
     last_timer 0
     sleepdevice dummy_Haustuerklingel
     sleepsubtimer -1
     sleeptimer -1
     timerdev   dummy_Haustuerklingel
     timerevent on
     triggerDev dummy_Haustuerklingel
     DOIF_eventa:
       cmd_nr: 1
       cmd_seqnr: 27
       cmd_event: dummy_Haustuerklingel
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 27
       cmd_event: dummy_Haustuerklingel
       state: cmd_1
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       on
     triggerEventsState:
       state: on
   internals:
   perlblock:
   readings:
     all         dummy_Haustuerklingel:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Befehle
   wait       0,0,0,0,0,0.4,0.4,0.4,0.4,0.4,0,0.4,0.4,0.4,0.4,0.4,0,0.4,0.4,0.4,0.4,0.4,0.4,0,0,0,0