fs20 s4a-2 zur Musik Steuerung

Ich komme grade nicht weiter.
Betrieben wird der fs20 s4 im doppelten Kanalmodus.
Auf den unteren Tasten starte ich entweder ein Schlaf oder Aufsteh Skript.
Das klappt auch, aber mit den oberen 2 Tasten komme ich nicht weiter.
Ich möchte bei kurzem druck linksoben meine Mediaplayer Instanz stoppen
und bei langem druck die Lautstärke verringern. Rechtsoben dann bei kurzem
Druck Play und bei langem druck Lautstärke erhöhen.

$status = GetValue(40470 /*[Eingänge\FS20 F4_Bett\Device Data (3311)]*/  );
$id_sound = 32727 /*[Multimedia\Media Player Sound]*/;
$volalt = GetValue(22818 /*[Multimedia\Media Player Sound\Lautstärke]*/ );
$volneu = ($volalt - 5);

	 IF ($status == 18)
		 {
      WAC_Stop($id_sound);
		 }
		 ELSE IF ($status == 21)
	   	{
			WAC_SetVolume($id_sound , $volneu);
	   	}

Starten und Stoppen klappt aber die Lautstärke bleibt gleich.
Getriggert wird das Skript auf Aktualisierung.

Hum, im Modus mit doppelter Kanalzahl wechselt der Sender beim langen betätigen zwischen Rauf- und Herabdimmen. Ich denke das ist für Deinen Zweck nicht so optimal (bzw. bringt keinen Vorteil). Ich frage die Sender im normalen Modus ab und kann über die Data Variable kurze und lange Tastendrücke gut unterscheiden.

Nutzt Du das Skript genau so wie Du es gepostet hast (kann mir garnicht vorstellen wie das so laufen kann)? Dann würde ich sagen versuche mal ein Event anzulegen, welches bei Aktualisierung der „Data Variable“ ausgeführt wird und hinterlege Dein Skript als „Handler“. Statt dem GetValue auf DeviceData fragst Du dann im Skript einfach „$IPS_VALUE“ ab.

Man könnte auch sagen, Event anlegen bei Aktualisierung der Datavariable und dann im Skript die erste Zeile durch „$status=$IPS_VALUE;“ ersetzen.

Grüße, Benjamin

Danke für die Hilfe, jetzt klappts.
Ist die bessere Lösung, meine anderen Skripte laufen aber auch
mit der GetValue Lösung :smiley:
Wieder was dazu gelernt.

Fein :slight_smile:

Wenn Du den Wert über IPS_VALUE$ reinbekommst läuft Dein Skript vermutlich schneller wenn Du dies nutzt und nicht extra GetValue aufrufst.
Was hast Du denn jetzt konkret gemacht / geändert?

Hier mal mein neues Skript.

$status=$IPS_VALUE;
$id_sound = 32727 /*[Multimedia\Media Player Sound]*/;
$volalt = GetValue(22818 /*[Multimedia\Media Player Sound\Lautstärke]*/ );


	 IF ($status == 17)
		 {
      WAC_PlayFile($id_sound,"http://85.25.86.69:8000/listen.pls");
		 }
	 else IF ($status == 19)
		 {
		$volneu = ($volalt + 5);
		WAC_SetVolume($id_sound , $volneu);
		 }
	 else IF ($status == 0)
		 {
      WAC_Stop($id_sound);
		 }
	 else IF ($status == 20)
	    {
	   $volneu = ($volalt - 5);
		WAC_SetVolume($id_sound , $volneu);
	  	}

Das Skript habe ich jetzt der „DEVICE DATA Variable“ als eigene Aktion angehängt
und das Skript auf Aktualisierung der „DEVICE DATA Variable“ getriggert.
Das klappt hervoragend, nochmals danke für die Hilfe.

Zu meinem Verständniss hätte ich aber noch eine Frage zum $IPS_VALUE.
Bezieht sich $IPS_VALUE auf die Variable oder den Trigger.
Habe versucht das in einem anderen Skript einzubauen und habe da
immer den Wert der getriggerten IntegeVar zurück bekommen.