Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie ein XML Kommando an einen Yamaha Musiccast Receiver senden?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Wie ein XML Kommando an einen Yamaha Musiccast Receiver senden?

    Guten Morgen,
    kann mir jemand das unten angehängte cURL Kommando in ein eibPC Code wandeln, oder mich mit der Nase auf ein Codebeispiel stupsen, um XML Kommandos per eibPC zu generieren?

    Code:
    curl -v -X POST -d '<YAMAHA_AV cmd="PUT"><System><Party_Mode><Mode>On</Mode></Party_Mode></System></YAMAHA_AV>' \
    http://xxx.xxx.xxx.xxx:80/YamahaRemoteControl/ctrl
    Ich möchte die Party Funktion an meinem Yamaha Receiver über den eibPC steuern. Für die Standard Befehle laut Yamaha API habe ich bereits Codebeispiele für den eibPC. Nicht aber, wenn ich den XML code senden will.

    Danke Vorab.
    Zuletzt geändert von knxTest; 09.12.2017, 08:49.

    #2
    Das kennst Du https://knx-user-forum.de/forum/supp...ht-wie-gewollt ?
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Erstmal Danke und als Rückmeldung:
      Ich hatte den Bericht mal überflogen und kannte die darin beschriebenen Links. Ich hab mir nunmal alles nochmal zu Gemüte geführt. Bin noch skeptisch ob mich das zur Lösung führt. Ich werde die Tage mit Trail und Error und meinem Freund Wireshark mal weiter testen und berichten.

      Zuletzt geändert von knxTest; 10.12.2017, 09:23.

      Kommentar


        #4
        Soweit ich das erkenne, arbeitet das Makro auch nur mit GET und nicht mit POST.

        Gibt es beim eibPC eine Möglichkeit die xml Daten mit POST zu senden?
        Hat schon jemand xml Daten gesendet?

        Kommentar


          #5
          Hallo Energetus, Kannst Du zum POST bitte noch Stellung nehmen?
          (Der Party Mode beim Yamaha Verstärker ist noch was mir zu meinem Glück fehlt...)

          Kommentar


            #6
            So auch hier habe ich einen Workaround gefunden, der erst einmal funktioniert.

            Ich weis zwar nicht genau, was ich hier mache mangels detaillierter HTTP Kenntnisse aber ich poste trotzdem mal den Code. den ich von energetus als Beispiel bekommen habe und für meine Zwecke abgeändert habe.

            Ich habe einfach den String, den cURL sendet, aus Wireshark kopiert...

            xxx.xxx.xxx.xxx ist die IP vom Yamaha Verstärker

            Was ich soweit verstanden habe, muss mann bei POST einen Header senden. Wie dieser aussehen muss und was er im einzelnen bewirkt, weis ich nicht, kann aber unter selfHTML nachgelesen werden (wenn mann es dann im Detail versteht...).

            Code:
            YamahaRXV779_Port = 80u16
            YamahaRXV779_IP=xxx.xxx.xxx.xxx
            
            MultimediaPartyVar=AUS
            
            Yamaha779party = $POST /YamahaRemoteControl/ctrl HTTP/1.1$ + CRLF + $Host: xxx.xxx.xxx.xxx$ + CRLF + $User-Agent: curl/7.43.0$ + CRLF + $Accept: */*$ + CRLF + $Content-Length: 90$ + CRLF + $Content-Type: application/x-www-form-urlencoded$ + CRLF + CRLF + $<YAMAHA_AV cmd="PUT"><System><Party_Mode><Mode>On</Mode></Party_Mode></System></YAMAHA_AV>$
            
            if pbutton(PartyModeID, MultimediaPageID)==1 then MultimediaPartyVar=EIN endif
            if (MultimediaPartyVar) then connecttcp(YamahaRXV779_Port,YamahaRXV779_IP) endif
            if (after (MultimediaPartyVar,1000u64)) then {
            sendtcparray (YamahaRXV779_Port,YamahaRXV779_IP, Yamaha779party, size(Yamaha779party) );
            closetcp(YamahaRXV779_Port,YamahaRXV779_IP);
            MultimediaPartyVar = AUS;
            }endif
            Abschließend Danke!

            Kommentar


              #7
              Die Ausgabe des Pfads zu nconf sieht man wenn man einen nicht-String debuggt. Hier ein Auszug mit OSX:
              Code:
              % Wert von Objekt 1466 (YamahaRXV779_IP) abfragen:
              % /Users/michi/Haus/EibstudioData/nconf.bin -q 1466 192.168.21.50
              % Wert von Objekt 1466: c0 a8 16 0b {2017-12-16 19:16:03}
              % Typ: positive Ganzzahl
              % Wert: 3232241163
              %
              Unter OSX kopiert EibStudio seine Tmp-Dateien in das Hauptverzeichnis der Projektdatei, also bei mir /Users/michi/Haus/EibstudioData
              Dein String schaut dann bei mir wie folgt aus:
              Code:
              Wert von Objekt 1488: 50 4f 53 54 20 2f 59 61 6d 61 68 61 52 65 6d 6f 74 65 43 6f 6e 74 72 6f 6c 2f 63 74 72 6c 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 31 39 32 2e 31 36 38 2e 32 32 2e 31 31 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c 2f 37 2e 34 33 2e 30 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 39 30 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 0d 0a 0d 0a 3c 59 41 4d 41 48 41 5f 41 56 20 63 6d 64 3d 22 50 55 54 22 3e 3c 53 79 73 74 65 6d 3e 3c 50 61 72 74 79 5f 4d 6f 64 65 3e 3c 4d 6f 64 65 3e 4f 6e 3c 2f 4d 6f 64 65 3e 3c 2f 50 61 72 74 79 5f 4d 6f 64 65 3e 3c 2f 53 79 73 74 65 6d 3e 3c 2f 59 41 4d 41 48 41 5f 41 56 3e 00 00 00 00 00 00
              Ich denke, es fehlt ganz am Ende noch ein CRLF, was Du auch nicht gecodet hattest
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Danke, Wie heist die Datei, in der ich den oben gezeigten Hex String finde?
                in der "nconf.out" steht bei mir nur "Uebertragung Ok". Dann stehen da noch eine Reihe von .txt dateien, aber in keiner finde ich oben von Dir gezeigtes.

                Kommentar


                  #9
                  Du musst ein Terminal aufmachen und dann dort den Befehl
                  Code:
                   /Users/YYYY/EibstudioData/nconf.bin -q  XXXX 192.168.21.50
                  eingeben, wobei YYYY dein Username bzw. Pfad zu Deiner epc-Datei und XXXX die ObjektID darstellt, die IP Adresse muss dann natürlich auch Dein EibPC sein.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    Danke! hat funktioniert. Guter Hinweis zum debuggen.
                    Jedoch bekomme ich die Fehlermeldung, dass nconf.out nicht geschrieben werden konnte.

                    Mit " ./nconf.bin -q 1926 xxx.xxx.xxx.xxx ", wenn ich mich im Verzeichnis von nconf.bin befinde kann ich die Abfrage starten. Dann ohne Fehlermeldung. In der Datei nconf.out steht aber nur "Uebertragung Ok " Ich dachte, darin sollte sich auch der Wert der Variablen befinden...

                    Kommentar

                    Lädt...
                    X