Audio-switch... Systemcall-Aufruf mit "system" exit -1

Begonnen von knopf_piano, 06 Februar 2017, 19:32:35

Vorheriges Thema - Nächstes Thema

knopf_piano

Hi,
ich weiß nicht, ob ich zu blöd bin, aber ein simples{system("ls -l")} gibt mir nichst aus, sondern eine Anzeige/Rückgabewert mit-1
Ich möchte eigentlich was anderes ins system rufen, bekomm aber immer -1 als exit.
Ich hab schon sämtliche Varianten versucht,

{system("ls -l")};
{system("ls -l")};;
{system('ls -l')}
{system "ls -l"}
{system "ls -l"}
{system "ls \-l"}
{system("ls -l")};

... immer -1...

was ich eigentlich machen will, meinem raspi ein Umschalten des audio-outputs (hdmi/3.5mm) beibringen:


{system("amixer cset numid=3 2")}
{system("amixer cset numid=3 1")}

immer -1

ich verräck... :o
zotac nano mit proxmox und ganz viel zeug drauf

rudolfkoenig


knopf_piano

:-)
rudi, danke
jetzt nehm ich das ganze und versuch das was ich machen will

{`amixer cset numid=3 2`}
{`amixer cset numid=3 1`}

--> Kein soundwechsel zwischen hdmi/phone

wenn ich das aus der commandref nehm:
{system ("mplayer /home/pi/t.mp3 &")}
hör ich nix...

process wird gestartet:
pi@livingpi:~ $ ps -aux|grep mpla
fhem      1167 16.0  2.9 154032 27500 ?        Sl   19:38   0:00 mplayer /home/pi/t.mp3


ich hab die befehle schon in ein sh-file gepackt und aufgerufen --> das gleiche
:o
zotac nano mit proxmox und ganz viel zeug drauf

Wernieman

darf den der User fhem es? auf der Kommandozeile (user fhem) probiert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

knopf_piano

sudo addgroup fhem audio
das war's -> mplayer-audio regt sich...

allerdings funzt die Sache mit der Umschaltung hdmi/3.5mm noch nicht
{`amixer cset numid=3 2`}
{`amixer cset numid=3 1`}

amixer hat den ls:
-rwxr-xr-x 1 root root 43056 Jul 17  2014 /usr/bin/amixer
müßte ich dann auch fhem zum ändern ertüchtigen.
zu welcher gruppe muss fhem ich dann hinzufügen, damit fhem den amixer ändern darf?
zotac nano mit proxmox und ganz viel zeug drauf

Wernieman

Sorry, aber "was funzt mit amixer ned"?
Fehlermeldung?

Jeder User darf das Programm amixer ausführen, da es für jeden lesbar (x) und ausführbar (x) ist.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

rudolfkoenig

Das Programm greift aber auf Hardware zu, was einem Benutzer, der "vor dem Geraet sitzt", zugeordnet ist.
Wenn das jeder, der angemeldet ist, verstellen koennte, waere das ein Sicherheitsloch.

Wernieman

Ich habe nur gesagt, das es "ausführbar" ist. Nicht, das das Programm auch die Hardware ändert .... ;o)

Btw: es könnte nicht nur ein Hardware sondern auch ein Softwaremixer sein ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

knopf_piano

Ich hab ne Lösung füt meinen Anwendungsfall, am woe bau ichs komplett in mein fhem ein, dann kommts hier rein.

Gesendet von meinem GT-I9301I mit Tapatalk

zotac nano mit proxmox und ganz viel zeug drauf

knopf_piano

#9
so, wie versprochen meine Lösung.
Setup ist folgendes
- (1) Fhem auf Banana
- (2) entfernter Kodi auf Raspberry-3 (kodi auf raspian) mit HDMI-Conn zum TV

(2) hat die Eigenheit, dass der audio-output definiert werden muss: hdmi ODER 3,5-klinke.
Wenn jetzt auf hdmi, ist mit phone nix mehr los.
Ich will jedoch den Fernseher trotzdem ausschalten können und per 3,5-klinke (2) als dlna-renderer betreiben können

Initial, wie oben erhofft, wollte ich auf (2) mit einem lokalen fhem den amixer von phone auf hdmi (vice versa) umstellen,
je nach dem, ob der SmartTV present/absent ist.
Geile Idee, denkt sicht der geneigte user.

Hat jedoch an den Rechten gescheitert (siehe oben)

Lösung, um den amixer (hdmi/phone) von (2) von (1) aus umzuschalten
(ist aber für meine Anwendungsfall noch nicht final, der der gestartete Kodi (standalone) den pulseaudio festhält, nicht amixer, hier muss ich nochmal ran, es wird aber...)

vorher installieren:
cpan -i Net::OpenSSH
sub in 99_myUtils.pm
sub RemoteSoundOutputDevSwitch(@)
{
  my ($ip, $user, $pass, $outputDev) = @_;
  my $set = "amixer cset numid=3 2"; #default hdmi
  my %opts;

  $opts{user} = $user;
  $opts{password} = $pass;
   
  use Net::OpenSSH;

  my $ssh = Net::OpenSSH->new($ip, %opts, master_opts => [-o => "UserKnownHostsFile=/dev/null", -o => "StrictHostKeyChecking=no"]);
  $ssh->error and
    die "Couldn't establish SSH connection: ". $ssh->error;

  if($outputDev =~ /hdmi/)
  {
  $set = "amixer cset numid=3 2";
  }
  elsif($outputDev =~ /phone/)
  {
  $set = "amixer cset numid=3 1";
  }
 
  $ssh->system($set) or
    die "remote command failed: " . $ssh->error;
 
  undef $ssh;
  return 1;
}

abhängig, ob TV absent/present, oder was auch immer on/off, folgendes doif:
<ip>, <user>, <passwd> durch eures ersetzen

define DI_SwitchAudioOutput DOIF ([TV] eq "absent")\
    ({RemoteSoundOutputDevSwitch("<ip>","<user>","<passwd>","phone")})\
  DOELSEIF ([TV] eq "present")\
    ({RemoteSoundOutputDevSwitch("<ip>","<user>","<passwd>","hdmi")})
attr DI_SwitchAudioOutput do always
attr DI_SwitchAudioOutput room TEST
define TV dummy
attr TV room TEST
attr TV webCmd absent:present


Somit wird per ssh-login das ausgeführt, was ich auf der remote-kiste will.
kann natürlich auch was anderes sein, als <user>, root sollt nix machen dürfen natürlich.

Soweit... wenn ich den kodi jetzt noch vom pulseaudio lösen kann, meld ich mich hier wieder. sollte aber (hoffentlich) nicht das soooo Problem darstellen :-)

zotac nano mit proxmox und ganz viel zeug drauf

knopf_piano

das Paket Net::SSH::Perl funktioniert auf meinem bananapi übrigens nicht, obwohl es auf pc korrekt läuft.
hatte hier irrsinnig schwierigkeiten, das zu isntallieren, erst libs gesucht, dann cpan, dann direkt runtgeladen und kompiliert.
nachdem es endlich installiert war hab ich fehlermeldungen zu crypto-libs bekommen, deren versionen anscheinend auf dem system kollidieren bzw. fehlerhaft sind oder nicht ansprechbar sind.
daher der ausweg zur alternative openssh
zotac nano mit proxmox und ganz viel zeug drauf

knopf_piano

Zitat von: knopf_piano am 11 Februar 2017, 17:56:35
Initial, wie oben erhofft, wollte ich auf (2) mit einem lokalen fhem den amixer von phone auf hdmi (vice versa) umstellen,
je nach dem, ob der SmartTV present/absent ist.
Geile Idee, denkt sicht der geneigte user.
und wenn der geneigt user vorher auch mal im kodi nachgeschaut hätte, hätte er gesehen, dass der kodi die option bietet, Audio über hdmi UND analog auszugeben.
Somit hak ich den thread und mein vorhaben unter "wieder was gelernt" ab. ::)
greets
zotac nano mit proxmox und ganz viel zeug drauf

Wernieman

Und eigentlich kannst Du das Packet netssh auch über die Distri beziehen. Hat den Vorteil, gegenüber cpan, das bei aktuallisierungen es gleich it aktuallisiert wird. Sonst könnte es zu schwierigkeiten kommen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

knopf_piano

Hab ich gemacht, wie geschrieben: auf bananian nicht möglich wg nicht passenden crypto libs. Auf pc (mint) wars kein problem.

Gesendet von meinem SM-J510FN mit Tapatalk

zotac nano mit proxmox und ganz viel zeug drauf

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

knopf_piano

Net::OpenSSH ist was anderes als Net::SSH::Perl, wie geschrieben
zotac nano mit proxmox und ganz viel zeug drauf

Wernieman

Jep .. mein Hinweis war aber nur, es lieber erstmal mit den Distri-Möglichkeiten zu Probieren als gleich cpan zu nehmen.

cpan hat den Vorteil der aktuallität, den Nachteil das es an den Distri-Möglichkeiten vorbei opperiert, d.h. z.B. bei einem Update .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

knopf_piano

Dass stimmt natürlich. da bin ich auch deiner meinung.
zotac nano mit proxmox und ganz viel zeug drauf