Ankündigung

Einklappen
Keine Ankündigung bisher.

Onkyo Reciever

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

    Onkyo Reciever

    Hier eine Anfrage, die ggf. auch andere interessiert.
    ich versuche meinen Receiver von onkyo über den eibPC anzusteuern. Für den Gira Homeserver gibt es im Forum schon eine Lösung. Das Protokoll, was dazu nötig ist, findest Du unter:
    IP-Telegramm für Onkyo

    Folgendes habe ich dazu im eibPC implementiert:
    //*****************************************
    // Onkyo
    //*****************************************
    onkyoIP = 192.168.178.39
    onkyoPort = 60128u16
    onkyoConnectStatus = 0u08
    onkyoCloseStatus = 0u08
    onkyoConnect = AUS
    protocolHeader = $ISCP$
    onkyoCommand = $!1SLI29$

    // TCP Connect
    if onkyoConnect then {
    onkyoCloseStatus = closetcp(onkyoPort,onkyoIP);
    onkyoConnectStatus = connecttcp(onkyoPort,onkyoIP);
    onkyoConnect = AUS;
    } endif

    // TCP Connection Watchdog
    if (after(onkyoConnectStatus > 1,1000u64) and onkyoConnectStatus > 1) or (cycle(00,15) and onkyoConnectStatus > 1) or htime(04,00,00) then {
    onkyoConnect = EIN
    } endif
    // sendtcp(onkyoPort,onkyoIP, 0x0d, 0x0a);
    // TCP Connection Keep alive
    if cycle(00,10) then {
    sendtcp(onkyoPort, 192.168.178.39, protocolHeader, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommand, 0x0D, 0x0A)
    } endif

    Habe Wireshark laufen, um zu sehen, was der eibPC sendet.
    In Wireshark sehe ich nicht, dass der eibPC etwas an die angegebene Adresse sendet. Man sieht in Wireshark nur eine Verbindung zwischen eibPC und Visu.
    Der eibPC baut ebenfalls eine Verbindung zu einer Fritzbox auf und kommuniziert mit dieser. Auch diese Daten sind in Wireshark für mich nicht sichtbar.
    Vielleicht kannst Du mir da weiterhelfen, was ich sowohl bei Wireshark als auch beim eibPC falsch mache. Wäre eine Supersache den Onkyo zu integrieren zumal das Protokoll so weit vorliegt.
    Der wireshark kann nur das sehen, was über den Rechner kommt, auf dem er läuft. Daher die http Verbindung, aber nicht das was der Player bekommt. Du müsstest den Pc zwischen den EibPC und dem Player setzen oder ggf. auf dem Router laufen lassen.
    Man kann aber davon ausgehen, dass die TCP Sache beim EibPC funktioniert, also würde ich erst mal schauen, ob das Protokoll richtig umgesetzt wurde.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    #2
    sendtcp schickt da bei Strings immer terminierende Null mit.
    Wenn man das
    Code:
    $cmd = "ISCP\x00\x00\x00\x10\x00\x00\x00\x07\x01\x00\x00\  x00!1PWR01\x0D";
    anscchaut, dann muesste man besser schreiben
    Code:
    sendtcp(onkyoPort, 192.168.178.39, protocolHeader,0x00, 0x00,  0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommand,  0x0D)
    Dass onkyoCommand vor dem 0xD noch eine Null einfügt, wäre zu vermeiden, wenn man gleich dem Kommando die 0xD mit stringset am Ende setzt.
    Ob's damit geht, kann ich hier nicht testen. Einfach wäre es auch, wenn jemand, der einen HS dazu nutzt, einen Wireshark "Mitschnitt" hier postet.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Entweder ist meine Spracherkennung defekt, oder deine Sprachausgabe

      Zum Problem: Sollte nicht auch ein Zeilenvorschub (0x0A) mit angefügt werden?
      BR
      Marc

      Kommentar


        #4
        Ich glaube, der Zeilenvorschub ist nicht noetig.
        Mit
        sendtcp(onkyoPort, onkyoIP, 0x49, 0x53, 0x43, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x21, 0x31, 0x53, 0x4c, 0x49, 0x32, 0x39, 0x0D)
        oder
        sendtcp(onkyoPort, onkyoIP, protocolHeader, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x21, 0x31, 0x53, 0x4c, 0x49, 0x32, 0x39, 0x0D)
        nimmt der Onkyo die Befehle an.
        Mit stringset habe ich noch nichts hinbekommen.
        Wie kann man onkyoCommand geschickt einfuegen ohne ihn erst in HexBytes zu zerlegen und dann Byte fuer Byte einzufuegen?

        Kommentar


          #5
          Du definierst den String mit einem zusätzlichen Zeichen und änderst das dann per stringset() in ein CR um, meint Michael wohl.

          Ob man gleich die abschließende 0x00 ändern kann weiß ich nicht, bezweifel es aber.
          BR
          Marc

          Kommentar


            #6
            Habs mal wie folgt probiert

            protocolHeader = $ISCP$
            protocolData = $xxxxxxxxxxxxx$
            onkyoCommand = $!1SLI26$
            protocolMessage = $xxxxxxxx$

            // Protokoll Daten vorbereiten
            protocolData1 = protocolHeader + protocolData + onkyoCommand + $x$
            if cycle (00,05) then {
            stringset(protocolData1,0x00, 5u16);
            stringset(protocolData1,0x00, 6u16);
            stringset(protocolData1,0x00, 7u16);
            stringset(protocolData1,0x10, 8u16);
            stringset(protocolData1,0x00, 9u16);
            stringset(protocolData1,0x00,10u16);
            stringset(protocolData1,0x00,11u16);
            stringset(protocolData1,0x08,12u16);
            stringset(protocolData1,0x01,13u16);
            stringset(protocolData1,0x00,14u16);
            stringset(protocolData1,0x00,15u16);
            stringset(protocolData1,0x00,16u16);
            stringset(protocolData1,0x0d,24u16)} endif

            Aber ohne Erfolg.

            Kommentar


              #7
              Zitat von Marha Beitrag anzeigen
              Aber ohne Erfolg.
              So in etwa könnte man das 0xd in den String anfügen
              [highlight=epc]
              if cycle(00,10) then {
              stringset(onkyoCommand,0x0d,size(onkyoPort));
              sendtcp(onkyoPort, 192.168.178.39, protocolHeader, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommand)
              } endif
              [/highlight]
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Zitat von saft6luck Beitrag anzeigen
                Entweder ist meine Spracherkennung defekt, oder deine Sprachausgabe ?
                iPad getippt und nicht bemerkt, dass dort was wie wild rumkopiert wurde - hab's ausbessert. Sorry...
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Folgender Code wird vom onkyo erkannt und ausgefuehrt.

                  Code:
                  if cycle(00,10) then {
                          onkyoCommand = $!1SLI26$;
                          stringset(onkyoCommand,0x0d,size(onkyoCommand));
                          sendtcp(onkyoPort, onkyoIP, 0x49, 0x53, 0x43, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommand)
                              }endif
                  Der Onkyo reagiert nicht auf jedes Protokoll, also nicht alle 10 sec.
                  Muss ich erst eine Verbindung mit connecttcp herstellen und entsprechend auf den Rückgabewert reagieren?
                  Wie baut man am geschicktesten eine solche Verbindung auf, hält sie und schließt sie bei nicht Gebrauch (Das schließen macht der eibPC automatisch)?

                  Kommentar


                    #10
                    Hi Leute..

                    versuch auch gerade meinen Onkyo zu verKNX'en...

                    seh ich das richtig, das ihr den Befehl hier alle 10 sec sendet.. also
                    immer ??

                    was bringt das.. wenn ich dann am Receiver umschalte wird der Befehl
                    ja nach 10 sec wieder überschrieben, oder ??

                    ist es nicht sinnvoller den Befehl nur einmal zu senden ??

                    Gruß Martin
                    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                    Kommentar


                      #11
                      Power on/off und die Source kann ich jetzt schon
                      schön über die Weboberfläche bedienen.. leider hab
                      ich festgestellt, wenn ich die Source ändere z.b. auf
                      Netradio und ich stell dann wieder zurück auf TV geht
                      ACR nicht mehr... kann das ein Onkyobenutzer bestätigen ??

                      muss ich da einen anderen Befehl verwenden ?? oder noch
                      zusätzlich was übermitteln ??

                      ich nutze: !1SLI23 als Befehl...

                      Gruß Martin

                      EDIT: das scheint ein Problem des Onkyos zu sein.. wenn ich am Receiver umstell passiert das gleiche !!
                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #12
                        Zu Deinem ACR-Problem kann ich leider nichts zu sagen. Habe keinen TV an diesem AVR hängen, dass mir das aufgefallen wäre.
                        Mit welchen Befehlen wählst Du die Internetradiosender aus?

                        Gruß
                        Markus

                        Kommentar


                          #13
                          So.. kram mal das alte Thema wieder hoch...

                          also irgendwie bin ich noch nicht zufrieden mit der Steuerung..

                          irgendwie ist das nicht zuverlässig.. und unzuverlässig ist nicht gut für den WAF.. (und geht mir auf die nerven..)

                          folgendes Problem:

                          mein Onkyo hat wohl ein Problem mit ACR zu haben, wenn die Netzwerkschnittstelle in den Einstellungen auf "immer online"
                          gestellt wird.. also auch auf Befehle hört, wenn der Receiver ausgeschaltet ist.

                          jetzt dacht ich mir.. lass ich das den Eibpc doch machen.. also wenn der TV angeht (Stromerkennung), soll er mir den Receiver
                          einschalten und danach gleich den Code für die richtige Source ($!1SLI05$) senden .. wenn ich den TV ausschalte, soll die Source
                          wieder auf die Squeezebox (Code: $!1SLI23$) gesetzt werden und der Receiver dann wieder ausgeschalten werden.

                          wie schon gesagt.. so richtig stabil läuft das nicht.. ich kann zwar den TV einschalten.. die Source ändern usw. aber das geht
                          oft erst nach einem zweiten Tastendruck.. manchmal gar nicht.. usw..

                          vielleicht kann ja mal einer von euch über den Code schauen, und mir Tipps geben woran das liegen könnte, bzw. wie man
                          das stabiler und zuverlässiger hinbekommt..

                          [highlight=epc]

                          //*****************************************
                          // Onkyo
                          //*****************************************

                          onkyoIP = 192.168.178.26
                          onkyoPort = 60128u16
                          onkyoConnectStatus = 0u08
                          onkyoCloseStatus = 0u08
                          onkyoConnect = EIN
                          protocolHeader = $ISCP$
                          onkyoCommand = $$
                          onkyoCommandSB = $!1SLI23$
                          onkyoCommandTV = $!1SLI05$
                          onkyoCommandOFF = $!1PWR00$
                          onkyoCommandON = $!1PWR01$
                          Onkyo_do= AUS
                          Onkyo_Power=AUS

                          mChoice=1

                          //TCP Connect
                          if onkyoConnect then {
                          onkyoCloseStatus = closetcp(onkyoPort,onkyoIP);
                          onkyoConnectStatus = connecttcp(onkyoPort,onkyoIP);
                          onkyoConnect = AUS;
                          } endif

                          //TCP Connection Watchdog
                          if (after(onkyoConnectStatus > 1,1000u64) and onkyoConnectStatus > 1) or (cycle(00,15) and onkyoConnectStatus > 1) or htime(04,00,00) then {
                          onkyoConnect = EIN
                          } endif

                          // TCP Connection Keep alive

                          if Onkyo_do==EIN then {
                          onkyoConnectStatus = connecttcp(onkyoPort,onkyoIP)
                          } endif

                          if after (onkyoConnectStatus > 1, 1000u64) then {
                          stringset(onkyoCommand,0x0d,size(onkyoCommand));
                          sendtcp(onkyoPort, onkyoIP, 0x49, 0x53, 0x43, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommand);
                          closetcp(onkyoPort,onkyoIP);
                          Onkyo_do=AUS
                          } endif


                          if pbutton(30,Konfig2ID)==1 then {
                          onkyoConnectStatus = connecttcp(onkyoPort,onkyoIP);
                          Onkyo_Power= AUS
                          } endif

                          if pbutton(29,Konfig2ID)==1 then {
                          onkyoConnectStatus = connecttcp(onkyoPort,onkyoIP);
                          Onkyo_Power = EIN
                          } endif

                          if TVStatus==EIN then Onkyo_Power=EIN; Onkyo_do=EIN else Onkyo_Power=AUS endif

                          if Onkyo_Power==AUS and after (onkyoConnectStatus > 1, 1000u64) then {
                          stringset(onkyoCommandOFF,0x0d,size(onkyoCommandOF F));
                          sendtcp(onkyoPort, onkyoIP, 0x49, 0x53, 0x43, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommandOFF);
                          closetcp(onkyoPort,onkyoIP)
                          } endif

                          if Onkyo_Power==EIN and after (onkyoConnectStatus > 1, 1000u64) then {
                          stringset(onkyoCommandON,0x0d,size(onkyoCommandON) );
                          sendtcp(onkyoPort, onkyoIP, 0x49, 0x53, 0x43, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, onkyoCommandON);
                          closetcp(onkyoPort,onkyoIP)
                          } endif

                          [/highlight]

                          testweise sind noch ein paar Taster im Code, um das ein/ausschalten des
                          TV's zu simulieren.. nicht wundern bitte..

                          Gruß Martin
                          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                          Kommentar

                          Lädt...
                          X