Remotecontrol, SamsungAV und 0_macro: Zeichensetzung?

Begonnen von Nuems, 26 Dezember 2024, 11:23:24

Vorheriges Thema - Nächstes Thema

Nuems

Moin und frohe Weihnachten,
ich möchte für meinen Samsung-Fernseher einen schnellen Umschalter für die Tonausgabe per TV bzw. per optischem Ausgang anlegen. Sowohl remotecontrol als auch SamsungAV sind in FHEM voll funktionsfähig eingerichtet. Ich kann auch per SamsungAV (aka "Fernseher" im Beispiel unten) manuell einen Befehl absetzen, der auf die eine oder andere Tonoption umschaltet, also etwa:
set Fernseher 0_macro menu,down,right,,,enter,,up,,enter,exit
Leider habe ich es noch nicht geschafft, die Sequenz von "0_macro" bis "exit" korrekt in die Definition für einen Fernbedienungsbutton zu schreiben. Ich nehme an, dass ich dafür Anführungszeichen,Apostrophe oder Klammern brauche, aber mit "", '',{} und () hatte ich bisher keinen Erfolg.
Bitte schubst mich in die richtige Richtung.
Danke,
Thomas

Nuems

Na gut, dann antworte ich mir selbst, denn ich habe eine Lösung gefunden (auch wenn ich irgendwie glaube, dass das ein leichter Overkill ist):
Als erstes benötige ich eine kleine, benutzerdefinierte Fernbedienung zum Umschalten der Tonausgabe zwischen TV-Lautsprechern und SPDIF. Und weil ich gerade dabei bin, kommt noch eine Button für Mute dazu:
define Soundboard remotecontrol
attr Soundboard rc_iconpath icons/remotecontrol
attr Soundboard rc_iconprefix black_btn_
attr Soundboard room Medienzimmer
attr Soundboard row00 mute:MUTE,tvout:AUDIO2,spdif:2ND_AUDIO


Während man "mute" direkt an SamsungAV weiterleiten könnte, wird für das Umschalten der Tonoptionen ein Fernbedienungsmakro benötigt, das ich nicht in der Fernbedienungsdefinition unterbingen konnte (s. ein Posting vorher).
Also habe ich zum einen ein etwas angepasstes notify verwendet und eine kleine Funktion in 99_myUtils.pm gebastelt (sorry, ich habe so gar keine Ahnung von Perl):
define notify_Soundboard notify Soundboard {Soundout("$EVENT")}
attr notify_Soundboard room Medienzimmer

sub Soundout($) {
  my ($obj) = @_;

  if( $obj eq "tvout" ){
    fhem( "set Fernseher 0_macro menu,down,right,,enter,,,up,enter,,exit" );
  }
  elsif( $obj eq "spdif" ){
    fhem( "set Fernseher 0_macro menu,down,right,,enter,,,down,enter,,exit" );
  }
  else {
    fhem( "set Fernseher mute" );
  }
}
Das funktioniert soweit erwartungsgemäß und erspart mir das Gehangel im Menü das Fernsehers.  8)