mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
70_ONKYO_AVR.pm,71_ONKYO_AVR_ZONE.pm: improved zone handling when using more than one receiver within the same Fhem instance
git-svn-id: https://svn.fhem.de/fhem/trunk@11509 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
7b1e5ed85e
commit
9c45cdb11b
@ -154,8 +154,8 @@ sub ONKYO_AVR_DevInit($) {
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $return;
|
my $return;
|
||||||
my $definedZones = 0;
|
my $definedZones = 0;
|
||||||
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
|
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
|
||||||
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
|
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
|
||||||
|
|
||||||
Log3 $name, 5, "ONKYO_AVR $name: called function ONKYO_AVR_DevInit()";
|
Log3 $name, 5, "ONKYO_AVR $name: called function ONKYO_AVR_DevInit()";
|
||||||
|
|
||||||
@ -221,8 +221,8 @@ sub ONKYO_AVR_Notify($$) {
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $devName = $dev->{NAME};
|
my $devName = $dev->{NAME};
|
||||||
my $definedZones = 0;
|
my $definedZones = 0;
|
||||||
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
|
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
|
||||||
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
|
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
|
||||||
|
|
||||||
return
|
return
|
||||||
if ( !$dev->{CHANGED} ); # Some previous notify deleted the array.
|
if ( !$dev->{CHANGED} ); # Some previous notify deleted the array.
|
||||||
@ -324,8 +324,8 @@ sub ONKYO_AVR_Read($) {
|
|||||||
my $state = ReadingsVal( $name, "power", "off" );
|
my $state = ReadingsVal( $name, "power", "off" );
|
||||||
my $zone = 0;
|
my $zone = 0;
|
||||||
my $definedZones = 0;
|
my $definedZones = 0;
|
||||||
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
|
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
|
||||||
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
|
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
|
||||||
|
|
||||||
# read from serial device
|
# read from serial device
|
||||||
my $buf = DevIo_SimpleRead($hash);
|
my $buf = DevIo_SimpleRead($hash);
|
||||||
|
@ -108,9 +108,9 @@ sub ONKYO_AVR_ZONE_Define($$$) {
|
|||||||
my $IOname = $IOhash->{NAME};
|
my $IOname = $IOhash->{NAME};
|
||||||
my $zone = @$a[2] || "2";
|
my $zone = @$a[2] || "2";
|
||||||
|
|
||||||
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$zone} ) ) {
|
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} ) ) {
|
||||||
return "Zone already defined in "
|
return "Zone already defined in "
|
||||||
. $modules{ONKYO_AVR_ZONE}{defptr}{$zone}{NAME};
|
. $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone}{NAME};
|
||||||
}
|
}
|
||||||
elsif ( !defined($IOhash) ) {
|
elsif ( !defined($IOhash) ) {
|
||||||
return "No matching I/O device found";
|
return "No matching I/O device found";
|
||||||
@ -126,7 +126,7 @@ sub ONKYO_AVR_ZONE_Define($$$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$hash->{INPUT} = "";
|
$hash->{INPUT} = "";
|
||||||
$modules{ONKYO_AVR_ZONE}{defptr}{$zone} = $hash;
|
$modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} = $hash;
|
||||||
|
|
||||||
# set default settings on first define
|
# set default settings on first define
|
||||||
if ($init_done) {
|
if ($init_done) {
|
||||||
@ -153,13 +153,15 @@ sub ONKYO_AVR_ZONE_Define($$$) {
|
|||||||
###################################
|
###################################
|
||||||
sub ONKYO_AVR_ZONE_Undefine($$) {
|
sub ONKYO_AVR_ZONE_Undefine($$) {
|
||||||
my ( $hash, $name ) = @_;
|
my ( $hash, $name ) = @_;
|
||||||
my $zone = $hash->{ZONE};
|
my $zone = $hash->{ZONE};
|
||||||
|
my $IOhash = $hash->{IODev};
|
||||||
|
my $IOname = $IOhash->{NAME};
|
||||||
|
|
||||||
Log3 $name, 5,
|
Log3 $name, 5,
|
||||||
"ONKYO_AVR_ZONE $name: called function ONKYO_AVR_ZONE_Undefine()";
|
"ONKYO_AVR_ZONE $name: called function ONKYO_AVR_ZONE_Undefine()";
|
||||||
|
|
||||||
delete $modules{ONKYO_AVR_ZONE}{defptr}{$zone}
|
delete $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone}
|
||||||
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$zone} ) );
|
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} ) );
|
||||||
|
|
||||||
# Disconnect from device
|
# Disconnect from device
|
||||||
DevIo_CloseDev($hash);
|
DevIo_CloseDev($hash);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user