PIONEERAVR: new readings for menus - new set <device> selectLine01-08 to select menu entries directly, format of network internals adapted
git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@8598 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# This module handles the communication with a Pioneer AV receiver and controls the main zone.
|
# This module handles the communication with a Pioneer AV receiver and controls the main zone. Tests are done with a Pioneer VSX923
|
||||||
|
|
||||||
# this is the module for the communication interface and to control the main zone -
|
# this is the module for the communication interface and to control the main zone -
|
||||||
# it opens the device (via rs232 or TCP), and its ReadFn is called after the global select reports, that data is available.
|
# it opens the device (via rs232 or TCP), and its ReadFn is called after the global select reports, that data is available.
|
||||||
@@ -143,6 +143,7 @@ PIONEERAVR_Define($$) {
|
|||||||
|
|
||||||
DevIo_CloseDev($hash);
|
DevIo_CloseDev($hash);
|
||||||
|
|
||||||
|
# $hash->{DeviceName} is needed for DevIo_OpenDev()
|
||||||
$hash->{Protocol}= $protocol;
|
$hash->{Protocol}= $protocol;
|
||||||
my $devicename= $a[3];
|
my $devicename= $a[3];
|
||||||
$hash->{DeviceName} = $devicename;
|
$hash->{DeviceName} = $devicename;
|
||||||
@@ -164,6 +165,9 @@ PIONEERAVR_Define($$) {
|
|||||||
readingsSingleUpdate( $hash, "presence", "present", 1 );
|
readingsSingleUpdate( $hash, "presence", "present", 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# $hash->{helper}{INPUTNAMES} lists the default input names and their inputNr as provided by Pioneer.
|
||||||
|
# This module tries to read those names and the alias names from the AVR receiver and tries to check if this input is enabled or disabled
|
||||||
|
# So this list is just a fall back if the module can't read the names ...
|
||||||
$hash->{helper}{INPUTNAMES} = {
|
$hash->{helper}{INPUTNAMES} = {
|
||||||
"00" => {"name" => "phono", "aliasName" => "", "enabled" => "1", "inpuLevelAdjust" => 1},
|
"00" => {"name" => "phono", "aliasName" => "", "enabled" => "1", "inpuLevelAdjust" => 1},
|
||||||
"01" => {"name" => "cd", "aliasName" => "", "enabled" => "1"},
|
"01" => {"name" => "cd", "aliasName" => "", "enabled" => "1"},
|
||||||
@@ -199,7 +203,7 @@ PIONEERAVR_Define($$) {
|
|||||||
"48" => {"name" => "mhl", "aliasName" => "", "enabled" => "1"},
|
"48" => {"name" => "mhl", "aliasName" => "", "enabled" => "1"},
|
||||||
"53" => {"name" => "spotify", "aliasName" => "", "enabled" => "1"}
|
"53" => {"name" => "spotify", "aliasName" => "", "enabled" => "1"}
|
||||||
};
|
};
|
||||||
# ----------------Human Readable command mapping table-----------------------
|
# ----------------Human Readable command mapping table for "set" commands-----------------------
|
||||||
$hash->{helper}{SETS} = {
|
$hash->{helper}{SETS} = {
|
||||||
'main' => {
|
'main' => {
|
||||||
'on' => 'PO',
|
'on' => 'PO',
|
||||||
@@ -246,6 +250,14 @@ PIONEERAVR_Define($$) {
|
|||||||
'stopNetwork' => '20NW',
|
'stopNetwork' => '20NW',
|
||||||
'repeatNetwork' => '34NW',
|
'repeatNetwork' => '34NW',
|
||||||
'shuffleNetwork' => '35NW',
|
'shuffleNetwork' => '35NW',
|
||||||
|
'selectLine01' => '01GFH',
|
||||||
|
'selectLine02' => '02GFH',
|
||||||
|
'selectLine03' => '03GFH',
|
||||||
|
'selectLine04' => '04GFH',
|
||||||
|
'selectLine05' => '05GFH',
|
||||||
|
'selectLine06' => '06GFH',
|
||||||
|
'selectLine07' => '07GFH',
|
||||||
|
'selectLine08' => '08GFH',
|
||||||
'playIpod' => '00IP',
|
'playIpod' => '00IP',
|
||||||
'pauseIpod' => '01IP',
|
'pauseIpod' => '01IP',
|
||||||
'stopIpod' => '02IP',
|
'stopIpod' => '02IP',
|
||||||
@@ -335,7 +347,7 @@ PIONEERAVR_Define($$) {
|
|||||||
'inputDown' => 'ZEB'
|
'inputDown' => 'ZEB'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
# ----------------Human Readable command mapping table-----------------------
|
# ----------------Human Readable command mapping table for "get" commands-----------------------
|
||||||
$hash->{helper}{GETS} = {
|
$hash->{helper}{GETS} = {
|
||||||
'main' => {
|
'main' => {
|
||||||
'bass' => '?BA',
|
'bass' => '?BA',
|
||||||
@@ -347,7 +359,7 @@ PIONEERAVR_Define($$) {
|
|||||||
'listeningMode' => '?S',
|
'listeningMode' => '?S',
|
||||||
'listeningModePlaying' => '?L',
|
'listeningModePlaying' => '?L',
|
||||||
'macAddress' => '?SVB',
|
'macAddress' => '?SVB',
|
||||||
'model' => '?RGD',
|
'avrModel' => '?RGD',
|
||||||
'mute' => '?M',
|
'mute' => '?M',
|
||||||
'networkPorts' => '?SUM',
|
'networkPorts' => '?SUM',
|
||||||
'networkSettings' => '?SUL',
|
'networkSettings' => '?SUL',
|
||||||
@@ -382,7 +394,7 @@ PIONEERAVR_Define($$) {
|
|||||||
'power' => '?ZEP'
|
'power' => '?ZEP'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
# ----------------Human Readable command mapping table-----------------------
|
# ----------------Human Readable command mapping table for the remote control-----------------------
|
||||||
$hash->{helper}{REMOTECONTROL} = {
|
$hash->{helper}{REMOTECONTROL} = {
|
||||||
"cursorUp" => "CUP",
|
"cursorUp" => "CUP",
|
||||||
"cursorDown" => "CDN",
|
"cursorDown" => "CDN",
|
||||||
@@ -396,7 +408,7 @@ PIONEERAVR_Define($$) {
|
|||||||
"videoParameter" => "VPA",
|
"videoParameter" => "VPA",
|
||||||
"homeMenu" => "HM"
|
"homeMenu" => "HM"
|
||||||
};
|
};
|
||||||
|
# Translation table for the possible speaker systems
|
||||||
$hash->{helper}{SPEAKERSYSTEMS} = {
|
$hash->{helper}{SPEAKERSYSTEMS} = {
|
||||||
"10"=>"9.1ch FH/FW",
|
"10"=>"9.1ch FH/FW",
|
||||||
"00"=>"Normal(SB/FH)",
|
"00"=>"Normal(SB/FH)",
|
||||||
@@ -416,10 +428,13 @@ PIONEERAVR_Define($$) {
|
|||||||
"20"=>"5.1ch C+Surr Bi-Amp"
|
"20"=>"5.1ch C+Surr Bi-Amp"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# In some Pioneer AVR models you can give tuner presets a name -> e.g. instead of "A1" it writes in the display "BBC1"
|
||||||
|
# This modules tries to read those tuner preset names and write them into this list
|
||||||
$hash->{helper}{TUNERCHANNELNAMES} = {
|
$hash->{helper}{TUNERCHANNELNAMES} = {
|
||||||
"A1"=>""
|
"A1"=>""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Translation table for all available ListeningModes - provided by Pioneer
|
||||||
$hash->{helper}{LISTENINGMODES} = {
|
$hash->{helper}{LISTENINGMODES} = {
|
||||||
"0001"=>"stereoCyclic",
|
"0001"=>"stereoCyclic",
|
||||||
"0010"=>"standard",
|
"0010"=>"standard",
|
||||||
@@ -539,6 +554,7 @@ PIONEERAVR_Define($$) {
|
|||||||
"0152"=>"optimumSurround"
|
"0152"=>"optimumSurround"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Translation table for all available playing ListeningModes - provided by Pioneer
|
||||||
$hash->{helper}{LISTENINGMODESPLAYING} = {
|
$hash->{helper}{LISTENINGMODESPLAYING} = {
|
||||||
"0101"=>"[)(]PLIIx MOVIE",
|
"0101"=>"[)(]PLIIx MOVIE",
|
||||||
"0102"=>"[)(]PLII MOVIE",
|
"0102"=>"[)(]PLII MOVIE",
|
||||||
@@ -674,6 +690,20 @@ PIONEERAVR_Define($$) {
|
|||||||
"0f01"=>"MULTI CH IN"
|
"0f01"=>"MULTI CH IN"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# for some inputs (e.g. internetRadio) the Pioneer AVR gives more information about the current program
|
||||||
|
# The information is displayed on a (to the Pioneer avr) connected screen
|
||||||
|
# This information is categorized - below are the categories ("dataTypes")
|
||||||
|
$hash->{helper}{SCREENTYPES} = {
|
||||||
|
"00"=>"Massage",
|
||||||
|
"01"=>"List",
|
||||||
|
"02"=>"Playing(Play)",
|
||||||
|
"03"=>"Playing(Pause)",
|
||||||
|
"04"=>"Playing(Fwd)",
|
||||||
|
"05"=>"Playing(Rev)",
|
||||||
|
"06"=>"Playing(Stop)",
|
||||||
|
"99"=>"Drawing invalid"
|
||||||
|
};
|
||||||
|
|
||||||
$hash->{helper}{LINEDATATYPES} = {
|
$hash->{helper}{LINEDATATYPES} = {
|
||||||
"00"=>"normal",
|
"00"=>"normal",
|
||||||
"01"=>"directory",
|
"01"=>"directory",
|
||||||
@@ -681,7 +711,7 @@ PIONEERAVR_Define($$) {
|
|||||||
"03"=>"photo",
|
"03"=>"photo",
|
||||||
"04"=>"video",
|
"04"=>"video",
|
||||||
"05"=>"nowPlaying",
|
"05"=>"nowPlaying",
|
||||||
"20"=>"currentTrack",
|
"20"=>"currentTitle",
|
||||||
"21"=>"currentArtist",
|
"21"=>"currentArtist",
|
||||||
"22"=>"currentAlbum",
|
"22"=>"currentAlbum",
|
||||||
"23"=>"time",
|
"23"=>"time",
|
||||||
@@ -695,12 +725,66 @@ PIONEERAVR_Define($$) {
|
|||||||
"31"=>"buffer",
|
"31"=>"buffer",
|
||||||
"33"=>"station"
|
"33"=>"station"
|
||||||
};
|
};
|
||||||
|
$hash->{helper}{SCREENTYPES} = {
|
||||||
|
"00"=>"Massage",
|
||||||
|
"01"=>"List",
|
||||||
|
"02"=>"Playing(Play)",
|
||||||
|
"03"=>"Playing(Pause)",
|
||||||
|
"04"=>"Playing(Fwd)",
|
||||||
|
"05"=>"Playing(Rev)",
|
||||||
|
"06"=>"Playing(Stop)",
|
||||||
|
"99"=>"Drawing invalid"
|
||||||
|
};
|
||||||
|
# indicates what the source of the screen information is
|
||||||
|
$hash->{helper}{SOURCEINFO} = {
|
||||||
|
"00"=>"Internet Radio",
|
||||||
|
"01"=>"MEDIA SERVER",
|
||||||
|
"02"=>"iPod",
|
||||||
|
"03"=>"USB",
|
||||||
|
"04"=>"(Reserved)",
|
||||||
|
"05"=>"(Reserved)",
|
||||||
|
"06"=>"(Reserved)",
|
||||||
|
"07"=>"PANDORA",
|
||||||
|
"10"=>"AirPlay",
|
||||||
|
"11"=>"Digital Media Renderer(DMR)",
|
||||||
|
"99"=>"(Indeterminate)"
|
||||||
|
};
|
||||||
|
|
||||||
|
$hash->{helper}{CLEARONINPUTCHANGE} = {
|
||||||
|
"00"=>"screenLine01",
|
||||||
|
"01"=>"screenLine02",
|
||||||
|
"02"=>"screenLine03",
|
||||||
|
"03"=>"screenLine04",
|
||||||
|
"04"=>"screenLine05",
|
||||||
|
"05"=>"screenLine06",
|
||||||
|
"06"=>"screenLine07",
|
||||||
|
"07"=>"screenLine08",
|
||||||
|
"09"=>"screenLineType01",
|
||||||
|
"10"=>"screenLineType02",
|
||||||
|
"11"=>"screenLineType03",
|
||||||
|
"12"=>"screenLineType04",
|
||||||
|
"13"=>"screenLineType05",
|
||||||
|
"14"=>"screenLineType06",
|
||||||
|
"15"=>"screenLineType07",
|
||||||
|
"16"=>"screenLineType08",
|
||||||
|
"17"=>"screenLineHasFocus",
|
||||||
|
"17"=>"screenLineNumbers",
|
||||||
|
"18"=>"screenType",
|
||||||
|
"19"=>"screenName",
|
||||||
|
"20"=>"screenHierarchy",
|
||||||
|
"21"=>"screenTopMenuKey",
|
||||||
|
"22"=>"screenIpodKey",
|
||||||
|
"23"=>"screenReturnKey"
|
||||||
|
};
|
||||||
|
|
||||||
### initialize timer
|
### initialize timer
|
||||||
$hash->{helper}{nextConnectionCheck} = gettimeofday()+120;
|
$hash->{helper}{nextConnectionCheck} = gettimeofday()+120;
|
||||||
|
|
||||||
#### statusRequest
|
#### statusRequest
|
||||||
#### Update Input alias names, available Inputs
|
# Update Input alias names, available and enabled Inputs
|
||||||
|
# This updates $hash->{helper}{INPUTNAMES}
|
||||||
PIONEERAVR_askForInputNames($hash,5);
|
PIONEERAVR_askForInputNames($hash,5);
|
||||||
|
|
||||||
#### we execute all 'get <name> XXX'
|
#### we execute all 'get <name> XXX'
|
||||||
PIONEERAVR_statusUpdate($hash);
|
PIONEERAVR_statusUpdate($hash);
|
||||||
|
|
||||||
@@ -795,7 +879,7 @@ PIONEERAVR_Set($@)
|
|||||||
my @setsPlayer= ("play","pause","stop","repeat","shuffle","prev","next","rev","fwd","up","down","right","left","enter","return","menu"); # available commands for certain inputs (@playerInputNr)
|
my @setsPlayer= ("play","pause","stop","repeat","shuffle","prev","next","rev","fwd","up","down","right","left","enter","return","menu"); # available commands for certain inputs (@playerInputNr)
|
||||||
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 @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 @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 @setsWithoutArg= ("off","toggle","volumeUp","volumeDown","muteOn","muteOff","muteToggle","inputUp","inputDown","selectLine01","selectLine02","selectLine03","selectLine04","selectLine05","selectLine06","selectLine07","selectLine08" ); # set commands without arguments
|
||||||
my $playerCmd= "";
|
my $playerCmd= "";
|
||||||
my $inputNr= "";
|
my $inputNr= "";
|
||||||
|
|
||||||
@@ -841,6 +925,7 @@ PIONEERAVR_Set($@)
|
|||||||
if ( $inputNr ~~ @playerInputNr ) {
|
if ( $inputNr ~~ @playerInputNr ) {
|
||||||
$list .= " play:noArg stop:noArg pause:noArg repeat:noArg shuffle:noArg prev:noArg next:noArg rev:noArg fwd:noArg up:noArg down:noArg";
|
$list .= " play:noArg stop:noArg pause:noArg repeat:noArg shuffle:noArg prev:noArg next:noArg rev:noArg fwd:noArg up:noArg down:noArg";
|
||||||
$list .= " right:noArg left:noArg enter:noArg return:noArg menu:noArg";
|
$list .= " right:noArg left:noArg enter:noArg return:noArg menu:noArg";
|
||||||
|
$list .= " selectLine01:noArg selectLine02:noArg selectLine03:noArg selectLine04:noArg selectLine05:noArg selectLine06:noArg selectLine07:noArg selectLine08:noArg";
|
||||||
}
|
}
|
||||||
if ( $cmd eq "?" ) {
|
if ( $cmd eq "?" ) {
|
||||||
return SetExtensions($hash, $list, $name, $cmd, @args);
|
return SetExtensions($hash, $list, $name, $cmd, @args);
|
||||||
@@ -1259,11 +1344,16 @@ sub PIONEERAVR_Read($)
|
|||||||
$hash->{helper}{main}{CURINPUTNR} = $inputNr;
|
$hash->{helper}{main}{CURINPUTNR} = $inputNr;
|
||||||
|
|
||||||
# if($inputNr != "17" and $inputNr != "44" and $inputNr != "45"){
|
# if($inputNr != "17" and $inputNr != "44" and $inputNr != "45"){
|
||||||
#readingsBeginUpdate($hash);
|
# clear screen information on input change...
|
||||||
foreach my $key ( keys %{$hash->{helper}{LINEDATATYPES}} ) {
|
foreach my $key ( keys %{$hash->{helper}{CLEARONINPUTCHANGE}} ) {
|
||||||
readingsBulkUpdate($hash, $hash->{helper}{LINEDATATYPES}->{$key} , "");
|
readingsBulkUpdate($hash, $hash->{helper}{CLEARONINPUTCHANGE}->{$key} , "");
|
||||||
|
Log3 $hash,5,"PIONEERAVR $name: Main Input change ... clear screen... reading:" . $hash->{helper}{CLEARONINPUTCHANGE}->{$key};
|
||||||
}
|
}
|
||||||
#readingsEndUpdate($hash, 1);
|
foreach my $key ( keys %{$hash->{helper}{CLEARONINPUTCHANGE}} ) {
|
||||||
|
readingsBulkUpdate($hash, $hash->{helper}{CLEARONINPUTCHANGE}->{$key} , "");
|
||||||
|
Log3 $hash,5,"PIONEERAVR $name: Main Input change ... clear screen... reading:" . $hash->{helper}{CLEARONINPUTCHANGE}->{$key};
|
||||||
|
}
|
||||||
|
|
||||||
# input names
|
# input names
|
||||||
# RGBXXY(14char)
|
# RGBXXY(14char)
|
||||||
# XX -> input number
|
# XX -> input number
|
||||||
@@ -1493,12 +1583,59 @@ sub PIONEERAVR_Read($)
|
|||||||
readingsBulkUpdate($hash, "display", $display );
|
readingsBulkUpdate($hash, "display", $display );
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: Display update to: $display";
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: Display update to: $display";
|
||||||
|
|
||||||
# displayInformation
|
# screen type and screen name
|
||||||
|
} elsif ( $line =~ m/^(GCH|GCI)(\d{2})(\d)(\d)(\d)(\d)(\d)\"(.*)\"$/ ) {
|
||||||
|
# Format:
|
||||||
|
# $2: screen type
|
||||||
|
# 00:Massage
|
||||||
|
# 01:List
|
||||||
|
# 02:Playing(Play)
|
||||||
|
# 03:Playing(Pause)
|
||||||
|
# 04:Playing(Fwd)
|
||||||
|
# 05:Playing(Rev)
|
||||||
|
# 06:Playing(Stop)
|
||||||
|
# 99:Drawing invalid
|
||||||
|
|
||||||
|
# $3: 0:Same hierarchy 1:Updated hierarchy (Next or Previous list)
|
||||||
|
# $4: Top menu key flag
|
||||||
|
# 0:Invalidity
|
||||||
|
# 1:Effectiveness
|
||||||
|
# $5: iPod Control Key Information
|
||||||
|
# 0:Invalidity
|
||||||
|
# 1:Effectiveness
|
||||||
|
# $6: Return Key Information
|
||||||
|
# 0:Invalidity
|
||||||
|
# 1:Effectiveness
|
||||||
|
# $7: always 0
|
||||||
|
|
||||||
|
# $8: Screen name (UTF8) max. 128 byte
|
||||||
|
my $screenType = $hash->{helper}{SCREENTYPES}{$2};
|
||||||
|
|
||||||
|
readingsBulkUpdate($hash, "screenType", $screenType);
|
||||||
|
readingsBulkUpdate($hash, "screenName", $8);
|
||||||
|
readingsBulkUpdate($hash, "screenHierarchy", $3);
|
||||||
|
readingsBulkUpdate($hash, "screenTopMenuKey", $4);
|
||||||
|
readingsBulkUpdate($hash, "screenIpodKey", $5);
|
||||||
|
readingsBulkUpdate($hash, "screenReturnKey", $6);
|
||||||
|
|
||||||
|
# Source information
|
||||||
|
} elsif ( $line =~ m/^(GHH)(\d{2})$/ ) {
|
||||||
|
my $sourceInfo = $hash->{helper}{SOURCEINFO}{$2};
|
||||||
|
readingsBulkUpdate($hash, "sourceInfo", $sourceInfo );
|
||||||
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: Screen source information: $2 $sourceInfo";
|
||||||
|
|
||||||
|
|
||||||
|
# Screen line numbers
|
||||||
|
} elsif ( $line =~ m/^(GBH|GBI)(\d{2})$/ ) {
|
||||||
|
readingsBulkUpdate($hash, "screenLineNumbers", $2+0 );
|
||||||
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: Screen line numbers = $2";
|
||||||
|
|
||||||
|
# screenInformation
|
||||||
} elsif ( $line =~ m/^(GEH|GEI)(\d{2})(\d)(\d{2})\"(.*)\"$/ ) {
|
} elsif ( $line =~ m/^(GEH|GEI)(\d{2})(\d)(\d{2})\"(.*)\"$/ ) {
|
||||||
# Format:
|
# Format:
|
||||||
# $1: Line number
|
# $2: Line number
|
||||||
# $2: Focus (yes(1)/no(0)/greyed out(9)
|
# $3: Focus (yes(1)/no(0)/greyed out(9)
|
||||||
# $3: Line data type:
|
# $4: Line data type:
|
||||||
# 00:Normal(no mark type)
|
# 00:Normal(no mark type)
|
||||||
# 01:Directory
|
# 01:Directory
|
||||||
# 02:Music
|
# 02:Music
|
||||||
@@ -1518,11 +1655,25 @@ sub PIONEERAVR_Read($)
|
|||||||
# 31:Buffer
|
# 31:Buffer
|
||||||
# 32:Channel
|
# 32:Channel
|
||||||
# 33:Station
|
# 33:Station
|
||||||
# $4: Display line information (UTF8)
|
# $5: Display line information (UTF8)
|
||||||
my $lineDataType = $hash->{helper}{LINEDATATYPES}{$4};
|
my $lineDataType = $hash->{helper}{LINEDATATYPES}{$4};
|
||||||
|
|
||||||
|
# screen lines
|
||||||
|
my $screenLine = "screenLine".$2;
|
||||||
|
my $screenLineType = "screenLineType".$2;
|
||||||
|
readingsBulkUpdate($hash, $screenLine, $5);
|
||||||
|
readingsBulkUpdate($hash, $screenLineType, $lineDataType);
|
||||||
|
if ($3 == 1) {
|
||||||
|
readingsBulkUpdate($hash, "screenLineHasFocus", $2);
|
||||||
|
}
|
||||||
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: screen line $2 ($screenLine) type: $lineDataType: " . dq($5);
|
||||||
|
|
||||||
|
# for being coherent with http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV
|
||||||
|
if ($4 ~~ ["20", "21", "22"]) {
|
||||||
readingsBulkUpdate($hash, $lineDataType, $5);
|
readingsBulkUpdate($hash, $lineDataType, $5);
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: displayDataType $lineDataType: " . dq($5);
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: displayDataType $lineDataType: " . dq($5);
|
||||||
|
}
|
||||||
|
|
||||||
# Tuner channel names
|
# Tuner channel names
|
||||||
} elsif ( $line =~ m/^TQ(\w\d)\"(.{8})\"$/ ) {
|
} elsif ( $line =~ m/^TQ(\w\d)\"(.{8})\"$/ ) {
|
||||||
$hash->{helper}{TUNERCHANNELNAMES}{$1} = $2;
|
$hash->{helper}{TUNERCHANNELNAMES}{$1} = $2;
|
||||||
@@ -1556,17 +1707,17 @@ sub PIONEERAVR_Read($)
|
|||||||
} else {
|
} else {
|
||||||
$hash->{dhcp}= "on";
|
$hash->{dhcp}= "on";
|
||||||
}
|
}
|
||||||
$hash->{ipAddress}= $2.".".$3.".".$4.".".$5;
|
$hash->{ipAddress}= sprintf("%d.%d.%d.%d",$2 ,$3 ,$4 ,$5);
|
||||||
$hash->{netmask}= $6.".".$7.".".$8.".".$9;
|
$hash->{netmask}= sprintf("%d.%d.%d.%d",$6,$7,$8,$9);
|
||||||
$hash->{defaultGateway}= $10.".".$11.".".$12.".".$13;
|
$hash->{defaultGateway}= sprintf("%d.%d.%d.%d",$10,$11,$12,$13);
|
||||||
$hash->{dns1}= $14.".".$15.".".$16.".".$17;
|
$hash->{dns1}= sprintf("%d.%d.%d.%d",$14,$15,$16,$17);
|
||||||
$hash->{dns2}= $18.".".$19.".".$20.".".$21;
|
$hash->{dns2}= sprintf("%d.%d.%d.%d",$18,$19,$20,$21);
|
||||||
if ($22 == 0) {
|
if ($22 == 0) {
|
||||||
$hash->{proxy}= "off";
|
$hash->{proxy}= "off";
|
||||||
} else {
|
} else {
|
||||||
$hash->{proxy}= "on";
|
$hash->{proxy}= "on";
|
||||||
$hash->{proxyName}= $23;
|
$hash->{proxyName}= $23;
|
||||||
$hash->{proxyPort}= $24;
|
$hash->{proxyPort}= 0+$24;
|
||||||
}
|
}
|
||||||
# network ports 1-4
|
# network ports 1-4
|
||||||
} elsif ( $line =~ m/^SUM(\d{5})(\d{5})(\d{5})(\d{5})$/ ) {
|
} elsif ( $line =~ m/^SUM(\d{5})(\d{5})(\d{5})(\d{5})$/ ) {
|
||||||
@@ -1574,28 +1725,28 @@ sub PIONEERAVR_Read($)
|
|||||||
if ( $1 == 99999) {
|
if ( $1 == 99999) {
|
||||||
$hash->{networkPort1}= "disabled";
|
$hash->{networkPort1}= "disabled";
|
||||||
} else {
|
} else {
|
||||||
$hash->{networkPort1}= $1;
|
$hash->{networkPort1}= 0+$1;
|
||||||
}
|
}
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort1 is " . $1;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort1 is " . $1;
|
||||||
# network port2
|
# network port2
|
||||||
if ( $2 == 99999) {
|
if ( $2 == 99999) {
|
||||||
$hash->{networkPort2}= "disabled";
|
$hash->{networkPort2}= "disabled";
|
||||||
} else {
|
} else {
|
||||||
$hash->{networkPort2}= $2;
|
$hash->{networkPort2}= 0+$2;
|
||||||
}
|
}
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort2 is " . $2;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort2 is " . $2;
|
||||||
# network port3
|
# network port3
|
||||||
if ( $3 == 99999) {
|
if ( $3 == 99999) {
|
||||||
$hash->{networkPort3}= "disabled";
|
$hash->{networkPort3}= "disabled";
|
||||||
} else {
|
} else {
|
||||||
$hash->{networkPort3}= $3;
|
$hash->{networkPort3}= 0+$3;
|
||||||
}
|
}
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort3 is " . $3;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort3 is " . $3;
|
||||||
# network port4
|
# network port4
|
||||||
if ( $4 == 99999) {
|
if ( $4 == 99999) {
|
||||||
$hash->{networkPort4}= "disabled";
|
$hash->{networkPort4}= "disabled";
|
||||||
} else {
|
} else {
|
||||||
$hash->{networkPort4}= $4;
|
$hash->{networkPort4}= 0+$4;
|
||||||
}
|
}
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort4 is " . $4;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort4 is " . $4;
|
||||||
|
|
||||||
@@ -1604,10 +1755,10 @@ sub PIONEERAVR_Read($)
|
|||||||
$hash->{macAddress}= $1.":".$2.":".$3.":".$4.":".$5.":".$6;
|
$hash->{macAddress}= $1.":".$2.":".$3.":".$4.":".$5.":".$6;
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort1 is " . $1;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: NetworkPort1 is " . $1;
|
||||||
|
|
||||||
# model
|
# avrModel
|
||||||
} elsif ( $line =~ m/^RGD<\d{3}><(.*)\/.*>$/ ) {
|
} elsif ( $line =~ m/^RGD<\d{3}><(.*)\/.*>$/ ) {
|
||||||
#$hash->{model}= $1;
|
$hash->{avrModel}= $1;
|
||||||
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: Model is " . $1;
|
Log3 $hash,5,"PIONEERAVR $name: ".dq($line) ." interpreted as: avrModel is " . $1;
|
||||||
|
|
||||||
# Software version
|
# Software version
|
||||||
} elsif ( $line =~ m/^SSI\"(.*)\"$/ ) {
|
} elsif ( $line =~ m/^SSI\"(.*)\"$/ ) {
|
||||||
@@ -2003,6 +2154,7 @@ RC_layout_PioneerAVR() {
|
|||||||
<li>enter<br>for the same inputs as play</li>
|
<li>enter<br>for the same inputs as play</li>
|
||||||
<li>return<br>for the same inputs as play</li>
|
<li>return<br>for the same inputs as play</li>
|
||||||
<li>menu<br>for the same inputs as play</li>
|
<li>menu<br>for the same inputs as play</li>
|
||||||
|
<li>selectLine01 - selectLine08<br>for the same inputs as play<br>if a "screen" is open (on the TV) (e.g. to browse the directory of the music collection) the line on the sreen can be selected directly</li>
|
||||||
<li>remoteControl <attr> where <attr> is one of:
|
<li>remoteControl <attr> where <attr> is one of:
|
||||||
<ul>
|
<ul>
|
||||||
<li>cursorDown</li>
|
<li>cursorDown</li>
|
||||||
@@ -2049,7 +2201,7 @@ RC_layout_PioneerAVR() {
|
|||||||
<li>listeningMode<br> </li>
|
<li>listeningMode<br> </li>
|
||||||
<li>listeningModePlaying<br> </li>
|
<li>listeningModePlaying<br> </li>
|
||||||
<li>macAddress<br> </li>
|
<li>macAddress<br> </li>
|
||||||
<li>model<br> </li>
|
<li>avrModel<br> </li>
|
||||||
<li>mute<br> </li>
|
<li>mute<br> </li>
|
||||||
<li>networkPorts<br> </li>
|
<li>networkPorts<br> </li>
|
||||||
<li>networkSettings<br> </li>
|
<li>networkSettings<br> </li>
|
||||||
@@ -2195,6 +2347,7 @@ RC_layout_PioneerAVR() {
|
|||||||
<li>enter<br>für die gleichen Eingangsquellen wie "play"</li>
|
<li>enter<br>für die gleichen Eingangsquellen wie "play"</li>
|
||||||
<li>return<br>für die gleichen Eingangsquellen wie "play"</li>
|
<li>return<br>für die gleichen Eingangsquellen wie "play"</li>
|
||||||
<li>menu<br>für die gleichen Eingangsquellen wie "play"</li>
|
<li>menu<br>für die gleichen Eingangsquellen wie "play"</li>
|
||||||
|
<li>selectLine01 - selectLine08<br>für die gleichen Eingangsquellen wie "play"<br>Wird am Bildschirm ein Pioneer-Menu angezeigt, kann hiermit die gewünschte zeile direkt angewählt werden</li>
|
||||||
<li>remoteControl <attr> wobei <attr> eines von folgenden sein kann:
|
<li>remoteControl <attr> wobei <attr> eines von folgenden sein kann:
|
||||||
<ul>
|
<ul>
|
||||||
<li>cursorDown</li>
|
<li>cursorDown</li>
|
||||||
@@ -2243,7 +2396,7 @@ RC_layout_PioneerAVR() {
|
|||||||
<li>listeningMode<br> </li>
|
<li>listeningMode<br> </li>
|
||||||
<li>listeningModePlaying<br> </li>
|
<li>listeningModePlaying<br> </li>
|
||||||
<li>macAddress<br> </li>
|
<li>macAddress<br> </li>
|
||||||
<li>model<br> </li>
|
<li>avrModel<br> </li>
|
||||||
<li>mute<br> </li>
|
<li>mute<br> </li>
|
||||||
<li>networkPorts<br> </li>
|
<li>networkPorts<br> </li>
|
||||||
<li>networkSettings<br> </li>
|
<li>networkSettings<br> </li>
|
||||||
|
|||||||
Reference in New Issue
Block a user