Ankündigung

Einklappen
Keine Ankündigung bisher.

MUSICPAL fernsteuern...

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

    [Codebeispiel] MUSICPAL fernsteuern...

    Vielleicht habt ja jemand von Euch eine Tip

    Ich möchte meinen MusicPla via eibPC fernsteuern...

    Mit folgender Kommandozeile kann ich im Browser die Favoriten umschalten:

    wobei es noch "schöner" wäre, wenn folgender Aufruf im eibpc umgesetzt werden könnte:
    Im eibPC habe ich zu diesem Zweck folgenden Code:
    [highlight=epc]

    if change(MP_Fav) or MP_Trigger then \\
    MP_Command= $GET /admin/cgi-bin/admin.cgi?f=favorites&n=../favorites.html&a=p&i=$ +convert(MP_Fav,$ $)+ $HTTP/1.1$; \\
    MP_Trigger=EIN\\
    endif

    if MP_Trigger then \\
    GET_1 = MP_Command + CRLF; \\
    GET_2 = $Mozilla/5.0$ + CRLF; \\
    GET_3 = $Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8$ + CRLF; \\
    GET_4 = $Host: 192.168.1.50$+ CRLF; \\
    GET_5 = $Connection: Keep-Alive$+ CRLF; \\
    GET_6 = $Authorization: Basic YWRtaW46YWRtaW4=$+CRLF+CRLF+CRLF; \\
    MP_String = GET_1 + GET_2 + GET_3 + GET_4 + GET_5 + GET_6 \\
    endif

    // connect to host
    if after(MP_Trigger, MP_SendDelay) then {
    MP_TCP_ConnectionState = connecttcp(MP_Port,MP_IP)
    }endif

    // send TCP telegram
    MP_Comm_sent=0
    if change(MP_TCP_ConnectionState) and MP_TCP_ConnectionState == 0u08 then {
    sendtcp(MP_Port, MP_IP, MP_String, size(MP_String));
    MP_Comm_sent=MP_Comm_sent+1;
    MP_CommandSent=1b01
    }endif

    // disconnect
    if after(MP_CommandSent, MP_SendDelay) then {
    closetcp(MP_Port, MP_IP);
    MP_CommandSent=0b01;
    MP_Trigger=0b01
    }endif
    [/highlight]

    In Chrome kann ich die header auslesen, die bei der "Direktabfrage" gesendet werden:
    Code:
    GET /admin/cgi-bin/admin.cgi?f=now_playing&n=../now_playing.html&a=p&i=0 HTTP/1.1
    Host: 192.168.1.50
    Connection: keep-alive
    Authorization: Basic YWRtaW46YWRtaW4=
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: de-AT,de;q=0.8
    ...sollte doch eigentlich passen, oder?

    Leider funktioniert es aber nicht (über die Variable MP_Comm_sent sehe ich, dass gesendet wird...
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    #2
    Zitat von EPIX Beitrag anzeigen
    [highlight=epc]
    if change(MP_TCP_ConnectionState) and MP_TCP_ConnectionState == 0u08 then {
    sendtcp(MP_Port, MP_IP, MP_String, size(MP_String));
    MP_Comm_sent=MP_Comm_sent+1;
    MP_CommandSent=1b01
    }endif
    [/highlight]
    Ich denke, du willst eigentlich sendtcparray benutzen bzw. schickt das sendtcp bei dem Code am Ende noch die Stringlänge hinterher. Das wird schief gehen. Du kannst wohl auch einfach
    sendtcp(MP_Port, MP_IP);
    senden. Sendtcp sendet immer nur die Anzahl Bytes des strings.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      upss, das kommt vom herumprobieren...

      Funktioniert jedoch trotzdem nicht:
      Code:
      sendtcp(MP_Port, MP_IP, MP_String);
      eventuell liegt ed ja daran, dass ich den ersten Teil (User:Passwort) nicht mitsenden kann(?)
      http://user: password@192.168.1.50/a

      Bei der Direkteingabe im Browser ist das Passwort vermutlich im Browsercache und darum geht's....
      EPIX
      ...und möge der Saft mit euch sein...
      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

      Kommentar


        #4
        Zitat von EPIX Beitrag anzeigen
        eventuell liegt ed ja daran, dass ich den ersten Teil (User:Passwort) nicht mitsenden kann(?)
        http://user: password@192.168.1.50/a
        Doch, kannst du. Deine Logindaten hast du ja hier:
        [highlight=epc]
        GET_6 = $Authorization: Basic YWRtaW46YWRtxxx=$+CRLF+CRLF+CRLF; \\
        [/highlight]
        Aber ich denke du hast hier auch ein CRLF zu viel.

        Zitat von EPIX Beitrag anzeigen
        Bei der Direkteingabe im Browser ist das Passwort vermutlich im Browsercache und darum geht's....
        Der Browser muss es trotzdem bei jeder Anfrage über das Netzwerk mitsenden

        PS: der String YWRtaW46YWRtxxx ist übrigens nicht verschlüsselt. Man kann ganz leicht den Klartext daraus erzeugen. Deshalb Vorsicht beim Posten dieser Daten im Internet.
        Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
        Amazon: KNXnet/IP Router
        , KNXnet/IP Interface

        Kommentar


          #5
          [highlight=epc]

          if MP_Trigger then \\
          GET_1 = MP_Command + CRLF; \\
          GET_2 = $Mozilla/5.0$ + CRLF; \\
          GET_3 = $Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8$ + CRLF; \\
          GET_4 = $Host: 192.168.1.50$+ CRLF; \\
          GET_5 = $Connection: Keep-Alive$+ CRLF; \\
          GET_6 = $Authorization: Basic YWRtaW46YWRtaW4=$+CRLF+CRLF; \\
          MP_String = GET_1 + GET_2 + GET_3 + GET_4 + GET_5 + GET_6 \\
          endif

          // connect to host
          if after(MP_Trigger, MP_SendDelay) then \\
          MP_TCP_ConnectionState = connecttcp(MP_Port,MP_IP) \\
          endif

          // send TCP telegram

          if change(MP_TCP_ConnectionState) and MP_TCP_ConnectionState == 0u08 then {
          sendtcp(MP_Port, MP_IP, MP_String);
          MP_Comm_sent=MP_Comm_sent+1;
          MP_CommandSent=1b01
          }endif

          // disconnect
          if after(MP_CommandSent, MP_SendDelay) then {
          closetcp(MP_Port, MP_IP);
          //gudeInit=0b01;
          MP_CommandSent=0b01;
          MP_Trigger=0b01
          }endif

          [/highlight]

          trotzdem ohne Erfolg....

          @Salixer: danke für die Warnung, aber das PW ist noch "ungeändert" und der Msuicpal von außen nicht erreichbar
          EPIX
          ...und möge der Saft mit euch sein...
          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

          Kommentar


            #6
            Ich fürchte ohne Wireshark kann man nur im Dunkeln herum stochern

            Bei GET_2 fehlt noch "User-Agent: " am Anfang.
            Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
            Amazon: KNXnet/IP Router
            , KNXnet/IP Interface

            Kommentar


              #7
              du meinst den Port klonen und dann 1x mit AUfruf aus Browser und 1x mit Aufruf aus dem eibPC....
              EPIX
              ...und möge der Saft mit euch sein...
              Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

              Kommentar


                #8
                Ja, um den Datenverkehr des EibPC abzuhören, brauchst du einen entsprechenden Switch mit Montoring-Funktion (Port klonen).
                Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
                Amazon: KNXnet/IP Router
                , KNXnet/IP Interface

                Kommentar


                  #9
                  Zitat von EPIX Beitrag anzeigen
                  du meinst den Port klonen und dann 1x mit AUfruf aus Browser und 1x mit Aufruf aus dem eibPC....
                  Initiiere den gesamten Verkehr mit dem Browser und schick Dir vom EibPC an deinem PC die Telegramme. Zeichne beides mit Wireshark auf und suche nach dem Unterschied.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    Dabei dann nicht vergessen am PC alle Firewalls zu deaktivieren, sonst kommt vom EibPC nichts an.
                    Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
                    Amazon: KNXnet/IP Router
                    , KNXnet/IP Interface

                    Kommentar


                      #11
                      Moin auch,

                      IMHO ist die Reihenfolge wichtig:

                      1.) Eine Anfrage an den Musicpal senden (ohne user + password)
                      2.) Musicpal antwortet mit Fehler 401 und erwartet erneute Anfrage
                      3.) Erneut anfragen mit User und Passwort.

                      Daher wird es nicht so leicht sein, das mal eben zu implementieren. Du wirst dann um einen Zustandsautomaten nicht herumkommen.

                      Nochmal hier beschrieben...

                      Gruß,
                      Bernd

                      Kommentar


                        #12
                        Hallo Bernd,

                        irgendwie hats du es geschafft mich völlig zu verwirren
                        (zugegeben, keine große Kunst bei mir )

                        wenn ich es vom Browser versuche, dann reicht eine simple Adresszeile
                        und kein
                        1.) Eine Anfrage an den Musicpal senden (ohne user + password)
                        2.) Musicpal antwortet mit Fehler 401 und erwartet erneute Anfrage
                        3.) Erneut anfragen mit User und Passwort.
                        ratlos....
                        EPIX
                        ...und möge der Saft mit euch sein...
                        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                        Kommentar


                          #13
                          Zitat von bmx Beitrag anzeigen
                          1.) Eine Anfrage an den Musicpal senden (ohne user + password)
                          2.) Musicpal antwortet mit Fehler 401 und erwartet erneute Anfrage
                          3.) Erneut anfragen mit User und Passwort.
                          Hi,
                          wenn in der Adresszeile im Browser der Username und Passwort übergeben werden, dann lässt IMHO auch der Browser Schritt 1 weg (Schritt 2 entfällt dann logischerweise auch). So habe ich es auch in Wireshark in Erinnerung.
                          Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
                          Amazon: KNXnet/IP Router
                          , KNXnet/IP Interface

                          Kommentar


                            #14
                            wenn man im Browser "http://User:Password@www.bespiel.de" eintippt reicht das.
                            ABER FireFox z.B. erzeugt dann für Dich den benötigten http authorization header (IE z.B. macht das nicht)

                            Du kannst auf jeden Fall User und Passwort sofort beim ersten Request mit übergeben und musst nicht zuerst einen 401 erzeugen, das merkt sich der Webserver auf der anderen Seite eh nicht! (siehe RFC 2617), aber es muss halt ein Authorization Header sein.
                            Code:
                            Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
                            Michael

                            P.S: ich habe hier übrigens noch einen einwandfrei funktionierenden MusicPal (1ste Generation, also ohne FB aber mit USB nachgerüstet, Firmware 1.67) - gebe den gerne gegen Gebot ab.

                            Kommentar


                              #15
                              ich werde nä. Woche testen & berichten....
                              bei uns steht das Walser Dorffest an (über 10.000 Leute an einen Abend) - da habe ich alle Hände voll zu tun
                              EPIX
                              ...und möge der Saft mit euch sein...
                              Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                              Kommentar

                              Lädt...
                              X