Z-Wave / Manuelle Lichtschalterbetätigung langsam und nicht zuverlässig

Hallo liebe Community,

ich habe folgende Feststellung bei mir machen müssen und vielleicht habt ihr ja einen Rat für mich:

Ich habe eine Variable (Boolean) erstellt, welche bei Betätigung des Lichtschalters gesetzt wird. Dann ein Ereignis, welches auf die Variable reagiert und folgendes Skript auslöst:

// Skript 'Tag/Nacht Steuerung' wird ausgeführt
<?
$Lichtschalter_01 = GetValue (47039 /*[Erdgeschoss\Küche\Zwave Fibaro Dimmer 01 Deckenbeleuchtung rechts (NodeID 019)\Daten (Boolean)]*/);								// Lichtschalter oben Tür zum Flur

If ($Lichtschalter_01 == true)																																			// Bedingung
{
ZW_SwitchMode(35989 /*[Erdgeschoss\Küche\Zwave Fibaro Releay 2xSwitch 01 (NodeID 018)\Fibaro Releay 2xSwitch 02 Niesche (NodeID 018) (SubID 1)]*/,true); 				// Nischenbeleuchtung einschalten
ZW_DimSet(18679 /*[Erdgeschoss\Küche\Zwave Fibaro Dimmer 01 Deckenbeleuchtung rechts (NodeID 019)]*/,90);  																// Licht rechte Seite wird auf 90% eingeschaltet
ZW_DimSet(16216 /*[Erdgeschoss\Küche\Zwave Fibaro Dimmer 02 Deckenbeleuchtung links (NodeID 021)]*/,90);  																// Licht linke Seite wird auf 20% eingeschaltet
ZW_SwitchMode(35905 /*[Erdgeschoss\Küche\Zwave Fibaro Releay 2xSwitch 01 (NodeID 018)\Fibaro Releay 2xSwitch 03 Arbeitsplatte (NodeID 018) (SubID 2)]*/, true);			// LED-Beleuchtung unter der Arbeitsplatte wird eingeschaltet
ZW_SwitchMode(58154 /*[Erdgeschoss\Küche\Zwave Fibaro Wallplug 01 (NodeID 037)]*/, true);  																				// Regalbeleuchtung an der Kaffeebar wird eingeschaltet
SetValue(57406 /*[Erdgeschoss\Küche\Licht_manuell]*/, true);
}

If ($Lichtschalter_01 == false)																																		// Bedingung
{
SetValueBoolean(57406 /*[Erdgeschoss\Küche\Licht_manuell]*/, false);																									// Variable wird gesetzt
ZW_SwitchMode(35989 /*[Erdgeschoss\Küche\Zwave Fibaro Releay 2xSwitch 01 (NodeID 018)\Fibaro Releay 2xSwitch 02 Niesche (NodeID 018) (SubID 1)]*/,false); 				// Nischenbeleuchtung einschalten
ZW_DimSet(18679 /*[Erdgeschoss\Küche\Zwave Fibaro Dimmer 01 Deckenbeleuchtung rechts (NodeID 019)]*/,0);  																// Licht rechte Seite wird auf 90% eingeschaltet
ZW_DimSet(16216 /*[Erdgeschoss\Küche\Zwave Fibaro Dimmer 02 Deckenbeleuchtung links (NodeID 021)]*/,0);  																// Licht linke Seite wird auf 20% eingeschaltet
ZW_SwitchMode(35905 /*[Erdgeschoss\Küche\Zwave Fibaro Releay 2xSwitch 01 (NodeID 018)\Fibaro Releay 2xSwitch 03 Arbeitsplatte (NodeID 018) (SubID 2)]*/, false);		// LED-Beleuchtung unter der Arbeitsplatte wird eingeschaltet
ZW_SwitchMode(58154 /*[Erdgeschoss\Küche\Zwave Fibaro Wallplug 01 (NodeID 037)]*/, false);  																			// Regalbeleuchtung an der Kaffeebar wird eingeschaltet
}

?>

Leider werden die Leuchten nur langsam und meinstens hintereinander ausgelöst. Viel schlimmer aber finde ich, dass manchmal Lampen einfach „vergessen“ werden.

[ul]
[li]Habe ich das Skript falsch geschrieben?
[/li][li]Ist die ganze Umsetzung falsch, mit Variable, darauf ein Ereignis etc.
[/li][/ul]

Bin leider ratlos.

Das Skript wird, so wie es geschrieben ist, von oben nach unten abgearbeitet, daher ist es nicht verwunderlich das eins nach dem anderen abgearbeitet wird.

Wenn Du Prozesse parallel ausführen willst, musst Du die Einzelbefehle in jeweils ein separates Skript stecken und dann in dem Skript, was mehrere Geräte schaltet, jeweils nur das Skript mit
IPS_RunScript aufrufen, dann werden alle Prozesse die durch das Skript aufgerufen werden zeitgleich ausgeführt.

Wobei, wenn jetzt schon Steuerungen Fehlschlagen, es sich durch die quasi parallel Ausführung vermutlich nur verschlechtern wird.
Das Z-Way Gateway wird ja rein serielle (also auch sequentiell bei den Befehlen) angesprochen.
Michael

Sollen die Einzelbefehle in jeweils separate Skripte und führen die einzelnen IPS-RunScript Aufrufe nicht wieder zum zeitversetzten Start?

Ich schalte morgens alle Rolläden + Jaousien im EG. (10 Stück).
Genau aus diesem Grund, lasse ich die Schaltung mit kleinen sleeps nacheinander abarbeiten. Klappt super zuverlässig!
Ansonsten, wenn man etwas gleichzeitig schalten möchte, müsste man mit Gruppen/Klassen im zwave Umfeld arbeiten. Z.b. ne Gemeinsame Alarmklasse auf die die Einzelnen Lichtaktoren reagieren sollen…

Gesendet von meinem Redmi 4X mit Tapatalk

@BennyS:
Nein weil RunScript und RunScriptText nicht warten bis das aufgerufene Script beendet wurde.
Das machen nur RunScriptWait und RunScriptTextWait.

Siehe hier: Ablaufsteuerung — IP-Symcon :: Automatisierungssoftware

Ist aber eher eine schlechte Idee noch Befehle gleichzeitig über Funk zu versenden.
Michael

Was ich nicht verstehe ist, dass wenn ein Skript bspw. durch einen Sensor (Bewegung) ausgeführt wird, mehr oder weniger alle Aufrufe zeitgleich ausgeführt werden.

Der Aufbau des Skripts ist ähnlich dem von mir bereits in diesem Thread geposteten.

Das fehlerhafte Verhalten habe ich nur beim manuellen auslösen über einen Lichtschalter.

Hallo BennyS,

wie entprellt denn dein Lichtschalter (Taster?).
Evtl. wird dein Script ja viele Male gestartet (schau ins LOG) und du machst dein z-Wave Netz dicht ?

Grüße aus Berlin
lueralba

Danke für den Hinweis:

Mit dem Thema Logdateien muss ich mich noch etwas näher befassen. Ich werde das prüfen.