DOIF mit if Befehlen und dem Attribut wait, geht irgendwie nicht

Begonnen von cocojambo, 09 August 2022, 14:21:35

Vorheriges Thema - Nächstes Thema

cocojambo

Ich steuere die gesamt Unterhaltungselektronic mit DOIF und den Abfragen mit if um den Zustand der einzelnen Geräte festzustellen um dann entsprechend verschiedene Optionen zu schalten ( z.B. TV sehen, BluRay sehen, Radio hören, etc.) Zwischen den einzelnen Schaltoptionen sollen aber immer 5 Sekunden Pause sein.
Wenn dann die gesamte Anlage ausgeschaltet wird, soll die Beleuchtung noch 30 Sekunden an sein.

........DOELSEIF([HarmonyHub:currentActivity] eq "PowerOff") (set AV_Receiver off) (set Kodi_Sw_04 on-for-timer 30)
(IF ([Subwoofer_Sw_06:state] eq "on") (set Subwoofer_Sw_06 Aus))
(IF ([Dreambox_Sw_08_dummy:state] eq "on") (set Dreambox_Sw_08_dummy Stby))
(IF ([Television_Sw_01:state] eq "on") (set Television_Sw_01 Aus))
(IF ([Ambilight_Sw_05:state] eq "on") (set Ambilight_Sw_05 Aus))
(IF ([Blu_Ray_Player_Sw_03:state] eq "on") (set Blu_Ray_Player_Sw_03 Aus))
(IF ([Laptop_Sw_02:state] eq "on") (set Laptop_Sw_02 Aus))
(IF ([Phono_Sw_07:state] eq "on") (set Phono_Sw_07 Aus)) (set hueBridge1_HUEGroup0 off)

DOELSE


Die Wartezeit für jedes einzelne Gerät steuere ich mit dem Attribut wait.

wait .....:0,5,5,5,5,5,5,5,5,30

Aber der Befehl wait wird nicht verarbeitet. Die einzelnen set-Befehle werden ohne jegliche Wartezeit erledigt und auch der wait Befehl für die "HUE-Beleuchtung" findet keine Beachtung, schaltet einfach alles durch ohne Wartezeit.
Woran liegt das und gibt es dafür eine Lösung?
oder habe ich einen Denkfehler gemacht?

Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Damian

Bei mir funktioniert deine Definition. Im Reading wait_timer kann man sehen, wie die Befehl in zeitlicher Abfolge nacheinander ausgeführt werden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per


Gisbert

FILTER! ist so viel übersichtlicher als IF-Abfragen. Nachdem ich mal kapiert hatte, wie es funktioniert, hatte ich all die IF-Konstrukte rausgeschmissen.

Beispiele sehen so aus:
set <dein Device>:FILTER=cmd!=Aus Aus
oder
set <dein Device>:FILTER=cmd=An Aus

Das Ausrufezeichen im 1. Beispiel ist eine Verneinung.

Es geht auch sowas, d.h. man kann auch mehrere Zustände filtern, hier dann auch in der verneinten Form:
set <dein Device>:FILTER=cmd!=Aus|Zu Aus

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

cocojambo

@ Damian
Du hast recht, in wait_timer kann man die zeitige Abfolge sehen. Ich hatte nur in "wait" zu wenige DOELSEIF mit dem Doppelpunkt berücksichtigt. Bei mir wird 6x hintereinander mit DOELSEIF abgefragt. Ich hatte aber nur 5 berücksichtigt.

@Per
FILTER kenne ich überhaupt nicht, auch mit den Ausführungen im Board hätte ich das auch nie kapiert, wenn Gisbert hier kein Beispiel gepostet hätte.

@Gisbert
Deine Beispiele verstehe ich, aber was ist der Vorteil wenn man statt "if" "FILTER" außer der Übersichtlichkeit, verwendet?
Ich finde die Idee das so zu machen, schon besser und werde es auf jeden Fall mal vorsichtig testen.

Vielen Dank an Euch
Gruß aus "Kölle"
Nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Gisbert

Zitat@Gisbert
Deine Beispiele verstehe ich, aber was ist der Vorteil wenn man statt "if" "FILTER" außer der Übersichtlichkeit, verwendet?
Ich finde die Idee das so zu machen, schon besser und werde es auf jeden Fall mal vorsichtig testen.

Vielen Dank an Euch
Gruß aus "Kölle"
Nobbi

Das Hauptargument für mich ist die deutlich bessere Lesbarkeit. Wie das ganze dann im Maschinenraum von Perl und Linux umgesetzt wird, und ob es Performance-Unterschiede gibt, kann ich nicht sagen. Ich kann mir aber kaum vorstellen, dass es da einen Unterschied gibt.

Da du "Kölle" erwähnt hast:
https://forum.fhem.de/index.php/topic,128747.0.html

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY