+ Antworten
Seite 1 von 12 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 112
  1. #1
    Registriert seit
    Sep 2008
    Beiträge
    118

    Standard HowTo - Yamaha Verstärker per LAN/Netzwerk steuern

    Es ist geschaft - jetzt können auch Yamaha Geräte z. B. Verstärker per Lan gesteuert werden.

    Getestet mit einem Yamaha RX-V771 - laut Referenzdatei sind auch andere Geräte steuerbar z. B.

    RX-A3010 RX-A2010 RX-A1010 RX-A810 RX-A710
    RX-V3071 RX-V2071 RX-V1071 RX-V871 RX-V771 RX-V671
    Hier mein Beispiel:

    PHP-Code:
    <?

    $host 
    '192.168.20.100';      //IP des Gerätes anpassen!

    // 0 = Power OFF
    // 1 = Power ON
    // 2 = Main Zone Mute ON
    // 3 = Main Zone Mute Off
    // 4 = Main Zone Mute On/Off
    // 5 = Main Zone leiser (2 dB)
    // 6 = Main Zone lauter (2 dB)
    // 7 = Main Zone 55 dB setzten

    $i 5;

    switch (
    $i) {
         case 
    0:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>');
            break;
         case 
    1:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>');
            break;
         case 
    2:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone></YAMAHA_AV>');
            break;
        case 
    3:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>Off</Mute></Volume></Main_Zone></YAMAHA_AV>');
            break;
        case 
    4:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On/Off</Mute></Volume></Main_Zone></YAMAHA_AV>');
            break;
        case 
    5:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>Down 2 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>');
            break;
        case 
    6:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>Up 2 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>');
            break;
        case 
    7:
            
    $send send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>-550</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>');
            break;
    }


    echo 
    $send;  //Wenn Ok dann wird true (1) zurückgegeben



    function send_to_host($host$data){

        
    //echo $data;  //zum prüfen

        
    $command_lenght strlen($data);
        
        
    //echo $command_lenght;    //zum prüfen
        
        
    $head "";
        
    $head .= "POST /YamahaRemoteControl/ctrl HTTP/1.1\r\n";
        
    $head .= "Host: ".$host."\r\n";
        
    $head .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0\r\n";
        
    $head .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        
    $head .= "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        
    $head .= "Accept-Encoding: gzip, deflate\r\n";
        
    $head .= "Connection: keep-alive\r\n";
        
    $head .= "Content-Type: text/xml; charset=UTF-8\r\n";
        
    $head .= "Referer: http://".$host."/\r\n";
        
    $head .= "Content-Length: ".$command_lenght."\r\n";
        
    $head .= "Pragma: no-cache\r\n";
        
    $head .= "Cache-Control: no-cache\r\n\r\n";
        
    $head .= $data;
        
    //echo $head; //zum prüfen

        
    $fp fsockopen($host80) or die("Unable to open socket");
        
    fputs($fp$head);

       
    $buf fgets($fp,128);
        
    fclose($fp);
        
    //echo $buf;   //zum prüfen

        
    $return substr($buf,13,2);
             
        if (
    $return == "OK") {
            return 
    true;
            
    //return "OK";
        
    }
    }

    ?>
    Den Referenzdatei für die Befehle findet man hier: http://www.google.de/url?sa=t&rct=j&...xl8V69exhoTUSw

    Reiter: "Func tree for comp functions".

    Viel Spaß!
    HomeMatic im ganzen Haus:
    Zentrale, Lichter, Jalousien, Steckdosen, Schalter, Heizung, Gartenbewässerung, 17" Touchscreen in der Wand. PV-Anlagenüberwachung, Aquariumüberwachung und Steuerung, Alarmanlage und vieles vieles mehr...

  2. #2

    Hallo,

    Da ich auch plane mir einen Yamaha 3010 / 3020 zuzulegen (auch für multiroom), weißt du ob es möglich ist via iP-Symcon über nen knx taster eine zone ein / auszustellen. bzw, via visualisierung lautstärke und evtl. auch quelle zu ändern für die jeweilige zone?

    grüße,
    Matthias

  3. #3
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    Ich habe seit kurzem einen RX-A820 ... die Befehle aus dem Code erlauben einem ja "nur" das Absenden von Befehlen, gibt es auch eine Möglichkeit den Status auszulesen?
    Eine Weboberfläche gibt es ja ... !?

    Gruß
    Jens
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  4. #4
    Registriert seit
    Nov 2011
    Ort
    Potsdam
    Beiträge
    86

    Zitat Zitat von Tetrapack Beitrag anzeigen
    Ich habe seit kurzem einen RX-A820 ... die Befehle aus dem Code erlauben einem ja "nur" das Absenden von Befehlen, gibt es auch eine Möglichkeit den Status auszulesen?
    Eine Weboberfläche gibt es ja ... !?

    Gruß
    Jens
    Die Yamahas bestätigen jeden Befehl. Dies kannst du auswerten.

    Wenn du zum Beispiel folgendes sendest:
    Code:
    <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>-400</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>
    und alles läuft, kommt folgende Antwort
    Code:
    <YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Volume><Lvl></Lvl></Volume></Main_Zone></YAMAHA_AV>
    Wichtig sind dabei der RC (response code) Parameter und der bestätigte Parameterpfad.

    Oben genanntes Beispiel bezieht sich auf des Webinterface. Analog funktioniert es an der Konsole (Socket Verbindung).
    Dort ist aber das Format anders. Eine Bestätigung sieht so aus:
    Code:
    @MAIN:VOL=-40.0

  5. #5
    Registriert seit
    Nov 2011
    Ort
    Potsdam
    Beiträge
    86

    Zitat Zitat von lunetics Beitrag anzeigen
    Hallo,

    Da ich auch plane mir einen Yamaha 3010 / 3020 zuzulegen (auch für multiroom), weißt du ob es möglich ist via iP-Symcon über nen knx taster eine zone ein / auszustellen. bzw, via visualisierung lautstärke und evtl. auch quelle zu ändern für die jeweilige zone?

    grüße,
    Matthias
    Sehr gute Wahl. Ich habe mir die x020 Serie (unter Anderem auch den 3020 in Einzelteile zerlegt) auf der IFA angeschaut. Es juckt seitdem ja schon etwas in den Fingern. Ich habe einen gerade mal 2 Jahren alten 3067, aber wenn ich dafür noch einen guten Preis bekomme....Jemand interessiert? PN an mich.

    Zur eigentliche Frage: Man kann jegliche Funktion steuern und seit dem die Yammis nen LAN Interface haben, ist das auch sehr komfortabel zu machen.

    Um z.B. die Zone 2 zu aktivieren und diese auf NetRadio zu setzen, musst du lediglich das folgende Kommando absetzen.
    Code:
    <YAMAHA_AV cmd="PUT"><Zone_2><Power_Control><Power>On</Power></Power_Control></Zone_2></YAMAHA_AV>
    Code:
    <YAMAHA_AV cmd="PUT"><Zone_2><Input><Input_Sel>NET RADIO</Input_Sel></Input></Zone_2></YAMAHA_AV>
    Nutzt du zufällig IPS-Library mit IPS-Entertainment?

  6. #6
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    Zitat Zitat von domizei385 Beitrag anzeigen
    Die Yamahas bestätigen jeden Befehl. Dies kannst du auswerten.

    Wenn du zum Beispiel folgendes sendest:
    Code:
    <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>-400</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>
    und alles läuft, kommt folgende Antwort
    Code:
    <YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Volume><Lvl></Lvl></Volume></Main_Zone></YAMAHA_AV>
    Wichtig sind dabei der RC (response code) Parameter und der bestätigte Parameterpfad.

    Oben genanntes Beispiel bezieht sich auf des Webinterface. Analog funktioniert es an der Konsole (Socket Verbindung).
    Dort ist aber das Format anders. Eine Bestätigung sieht so aus:
    Code:
    @MAIN:VOL=-40.0


    Das stimmt aber doch so nicht ganz ... denn wenn der Befehl in Ordnung ist, dann kommt über die Funktion nur eine "1" (TRUE) als Antwort zurück zurück (steht auch so im Script).

    Die Verbindung über Socket funktioniert, das nutze ich auch schon testweise seit ein paar Tagem, aber leider verliert IPS immer mal wieder die Socketverbindung für ein paar Sekunden, so das nicht immer gewähleistet ist das die Infos auch ankommen!?
    Ich würde auch gern bei der Socketverbindung bleiben, weil dann auch die Fernbedienungssignale an kommen und ausgewertet werden ... Voraussetzung wäre aber die stabile Verbindung.

    Im Webinterface kommen Änderungen ja auch an ... gibt es eine Möglichkeit diese auch abzufangen ??

    Gruß
    Jens
    Geändert von Tetrapack (11.09.12 um 14:04 Uhr)
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  7. #7
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    @domizei385: Kannst du mal Schrittweise erklären wie du das Webinterface abfragst und an die Bestätigung kommst?
    Bei mir kommt lediglich ein "OK" zurück !?


    Gruß
    Jens
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  8. #8
    Registriert seit
    Nov 2011
    Ort
    Potsdam
    Beiträge
    86

    Zitat Zitat von Tetrapack Beitrag anzeigen
    @domizei385: Kannst du mal Schrittweise erklären wie du das Webinterface abfragst und an die Bestätigung kommst?
    Bei mir kommt lediglich ein "OK" zurück !?


    Gruß
    Jens
    Passe mal den Code aus dem ersten Post an indem du - etwa so hier - die Antwort auswertest:
    Code:
    $result= ''; 
    while(!feof($fp)) {
        // receive the results of the request
        $result.= fgets($fp, 128);
    }
    Ich hab jetzt gerade nicht die Zeit das überprüfen, aber ich glaube der "interessante" Teil der Response kommt erst später.

    Und dann so hier den Response header vom content splitten:
    Code:
    $result = explode("\r\n\r\n", $result, 2);
    $header = isset($result[0]) ? $result[0] : '';
    $content = isset($result[1]) ? $result[1] : '';
    Geändert von domizei385 (17.09.12 um 22:45 Uhr)

  9. #9
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    Hmmm ... also da passiert nicht viel. Die Antwort in $result ist z.b. bei Lautstärkeänderung:

    HTTP/1.1 200 OK
    Server: AV_Receiver/3.1 (RX-A820)
    Content-Type: text/xml; charset="utf-8"
    Content-Length: 91
    Ich gehe davon aus, das evtl. etwas im Content steht, aber wie da ran kommen ?
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  10. #10
    Registriert seit
    Nov 2011
    Ort
    Potsdam
    Beiträge
    86

    Zitat Zitat von Tetrapack Beitrag anzeigen
    Hmmm ... also da passiert nicht viel. Die Antwort in $result ist z.b. bei Lautstärkeänderung:

    Ich gehe davon aus, das evtl. etwas im Content steht, aber wie da ran kommen ?
    Hast du dir mal den Inhalt von "$content" ausgeben lassen?

Ähnliche Themen

  1. Verstärker Pioneer VSX-920 per Lan steuern
    Von mäc im Forum Skripte, PHP, SQL
    Antworten: 167
    Letzter Beitrag: 02.12.17, 04:43
  2. Yamaha RX-V771 per LAN steuern (SOAP?)
    Von ASICS im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 6
    Letzter Beitrag: 12.08.12, 16:57
  3. HDMI Matrix per RS-232 mit IPS steuern?
    Von Freak4x im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 1
    Letzter Beitrag: 31.12.11, 11:52
  4. Jalousieaktor per Funktaster steuern - nicht optimal
    Von renovierer im Forum HomeMatic
    Antworten: 2
    Letzter Beitrag: 26.09.11, 21:53
  5. Antworten: 10
    Letzter Beitrag: 28.02.09, 16:18