Verstärker Pioneer VSX-920 per Lan steuern

Ja, das ist leider ein bißchen doof, aber hier ist es auch so, dass die App nicht mehr zugreifen kann, wenn der ClientSocket verbunden ist. :frowning:

Schade! Gibt es denn schon Lösungsansätze wie man diesen Konflikt Netzwerkteschnisch beheben kann?

Ich meine über eine Universa-FB oder über IRTrans könnte man es ja so bewerkstelligen. Aber Netzwerkseitig wäre natürlich genial. Liegt aber wahrscheinlich am RS232-Protokoll, oder?

Ich werde demnächst mal versuchen, es so zu bauen, dass der ClientSocket nur geöffnet wird, wenn er auch wirklich gebraucht wird.

Wollte mich auch nur mal schnell für das feine Script bedanken. Es klappt wunderbar mit meniem Pioneer SC-LX83 AVR. Werde sicherlich noch das ein oder andere anpassen müssen, aber die zur Verfügung stehenden Funktionen klappen alles wunderbar.

Wenn es noch jemand hinbekommt das der Socket nur bei Bedarf geöffnet werden würde, wäre dies sicherlich noch von Vorteil.

Beste Grüße

Marko

Ne bessere Idee ausser einen einfachen Schalter in IPS fällt mir nicht ein. Woher soll man erkennen können das man nun Gerade über die App steuern will?

Alles andere ist galueb ich blödsinn wie:
Wenn man schaut ob der Verstärker über die IP ansprechbar ist und die IP des iPhones ebenfalls im Netz aktiv dann will man wohl über die App steuern.

Es kann aber sein das man einfach nur emails von iPhone lesen will :wink: Nee so wird das nichts.

Hallo zusammen,

als Erstes dickes Lob und Danke für die gemachte Arbeit. Ich teste das Ganze derzeit mit einem VSX-922.
Habe auch das Problem, solange die App aktiv ist, kann der Socket nicht geöffnet werden.

Hat aber jemand für die Prüfung Ein/Aus eine andere Lösung? Wenn man für die App die Netzeinstellungen so ändert,
dass das Gerät auch im Stand-By per LAN ansprechbar ist, bekommt das Script ein positives Ping und denkt so, der
Receiver ist angeschalten.

Komisch auch, dass Marantz z.b. die Codes sauber dokumentiert und bei Pioneer hier nix zu finden ist.

Gruss Thomas

So, nachdem hier mehr mals danach gefragt wurde und ich auch an einer Lösung interessiert war, hatte ich mich an den IPS-Support gewandt. Innerhalb von 2 Minuten bekam ich die Lösung auf dem Serviertablett presentiert, die ich gerne hier teile. Nochmals danke an den Support:


include(IPS_GetScriptFile(44358);// ID des Scripts "PioneerAVR"
sendCommand("PO"); //  Zone 1 ein

Anhängend habe ich auch noch eine Doku. Hier werden ein paar mehr Befehle für höhere Modelle aufgeführt. Ich habe den VSX 2020 und der Befehl HDMI-Through, sonst nur über 5 Tasten-Kombis erreichbar ist mit der direkten Ansteuerung schon ziemlich praktisch.


sendCommand("00HA"); // HDMI AMP
sendCommand("01HA"); // HDMI Through

Pioneer AVR 2011 (Command SERIAL and ETHERNET).pdf (483 KB)

Hi,
danke für den Befehl
da fehlt nur eine Klammer
so passt es.


include(IPS_GetScriptFile(44358));// ID des Scripts "PioneerAVR"
sendCommand("PO"); //  Zone 1 ein

aber trotzdem bekomme ich eine Fehlermeldung.

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\21041.ips.php on line 390
[0] in function include in C:\IP-Symcon\scripts\33616.ips.php on line 2

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\21041.ips.php on line 391
[0] in function include in C:\IP-Symcon\scripts\33616.ips.php on line 2

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\21041.ips.php on line 393
[0] in function include in C:\IP-Symcon\scripts\33616.ips.php on line 2

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\21041.ips.php on line 401
[0] in function include in C:\IP-Symcon\scripts\33616.ips.php on line 2

Warning: CSCK_SendText: Instance #59270 does not implement this function! in C:\IP-Symcon\scripts\21041.ips.php on line 328
[0] in function CSCK_SendText in C:\IP-Symcon\scripts\21041.ips.php on line 328
[1] in function sendCommand in C:\IP-Symcon\scripts\33616.ips.php on line 3

Hallo und frohe Weihnachtsfeiertage.

Da ich mir zu Weinnachten einen VSX-922 geschenkt hab musste nun auch die IPS Integration her.

Für mich war das leider ein KO Kriterium wenn der Socket die APP blockiert und von daher hab ich mit was anderes gebastelt.

Im Original ist der Code vom DENON Skript von ANTI aus diesem Thread http://www.ip-symcon.de/forum/threads/4410-Denon-per-Telnet

Das Script nutzt Telnet um Befehle abzusetzen und die Rückantwort zu empfangen. Interessanterweise stört dies in keiner Weise die APP und funktioniert sogar paralell.

Dafür nimmt man halt in Kauf das IPS keine Statusänderungen des Receivers in Echtzeit empfängt sondern diese Regelmäßig abfragen muss.

Nun aber mal zu den Scripten:

PioCommands (Sendet und Empfängt / Hier sind die SteuerCodes Implementiert / Kann per Include eingebunden werden)

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
*/

$cfgDenonIp = "192.168.1.220";
$cfgPort    = 23;                //port, 22 if SSH
$cfgTimeOut = 2;

function sendCommand ($command) {
   global  $cfgDenonIp, $cfgPort, $cfgTimeOut;
   $usenet = fsockopen($cfgDenonIp, $cfgPort, $errno, $errstr, $cfgTimeOut);
   //echo "fsockopen($cfgDenonIp, $cfgPort, $errno, $errstr, $cfgTimeOut);";
   if(!$usenet){
       echo "Connection failed
";
       return(false);
   }else{
        //echo "Connected
";
        fputs ($usenet, "$command
");
        //echo "Send: $command
";
        stream_set_timeout($usenet, 0, 250000);
        $ret = "";
         do {
            $ret.=fread($usenet, 80);    // read line by line, or at least small chunks
            $stat=socket_get_status($usenet);
         } while($stat["unread_bytes"]);

        $ret = str_replace("\r", '', $ret);
        $ret = str_replace("
", "", $ret);
        //echo "Returns: $ret
";
        fclose ($usenet);
        return ($ret);
   }
}


function MainMuteOn () {
   // db umrechnen in das was er haben will
   sendCommand ("MO");
}

function MainMuteOff () {
   // db umrechnen in das was er haben will
	sendCommand ("MF");
}

function MainMuteGet () {
   $val = sendCommand ("?M");
   return ($val);
}


function MainPowerON () {
   // db umrechnen in das was er haben will
   sendCommand ("PO");
}

function MainPowerOFF () {
   // db umrechnen in das was er haben will
   sendCommand ("PF");
}

function MainPowGet () {
   $val = sendCommand ("?P");
   return ($val);
}

function MainVolumeUP ( $count ) {
   // db umrechnen in das was er haben will
	for($i=0; $i <= $count; $i++) {
	  	sendCommand ("VU");
		IPS_Sleep(100);
	}
}

function MainVolumeDOWN ( $count ) {
   // db umrechnen in das was er haben will
	for($i=0; $i <= $count; $i++) {
	  	sendCommand ("VD");
		IPS_Sleep(100);
	}
}

function MainVolumeGet () {
   $val = sendCommand ("?V");
	$val = substr("$val", 3);
	$val = (int)$val;
   // umrechnung des wertes in dB quelle: pioneer javascript
   //echo (($val-161)*0.5)."dB";
   return ($val);
}

function Zone2PowerON () {
   // db umrechnen in das was er haben will
   sendCommand ("APO");
}

function Zone2PowerOFF () {
   // db umrechnen in das was er haben will
   sendCommand ("APF");
}

function Zone2PowGet () {
   $val = sendCommand ("?AP");
   return ($val);
}

function Zone2MuteOn () {
   // db umrechnen in das was er haben will
  sendCommand ("Z2MO");
}

function Zone2MuteOff () {
   // db umrechnen in das was er haben will
   sendCommand ("Z2MF");
}

function Zone2MuteGet () {
   $val = sendCommand ("?Z2M");
   return ($val);
}

function Zone2VolumeUP ( $count ) {
   // db umrechnen in das was er haben will
	for($i=0; $i <= $count; $i++) {
	  	sendCommand ("ZU");
		IPS_Sleep(100);
	}
}

function Zone2VolumeDOWN ( $count ) {
   // db umrechnen in das was er haben will
	for($i=0; $i <= $count; $i++) {
	  	sendCommand ("ZD");
		IPS_Sleep(100);
	}
}

function Zone2VolumeGet () {
   $val = sendCommand ("?ZV");
	$val = substr("$val", 2);
	$val = (int)$val;
   // umrechnung des wertes in dB quelle: pioneer javascript
   //echo (($val-161)*0.5)."dB";
	return ($val);
}


?>

Beispiel um die Lautstärke der Zone 2 um 4*0,5db zu erhöhen:

<?

include(IPS_GetScriptFile(25521 /*[Allgemein\Funktionen\PioneerVSX922\PioCommands]*/ ));// ID des Scripts "PioCommands"
Zone2VolumeUP(4);

?>

Statusabfrage des Receivers mit Speichern der Infos in IPS Variablen läuft bei mir alle 1 Minute
Die Variablen müssen natürlich angelegt und die ID´s angepasst sein.

<?

include(IPS_GetScriptFile(25521 /*[Allgemein\Funktionen\PioneerVSX922\PioCommands]*/ ));// ID des Scripts "PioCommands"

// Power Stati holen
$state = MainPowGet();
if ( $state == "PWR0" ) {
	SetValue(47456 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\MainPower]*/ ,true);
}
if ( $state == "PWR1" ) {
	SetValue(47456 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\MainPower]*/ ,false);
}

IPS_SLEEP(100);
$state = Zone2PowGet();
if ( $state == "APR0" ) {
	SetValue(22959 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\Zone2Power]*/ ,true);
}
if ( $state == "APR1" ) {
	SetValue(22959 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\Zone2Power]*/  ,false);
}

IPS_SLEEP(100);
$state = MainMuteGet();
if ( $state == "MUT0" ) {
	SetValue(31672 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\MainMute]*/  ,true);
}
if ( $state == "MUT1" ) {
	SetValue(31672 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\MainMute]*/   ,false);
}
IPS_SLEEP(100);

$state = Zone2MuteGet();
if ( $state == "Z2MUT0" ) {
	SetValue(52746 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\Zone2Mute]*/ ,true);
}
if ( $state == "Z2MUT1" ) {
	SetValue(52746 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\Zone2Mute]*/   ,false);
}

IPS_SLEEP(100);
$value = MainVolumeGet();
SetValue(28319 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\MainVolume]*/ ,$value);
IPS_SLEEP(100);
$value = Zone2VolumeGet();
SetValue(22398 /*[Allgemein\Funktionen\PioneerVSX922\StatusVariablen\Zone2Volume]*/ ,$value);

?>

Das ganze kann beliebig um weitere Steuercodes und Abfragen erweitert werden.

Viel Spaß

Gruß Martin

Hallo,

ich möchte an dieser Stelle mal auf diesen Thread hinweisen:

http://www.ip-symcon.de/forum/threads/20921-Datenbl�tter-Ethernet-Protokoll-AV-Reciever?p=189575#post189575

Wäre schön wenn wir da eine nette Sammlung aller bis jetzt eingebundenen Reciever hinkriegen. :slight_smile:

Gruß soundman33

Hallo, danke für deine Tolle Arbeit, nun kann ich ohne viel Mühe meinen VSX-1122 steuern. Jedoch habe ich noch ein Problem mit der Lautstärke, denn die Spricht nur bis -30db an, evtl kannst du mir ja verraten, wie ich ändern kann, was das Script für Werte sendet, denn die VOL Werte sind bei mir verschieden. Dann habe ich bei mir die Möglichkeit statt per Ping auch per „?p“ zu erfragen, ob der Verstärker an oder aus ist. Ist er an, lautet die Antwort PWR0, wenn nicht dann PWR1, ich habe leider nicht so viel Erfahrung mit PHP, könntest du mir da helfen? Evtl, hilft das auch den anderen, welchen die gleiche Möglichkeit gegeben ist.

Es gibt auch einen Einschaltbefehl, der nennt sich dann „PO“, welcher sich auch im Standby an ihn schicken lässt (wenn man die Option aktiviert hat)

So oder so ähnlich könnte eine Erweiterung bei PioneerAVR-script aussehen:


    if ($IPS_VARIABLE==ID_POWER)
    {
       // je nach zustand ausschalten. einschalten geht - wenn vom receiver erlaubt - auch über lan!
       if ($IPS_VALUE == true)
       {
           $ret = sendCommand("PO");              // einschaltbefehl
           SetValue(ID_POWER, $IPS_VALUE);        // varaible für power on setzen
           avOn();                                // variablen + schalter einblenden
		 }                                           
       else
        {
           $ret = sendCommand("PF");              // ausschaltbefehl
           SetValue(ID_POWER, $IPS_VALUE);        // varaible für power off setzen
           SetValue(ID_DISPLAY, "");              // bei aus das diplay löschen
           avOff();                               // variablen + schalter ausblenden
       }

    }

Getestet mit VSX923.
Voraussetzung: Network-Standbay = On

Und vielen Dank an den Initiator des Threads und alle, die bereits mitgearbeitet haben!!!

Ich hatte das Problem, dass der VSX 923 offensichtlich führende 0er bei der Laustärke benötigt:

Einstellungen am Frontend bis 100VL funktionierten, darunter nicht.
Telnet liefert auch bei 99VL einen Fehler, bei 099VL nicht

Lösung ist eine kleine Erweiterung in PioneerAVR:

    // lautstärke schalter
    if ($IPS_VARIABLE==ID_VOL)
    {
       //echo $IPS_VALUE."VL";
       if (GetValue(ID_VOL) != $IPS_VALUE )
       {
          // Werte von 0 bis 161(voll aufgedreht)
          // so muss auch das profil der volumen variablen angelegt sein.

            $ret = sendCommand([b]str_pad($IPS_VALUE, 3, "0", STR_PAD_LEFT)[/b]."VL");     // vol direkt setzen
           SetValue(ID_VOL, $IPS_VALUE);
       }
    }

Cheers!

Hallo - da muss ich mich kurz mal ganz anders einhaken:

Ich habe „nur“ einen 921er - kenne aber dieses Web-Control-Menü nun mal garnicht.

Vielleicht kann meiner es ja nicht - aber, hast du evtl. ein paar Details wie und wo (Port / URL) man(n) eben dieses erreichen kann ?

Mein Webinterface liefert (an Port 80) nur die „Download MCACC data“ Seite …

Ein PortScan bringt zwar noch ein paar Ports (1024, 8080, 10100) zutage, aber Vergleichbares finde ich bisher nicht.

Besten Dank vorab

LG Tom

Hallo harhof, danke deine Lösung funktioniert super. Übrigens kann man den zumindest meinen, ich weiß nicht wie es bei anderen Modellen ist die befehle an zwei verschiedene Ports senden. Ich sende ihn direkt an Port 23 und blockiere somit nicht die iPhone App und kann somit beide parallel nutzen.

Habe gerade noch beim Einbinden der Zone2 Lautstärke festgestellt, dass hier kein Eingriff notwendig ist, hier muss keine Null vorangestellt werden, hier kann also das Originalscript einfach angepasst werden.

Hallo Leute,

ich habe hier im Forum mal gesucht, welcher Receiver zum einen gut über IPS steuerbar ist, zum anderen welche meine räumlichen Gegebenheiten am Besten berücksichtigt. Hängen geblieben bin ich derzeit beim Modell VSX-923-K, bin mir aber unsicher ob es tatsächlich so funktioniert wie ich es mir wünsche.

  • Im Wohnbereich hätte ich gerne Subwoofer, Front Left/Right, Rear Left/Right
  • Im Küchenbereich abgesetzt Stereo Left/Right (Wiedergabe der gleichen Quelle wie im Wohnbereich, entspricht in etwa der Konfiguration B in der Bedienungsanleitung.
  • Zwei abgesetzte Lautsprecher auf der Terrasse als Zone 2 (ähnlich der Konfiguration E der Bedienungsanleitung)

Ist dieses so möglich??

Joachim

Gibt es zu diesem Zeitpunkt ein aktuelles installscript? wäre echt eine tolle Sache. Insbesondere die Integration der Internetradiostations.

MfG

ralo

Servus Joachim

Ich hab diesen Thread nicht gelesen, aber bzgl. IPS tauglickeit kann ich dir die aktuellen Jamaha Receiver ans Herz legen.

Ich hab mir zu Weihnachten einen RX775 geschenkt und bin von der Remote Steuerbarkeit schwer begeistert.
Die Teile kann man komplett fernsteuern - also inklusive dem kompletten Setup ghet alles Remote. Bis zum letzten BIT ist alles sauber dokumentiert.
Zusätzlich gibt sendet er auch noch jede Menge Auto-Response Meldungen sodaß man auch Änderungen am Setting mitkriegt wenn diese manuell oder über die FB geschaltet werden.

Hab mir da in den letzten Tagen viele schöne Scripte gebastelt.

gruß
bb

Hallo bb,

vielen Dank für Deine Antwort.

Was für mich wichtig ist, wäre die Lautsprecher-Anschlussmöglichkeiten wie oben beschrieben, was die Netzwerkfunktionalität angeht wäre das selbstverständlich sehr gut…

Leider ist es für mich aus der Bedienungsanleitung nicht so ersichtlich…

Joachim