FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: Carsten K. am 18 Januar 2014, 17:14:48

Titel: Antw:Lautstärke von Philips TV abfragen [gelöst]
Beitrag von: Carsten K. am 18 Januar 2014, 17:14:48
Hallo,

ich möchte bei eingehendem Telefonanruf die TV-Lautstärke herunterstellen und danach wieder auf den ursprünglichen Wert.
Über Beispiele habe ich bereits mein Grundgerüst stehen.

Nach 2 Tagen suchen und ausprobieren habe ich noch folgendes Problem:
Das Modul 74_PhilipsTV.pm liefert über get {device} AudioVolume ein JSON-Hash (ich vermute, dass es sich um ein "JSON-Hash" handelt).
Die Rückgabe hat folgendes Muster (kommt auch im Konsolen-Log "tail -f ..."):
{
"muted": false,
"current": 24,
"min": 0,
"max": 60
}


Da ich in JSON und perl noch nicht versiert bin, habe ich hier Verständnisprobleme und konnte daher noch keinen eigenen Lösungsansatz finden.

Wo kann ich suchen, um den Wert von "current" in eine perl-Variable zu bekommen?


Sollte diese Frage in der falschen Gruppe stehen, bitte Hinweis, wo es besser hinpasst  ;)

Freundliche Grüße
Titel: Antw:Lautstärke von Philips TV abfragen
Beitrag von: Starkstrombastler am 18 Januar 2014, 23:03:11
Hi,

für die Dekodierung des JSON-Strings existiert bereits ein Perl-Modul: PP.pm

http://cpansearch.perl.org/src/MAKAMAKA/JSON-PP-2.27203/lib/JSON/PP.pm (http://cpansearch.perl.org/src/MAKAMAKA/JSON-PP-2.27203/lib/JSON/PP.pm)

Auf der Fritz-Box hierzu einen Ordner "JSON" anlegen:
   /fritz.nas/fhem/JSON

In der 99_Utils muss ergänzt werden:

use lib '.';
use JSON::PP;


Dann noch in der 99_Utils eine Funktion ergänzen (greift auf eine Funktion in 74_PhilipsTV zurück):

sub
get_Audio($)
{
my $devicename=shift;
my $json = JSON::PP->new;
my $JS_Stream = PhilipsTV_GetValue("/1/audio/volume",$devicename);
my $data = $json->decode($JS_Stream);
my $Level= $data->{current};
my $Mute= $data->{muted};
return $Level;
};


Die Funktion wird dann z.B. in einem at oder notify wie folgt verwendet

my $ip_adress="192.168.178.88";
my $volume=get_Audio($ip_adress);


Viel Erfolg!

Titel: Antw:Lautstärke von Philips TV abfragen
Beitrag von: Carsten K. am 19 Januar 2014, 08:17:09
ich habe nicht damit gerechnet so eine präzise Antwort zu bekommen :D
Vielen Dank,  werde ich heute noch ausprobieren.
Titel: Antw:Lautstärke von Philips TV abfragen [gelöst]
Beitrag von: Carsten K. am 19 Januar 2014, 13:13:54
So, jetzt läuft's bei mir  ;D

Ich habe es komplett in die 99_myUtils.pm integriert:
...
use lib '.';
use JSON::PP;

sub getPhilipsTvAudioVolume($)
{
  my $deviceName = shift;
  my $volStream = PhilipsTV_GetValue("/1/audio/volume", $deviceName);
  my $json = JSON::PP->new;
  my $data = $json->decode($volStream);

  return $data;
}

sub testPhilipsTvVolume()
{
  my $data = getPhilipsTvAudioVolume("philips-tv.fritz.box");
  my $muted = $data->{muted};
  my $volume = $data->{current};
  Log 1, "MUTED: ".$muted;
  Log 1, "VOLUME: ".$volume;
}


VIELEN DANK !!!