From 98e22547e4c26c4bda63839b6126f67ab0448a8d Mon Sep 17 00:00:00 2001 From: hofrichter <> Date: Sat, 28 Jun 2014 00:06:17 +0000 Subject: [PATCH] 70_PIONEERAVR.pm: more input presets (spotify, mhl, hdmi7, hdmi8), inputs are now queried from 1 - 59 71_PIONEERAVRZONE.pm: bugfix:logging, set input git-svn-id: https://svn.fhem.de/fhem/trunk@6171 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 3 ++- fhem/FHEM/70_PIONEERAVR.pm | 29 ++++++++++++++++++++--------- fhem/FHEM/71_PIONEERAVRZONE.pm | 29 +++++++++++++++++++++++------ 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index a3525b951..32be99ac3 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -5,7 +5,8 @@ check every 120s if the data connection to the Pioneer AV receiver is still up check if we get a reply from the Pioneer AV receiver not later than 3s after a command was sent fix for alias names of inputs - 70_PIONEERAVRZONE.pm: bugfix in logging + more input presets (spotify, mhl, hdmi7, hdmi8), inputs are now queried from 1 - 59 + 71_PIONEERAVRZONE.pm: bugfix:logging, set input - change: 00_RPII2C.pm: hardware access changed to ioctl and syswrite/read SMBus module not needed anymore but still usable, see attribute useHWLib possibility to swap I2C-0 to P5 for Rev. B raspberries via attribute swap_i2c0 (not tested yet) diff --git a/fhem/FHEM/70_PIONEERAVR.pm b/fhem/FHEM/70_PIONEERAVR.pm index 52a94d709..4f488170d 100644 --- a/fhem/FHEM/70_PIONEERAVR.pm +++ b/fhem/FHEM/70_PIONEERAVR.pm @@ -181,9 +181,10 @@ PIONEERAVR_Define($$) { "03" => {"name" => "cdrTape", "aliasName" => "", "enabled" => "1"}, "04" => {"name" => "dvd", "aliasName" => "", "enabled" => "1"}, "05" => {"name" => "tvSat", "aliasName" => "", "enabled" => "1"}, - "06" => {"name" => "CblSat", "aliasName" => "", "enabled" => "1"}, + "06" => {"name" => "cblSat", "aliasName" => "", "enabled" => "1"}, "10" => {"name" => "video1", "aliasName" => "", "enabled" => "1"}, "12" => {"name" => "multiChIn", "aliasName" => "", "enabled" => "1"}, + "13" => {"name" => "usbDac", "aliasName" => "", "enabled" => "1"}, "14" => {"name" => "video2", "aliasName" => "", "enabled" => "1"}, "15" => {"name" => "dvrBdr", "aliasName" => "", "enabled" => "1"}, "17" => {"name" => "iPodUsb", "aliasName" => "", "enabled" => "1"}, @@ -193,12 +194,21 @@ PIONEERAVR_Define($$) { "21" => {"name" => "hdmi3", "aliasName" => "", "enabled" => "1"}, "22" => {"name" => "hdmi4", "aliasName" => "", "enabled" => "1"}, "23" => {"name" => "hdmi5", "aliasName" => "", "enabled" => "1"}, + "24" => {"name" => "hdmi6", "aliasName" => "", "enabled" => "1"}, "25" => {"name" => "bd", "aliasName" => "", "enabled" => "1"}, "26" => {"name" => "homeMediaGallery", "aliasName" => "", "enabled" => "1"}, "27" => {"name" => "sirius", "aliasName" => "", "enabled" => "1"}, "31" => {"name" => "hdmiCyclic", "aliasName" => "", "enabled" => "1"}, - "33" => {"name" => "adapterPort", "aliasName" => "", "enabled" => "1"} - }; + "33" => {"name" => "adapterPort", "aliasName" => "", "enabled" => "1"}, + "34" => {"name" => "hdmi7", "aliasName" => "", "enabled" => "1"}, + "35" => {"name" => "hdmi8", "aliasName" => "", "enabled" => "1"}, + "38" => {"name" => "internetRadio", "aliasName" => "", "enabled" => "1"}, + "41" => {"name" => "pandora", "aliasName" => "", "enabled" => "1"}, + "44" => {"name" => "mediaServer", "aliasName" => "", "enabled" => "1"}, + "45" => {"name" => "favorites", "aliasName" => "", "enabled" => "1"}, + "48" => {"name" => "mhl", "aliasName" => "", "enabled" => "1"}, + "53" => {"name" => "spotify", "aliasName" => "", "enabled" => "1"} + }; # ----------------Human Readable command mapping table----------------------- $hash->{helper}{SETS} = { 'main' => { @@ -684,7 +694,7 @@ PIONEERAVR_Set($@) my $arg = ($a[2] ? $a[2] : ""); my @args= @a; shift @args; shift @args; my @setsPlayer= ("play","pause","stop","repeat","shuffle"); # available commands for certain inputs (@playerInputNr) - my @playerInputNr= ("13","17","18","26","27","33","38","41","44","45","48"); # Input number for usbDac, ipodUsb, xmRadio, homeMediaGallery, sirius, adapterPort, internetRadio, pandora, mediaServer, Favorites, mhl + my @playerInputNr= ("13","17","18","26","27","33","38","41","44","45","48","53"); # Input number for usbDac, ipodUsb, xmRadio, homeMediaGallery, sirius, adapterPort, internetRadio, pandora, mediaServer, Favorites, mhl, spotify my @setsTuner = ("channelUp","channelDown","channelStraight","channel"); # available commands for input tuner my @setsWithoutArg= ("off","toggle","volumeUp","volumeDown","muteOn","muteOff","muteToggle","inputUp","inputDown"); # set commands without arguments my $playerCmd= ""; @@ -787,8 +797,8 @@ PIONEERAVR_Set($@) $playerCmd= $cmd."Ipod"; } elsif ($inputNr eq "33") { $playerCmd= $cmd."AdapterPort"; - #### homeMediaGallery, sirius, internetRadio, pandora, mediaServer, favorites - } elsif (($inputNr eq "26") ||($inputNr eq "27") || ($inputNr eq "38") || ($inputNr eq "41") || ($inputNr eq "44") || ($inputNr eq "45")) { + #### homeMediaGallery, sirius, internetRadio, pandora, mediaServer, favorites, spotify + } elsif (($inputNr eq "26") ||($inputNr eq "27") || ($inputNr eq "38") || ($inputNr eq "41") || ($inputNr eq "44") || ($inputNr eq "45") || ($inputNr eq "53")) { $playerCmd= $cmd."Network"; #### 'random' and 'repeat' are not available on input mhl } elsif (($inputNr eq "48") && (( $cmd eq "play") || ( $cmd eq "pause") ||( $cmd eq "stop"))) { @@ -824,6 +834,7 @@ PIONEERAVR_Set($@) Log3 $name, 5, "PIONEERAVR $name: sending raw command ".dq($allArgs); PIONEERAVR_Write($hash, $allArgs); return undef; + ####Input (all available Inputs of the Pioneer AV receiver -> see 'get $name loadInputNames') #### according to http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV #### first try the aliasName (only if this fails try the default input name) @@ -1454,9 +1465,9 @@ sub PIONEERAVR_askForInputNames($$) { my $name = $hash->{NAME}; my $comstr = ''; - # we ask for the inputs 1 to 49 if an input name exists (command: ?RGB00 ... ?RGB49) - # and if the input is disabled (command: ?SSC0003 ... ?SSC4903) - for ( my $i=0; $i<50; $i++ ) { + # we ask for the inputs 1 to 59 if an input name exists (command: ?RGB00 ... ?RGB59) + # and if the input is disabled (command: ?SSC0003 ... ?SSC5903) + for ( my $i=0; $i<60; $i++ ) { select(undef, undef, undef, 0.1); $comstr = sprintf '?RGB%02d', $i; PIONEERAVR_Write($hash,$comstr); diff --git a/fhem/FHEM/71_PIONEERAVRZONE.pm b/fhem/FHEM/71_PIONEERAVRZONE.pm index 984a31af5..27291ecbd 100644 --- a/fhem/FHEM/71_PIONEERAVRZONE.pm +++ b/fhem/FHEM/71_PIONEERAVRZONE.pm @@ -120,7 +120,7 @@ PIONEERAVRZONE_Set($@) my @setsWithoutArg= ("off","toggle","volumeUp","volumeDown","muteOn","muteOff","muteToggle","inputUp","inputDown"); - Log3 $name, 5, "PIONEERAVRZONE $name: called function PIONEERAVR_Set()"; + Log3 $name, 5, "PIONEERAVRZONE $name: called function PIONEERAVR_Set($cmd)"; return "No Argument given" if ( !defined( $cmd ) ); @@ -206,12 +206,28 @@ PIONEERAVRZONE_Set($@) ####Input (all available Inputs of the Pioneer Avr -> see 'get $name loadInputNames') ####according to http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV if ( $cmd eq "input" ) { + + Log3 $name, 5, "PIONEERAVRZONE $name: set $cmd ".dq($arg); foreach my $key ( keys %{$IOhash->{helper}{INPUTNAMES}} ) { - if ( $IOhash->{helper}{INPUTNAMES}->{$key}{name} eq $arg ) { - IOWrite($hash, sprintf "%02dFN", $key); - readingsSingleUpdate($hash, "input", $arg, 1 ); + if ( $IOhash->{helper}{INPUTNAMES}->{$key}{aliasName} eq $arg ) { + if ( $zone eq "zone2" ) { + IOWrite($hash, sprintf "%02dZS", $key); + } elsif ($zone eq "zone3") { + IOWrite($hash, sprintf "%02dZT", $key); + } elsif ($zone eq "hdZone") { + IOWrite($hash, sprintf "%02dZEA", $key); + } + } elsif ( $IOhash->{helper}{INPUTNAMES}->{$key}{name} eq $arg ) { + if ( $zone eq "zone2" ) { + IOWrite($hash, sprintf "%02dZS", $key); + } elsif ($zone eq "zone3") { + IOWrite($hash, sprintf "%02dZT", $key); + } elsif ($zone eq "hdZone") { + IOWrite($hash, sprintf "%02dZEA", $key); + } } } + return undef; #####VolumeStraight (-80.5 - 12) in dB ####according to http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV @@ -316,10 +332,11 @@ PIONEERAVRZONE_Parse($$) } elsif ($msg =~ m/^Z2F(\d\d)$/ ) { my $inputNr = $1; Log3 $hash,5,"PIONEERAVRZONE $name: ".dq($msg) ." interpreted as: Zone2 - Input is set to inputNr: $inputNr "; - if ( defined ( $IOhash->{helper}{INPUTNAMES}->{$inputNr}{aliasName}) ) { + + if ( $IOhash->{helper}{INPUTNAMES}->{$inputNr}{aliasName} ne "") { Log3 $hash,5,"PIONEERAVRZONE $name: Zone2 - Input aliasName for input $inputNr is " . $IOhash->{helper}{INPUTNAMES}{$inputNr}{aliasName}; readingsBulkUpdate($hash, "input", $IOhash->{helper}{INPUTNAMES}->{$inputNr}{aliasName} ); - } elsif ( defined ( $IOhash->{helper}{INPUTNAMES}->{$inputNr}{name}) ) { + } elsif ( $IOhash->{helper}{INPUTNAMES}->{$inputNr}{name} ne "" ) { Log3 $hash,5,"PIONEERAVRZONE $name: Zone2 - Input Name for input $inputNr is " . $IOhash->{helper}{INPUTNAMES}{$inputNr}{name}; readingsBulkUpdate($hash, "input", $IOhash->{helper}{INPUTNAMES}->{$inputNr}{name} ); } else {