Pulse Audio Lautstärkeregelung

Hallo!

Kann mir ev. jemand dabei helfen?

Kann auf meinem Raspberry mit folgendem Befehl die Lautstärke ändern:
amixer -D pulse sset Master 50%

Wenn ich den Befehl per Script ausführe funktioniert es nicht.
system(‚amixer -D pulse sset Master 50%‘);
oder
exec(‚amixer -D pulse sset Master 100%‘);

Danke
Mike

Ich kann nur vermuten, aber ich tippe auf eine Rechte-Problem.

Als welcher Benutzer führst Du den Befehl auf der Console aus? Und unter welchem Benutzer läuft IPS?

Standardinstallation von IP Symcon…

Wie kann ich das feststellen?

Der IP Symcondienst läuft in root.
Die Konsole in pi.

Häng doch im Skript mal ein sudo davor.

leider nein, funktioniert ebenso nicht. :frowning:

Hallo MikeE,

versuch es doch mal wie hier beschrieben.

Gruß
Ralla

Danke für die Antwort.

Leider auch dieser Versuch funktioniert nicht.

Habe folgende Datei angelegt:
/var/lib/symcon/scripts/volume.sh

Script:

#! /bin/bash
/usr/bin/amixer -D pulse sset Master $1

chmod 777 volume.sh
chmod +x volume.sh

Aus der Kommandozeile funktioniert es:
/var/lib/symcon/scripts/volume.sh 10%

Mit dem Script aus IP-Symcon leider nicht: :banghead:
IPS_Execute("/var/lib/symcon/scripts/volume.sh",„10%“,false,false);

guck Mal hier:

https://www.symcon.de/forum/threads/20228-MultiRoom-Audio-per-RaspberryPi

Pulseaudio mittels module-cli-protocol-tcp kontrollieren.

Gruss, Michael

Naja,
wenn es tatsächlich nur um eine einfache Lautstärkeänderung geht, sollte das auf alle Fälle auch mit amixer funktionieren. Bei mir funktioniert es jedenfalls. Außerdem lernt man nichts dazu, wenn man bei jedem kleinen Problem gleich nach einer anderen Lösung sucht.

Die Feststellung „funktioniert nicht“ hilft in solchen Fällen allerdings nicht wirklich weiter.
Meistens hilft es ungemein, sich den Rückgabewert der aufgerufenen Funktion anzeigen zu lassen.

Dies geht im Shellscript folgendermaßen:

#! /bin/bash
/usr/bin/amixer -D pulse sset Master $1
echo $?

In der Variablen „$?“ steht der Rückgabewert des zuletzt ausgeführten Befehls. In diesem Fall also der Rückgabewert von „/usr/bin/amixer -D …“. Mit dem Befehl „echo $?“ wird dieser Wert auf der jeweiligen Standardausgabe ausgegeben. Bei dem Aufruf über ein IP-Symcon-Script wird der Wert an das aufrufende Script zurückgegeben.

Im IP-Symcon-Script erhält man auf diesen Wert Zugriff, in dem man den Rückgabewert des aufgerufenen Scripts einer Variablen zuweist. Im vorliegenden Fall sieht das dann so aus:

<?
	$result = IPS_Execute("/var/lib/symcon/scripts/volume.sh","100%",false,true);
	print $result."
";
?>

Der Wert „true“ des vierten Parameters von „IPS_Execute“ ist wichtig. Bei „false“ wird nicht auf das Ende des aufgerufenen Befehls ( in diesem Fall des Shellscripts) gewartet. Der Rückgabewert kann dann natürlich nicht zur Verfügung stehen. Mit „print $result.“
„“ wird der empfangene Rückgabewert ausgegeben. Nach dem Ausführen des Scripts aus dem Scripteditor heraus, steht der Rückgabewert dann in der Scriptausgabe zur Begutachtung bereit.

Wenn diese Ausgabe anschließend hier gepostet wird, kann wesentlich besser geholfen werden.

Gruß
Ralla

Hallo!

Der Rückgabewert ist:
1

mfg
Michael