Hallo zusammen,
nach vielen erfolglosen Versuchen wende ich mich nun hilfesuchend an Euch.
Das Plugin soll meinen Yamaha RX-V773 via TCP ansteuern. Ich habe mich am Sqeezebox Plugin orientiert, nur leider klappt es nicht.
Derzeit scheitere ich schon bei der GA Anmeldung. Solange "defined $msg{'value'}" mit dabei steht kommt das Script an dieser Stelle nicht weiter.
Nehme ich den "defined" raus, komme ich weiter und über die erste IF Abfrage. Allerdings bekomme ich dann keinen Wert mehr aus der $msg{'value'} für die weitere Verarbeitung. Außerdem reagiert das Plugin z.B. auch auf 1/1/9, obwohl diese nicht angemeldet wird.
Vielleicht sieht hier jemand den Fehler oder hat den entscheidenden Tipp für mich.
Besten dank und allen ein schönes Wochenende!
Basti
nach vielen erfolglosen Versuchen wende ich mich nun hilfesuchend an Euch.
Das Plugin soll meinen Yamaha RX-V773 via TCP ansteuern. Ich habe mich am Sqeezebox Plugin orientiert, nur leider klappt es nicht.
Derzeit scheitere ich schon bei der GA Anmeldung. Solange "defined $msg{'value'}" mit dabei steht kommt das Script an dieser Stelle nicht weiter.
Nehme ich den "defined" raus, komme ich weiter und über die erste IF Abfrage. Allerdings bekomme ich dann keinen Wert mehr aus der $msg{'value'} für die weitere Verarbeitung. Außerdem reagiert das Plugin z.B. auch auf 1/1/9, obwohl diese nicht angemeldet wird.
Vielleicht sieht hier jemand den Fehler oder hat den entscheidenden Tipp für mich.
Besten dank und allen ein schönes Wochenende!
Basti
Code:
# YAMAHA RX-V773 Steuerung über Wiregate use IO::Socket; ### Definitionen ################################################################################################################################ my %function=( ## YAMAHA Receiver # MAIN ZONE # GA Command 0 Command 1 Description #------------------------------------------------------------------------------------------------------------------------------- "MAINPWR"=> "1/1/1", #@MAIN:PWR=Standby @MAIN:PWR=On Main Power On/Off "MAINVOL"=> "1/1/2", #@MAIN:VOL=DOWN 2dB @MAIN:VOL=UP 2 dB Main Volume UP/DOWN "MAINMUTE"=> "1/1/3", #@MAIN:MUTE=Off @MAIN:MUTE=On Main Volume MUTE "MAINSRC"=> "1/1/4", #@MAIN:SRC=xxx @MAIN:SRC=xxx Main Source "MAINSLEEP"=> "1/1/5", #@MAIN:SLEEP=Off @MAIN:SLEEP=30 Main Power Sleep 30 Min # ZONE 2 # GA Command 0 Command 1 Description #------------------------------------------------------------------------------------------------------------------------------- "ZONE2PWR"=> "1/1/20", #@ZONE2:PWR=Standby @ZONE2:PWR=On ZONE2 Power On/Off "ZONE2VOL"=> "1/1/21", #@ZONE2:VOL=DOWN 2dB @ZONE2:VOL=UP 2 dB ZONE2 Volume UP/DOWN "ZONE2MUTE"=> "1/1/22", #@ZONE2:MUTE=Off @ZONE2:MUTE=On ZONE2 Volume MUTE "ZONE2SRC"=> "1/1/23", #@ZONE2:SRC=xxx @ZONE2:SRC=xxx ZONE2 Source "ZONE2SLEEP"=> "1/1/24" #@ZONE2:SLEEP=Off @ZONE2:SLEEP=30 ZONE2 Power Sleep 30 Min ); ################################################################################################################################# # Verbindungseinstellungen my $send_ip = '192.168.0.50'; # SendeIP my $send_port = '50000'; # Sendeport ### Ende Definitionen # Eigenen Aufruf-Zyklus setzen $plugin_info{$plugname.'_cycle'} = 0; # Anmeldung an den Gruppenadressen while (my($key,$ga) = each %function) { $plugin_subscribe{$function{$key}}{$plugname} = 1; } ################################################################################################################################# ### Verarbeitung # Main Power ON/OFF if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $function{MAINPWR} && defined $msg{'value'}) { if ($msg{'value'} eq "0") { my $command="@MAIN:PWR=Standby"; my $return_val = sendCommand($command); } if ($msg{'value'} eq "1") { my $command="@MAIN:PWR=On"; my $return_val = sendCommand($command); } } ################################################################################################################################# # Log return 0; sub sendCommand { my $cmd = $_[0]; my $sock = new IO::Socket::INET ( PeerAddr => $send_ip, PeerPort => $send_port, Proto => 'tcp', ); die "Error: $!\n" unless $sock; print $sock ($cmd."\n\r") ; plugin_log($plugname, $cmd); close($sock); }
Kommentar