Ankündigung

Einklappen
Keine Ankündigung bisher.

Denon über EibPC steuern

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

    Denon über EibPC steuern

    Hallo beisammen!

    Ich habe folgende Anforderung: ich möchte den Denon AVR 4308 über Telnet auf Port 23 steuern und über das WebInterface des EibPC schalten. Folgenden Code hätte ich mir laienhaft ausbaldovert:

    //TEST
    if webbutton(5)==1 then sendudp(23u16,192.168.1.5,$SITUNER$) endif
    if webbutton(5)==3 then sendudp(23u16,192.168.1.5,$SINET/USB$) endif


    Über Hyperterminal auf der IP kann ich die Befehle SITUNER z.B. zum umschalten auf Radio verwenden, gefolgt von einem Enter (<CR>). Leider funktioniert's wohl nicht so einfach aus dem EibPC. Was mache ich falsch oder geht das nicht so einfach wie ich mir das vorstelle?

    Beste Grüße,
    Mike

    #2
    Zitat von Mikey Beitrag anzeigen
    Hallo beisammen!
    //TEST
    if webbutton(5)==1 then sendudp(23u16,192.168.1.5,$SITUNER$) endif
    if webbutton(5)==3 then sendudp(23u16,192.168.1.5,$SINET/USB$) endif
    Über Hyperterminal auf der IP kann ich die Befehle SITUNER z.B. zum umschalten auf Radio verwenden, gefolgt von einem Enter (<CR>). Leider funktioniert's wohl nicht so einfach aus dem EibPC. Was mache ich falsch oder geht das nicht so einfach wie ich mir das vorstelle?
    Wenn Du ein CR brauchst, dann so:
    ... sendudp(23u16,192.168.1.5,$SITUNER$,13)
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hallo Enertegus !

      D.h. ich habe eigentlich alles ASCII Zeichen zur Verfügung, nehme ich an. Nachdem auch mit der 13 der Receiver nicht das macht, was er soll, stehe ich auf dem Schlauch. Ich habe den Befehl mal in reines ASCII umgewandelt und er macht trotzdem nichts. Wenn ich über Telnet die Verbindung aufmache, kann ich allerdings die Befehle manuell abarbeiten. Auch ein Script mit Telnet Befehlen als Batch ausgeführt geht. Aber eben mit Telnet im Spiel. Ich bin mir nicht sicher, ob das so einfach gehen soll, wie ich mir das denke. Kann ich die Befehle einfach per UDP lostreten? Hier mal der Link zum Denon Protokoll:

      http://www.denon.de/site/datadir/pdf...COL_V5.1.1.pdf

      Kannst Du mir helfen?
      Besten Gruß,
      Mike

      Kommentar


        #4
        Zitat von Mikey Beitrag anzeigen
        Kann ich die Befehle einfach per UDP lostreten?
        Seit 2 steht: TCP port 23
        -> sollte nicht per UDP gehen
        BR
        Marc

        Kommentar


          #5
          Hm... nachdem das Ding nun wirklich nicht reagiert stellt sich dann natürlich die Frage wann und ob "tcpsend" und "tcpread" kommen?

          LG,
          Mike

          Kommentar


            #6
            Man wird, auch mit 23/TCP, beim Denon ein ganz anderes Problem haben: der spricht über das Telnet-Interface nur 1x, dann ist essig
            Also je nachdem wie enertex das implementiert geht zwar Befehle senden aber das "volle Programm" inkl. alle Stati (z.B. von der FB ausgelöst), das wird ganz schön kniffelig..

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              @Makki
              Warum ist das so? Es ist doch genau dafür gedacht, dass der komplette Funktionsumfang per Telnet gesteuert werden kann. Mir ist das mit Hyperterminal schon aufgefallen, dass tatsächlich die Verbindung nach einem Befehl gekappt und wieder neu aufgebaut werden muss, damit der nächste Befehl kommen kann. Ich habe aber schon mal mit einem anderen Telnet Client Befehle nacheinander abarbeiten können. Das war aber Shareware und die Lic ist abgelaufen. Also dachte ich, dass es eher am Hyperterminal liegt.

              Gruß,
              Mike

              Kommentar


                #8
                Zitat von Mikey Beitrag anzeigen
                @Makki
                Warum ist das so?
                Ich kenne zwar den Denon nicht, aber TCP ist ja Verbindungsorientiert, daher sollte ein tcpsend() irgendwie in Beziehung zu einem tcpread() stehen, damit ich die Antwort auf den "Befehl" auch erhalte
                -> tcpread() liefert immer die Antwort, die auf ein tcpsend() kam (bzw. leert also den Empfangspuffer).

                Oder tcpread() sendet immer auch das Kommando und ich brauche das tcpsend() eigentlich gar nicht.

                Die Session würde also quasi bei jedem Aufruf neu aufgebaut und wieder geschlossen.

                Natürlich könnte man auch ein richtiges Session Management implementieren ...

                Bin mal gespannt, was da kommt.
                BR
                Marc

                Kommentar


                  #9
                  Der EibPC kann ja nun TCPsend und read. Dennoch hört der Denon Receiver immer noch nicht auf das, was ich ihm per EibPC zu übertragen versuche. Hat hier schon jemand irgendeine Umsetzung geschafft? Bin langsam am verzweifeln...

                  Ich habs mit connecttcp probiert, 200ms gewartet, dann per tcpsend meinen Befehl "umschalten auf Tuner" losgetreten und die Verbindung wieder getrennt. Trotzdem keinerlei Reaktion vom Denon :-(

                  Hat jemand eine Idee?

                  Kommentar


                    #10
                    Zitat von Mikey Beitrag anzeigen
                    Der EibPC kann ja nun TCPsend und read. Dennoch hört der Denon Receiver immer noch nicht auf das, was ich ihm per EibPC zu übertragen versuche.
                    Kannst Du mal Deinen Code posten?
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Zitat von Mikey Beitrag anzeigen
                      gefolgt von einem Enter (<CR>).
                      Bei Telnet als Zeilenende immer <CR><LF> verwenden (0D,0A).

                      PS: Ne ASCII-Tabelle gibt es hier: ASCII-Tabelle
                      Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
                      Amazon: KNXnet/IP Router
                      , KNXnet/IP Interface

                      Kommentar


                        #12
                        Code:
                        if webbutton(21)==1 then connecttcp(23u16,192.168.1.5) endif
                        if webbutton(20)==2 then sendtcp(23u16,192.168.1.5,$SITUNER$,13,10) endif
                        Das ist nur einer von zig erfolglosen Versuchen, den Denon zu überreden. Ich habe heute aber ausprobiert, ob ich den Denon per Telnet erreiche, wenn ich den ConnectTcp mache. Leider ja - beim Denon ist es normalerweise so, dass der keine weitere Steuerung zulässt, wenn schon eine Session aufgebaut ist. Somit könnte das Problem im fehlerhaften Aufbau liegen.
                        Ideen / Fragen / Anregungen ?

                        Kommentar


                          #13
                          Zitat von Mikey Beitrag anzeigen
                          Code:
                          if webbutton(21)==1 then connecttcp(23u16,192.168.1.5) endif
                          if webbutton(20)==2 then sendtcp(23u16,192.168.1.5,$SITUNER$,13,10) endif
                          Das ist nur einer von zig erfolglosen Versuchen, den Denon zu überreden. Ich habe heute aber ausprobiert, ob ich den Denon per Telnet erreiche, wenn ich den ConnectTcp mache. Leider ja - beim Denon ist es normalerweise so, dass der keine weitere Steuerung zulässt, wenn schon eine Session aufgebaut ist. Somit könnte das Problem im fehlerhaften Aufbau liegen.
                          Ideen / Fragen / Anregungen ?
                          Ggf. stört die Nullterminierung des Strings.
                          [highlight=epc]
                          if webbutton(21)==1 then connecttcp(23u16,192.168.1.5) endif
                          Ende=$$
                          if webbutton(20)==2 then {
                          stringset(Ende,0x0D0Au16,0u16);
                          sendtcp(23u16,192.168.1.5,$SITUNER$+Ende)
                          } endif
                          [/highlight]
                          Wir überlegen, ob wir die Nullterminierung beim Übertragen von Strings grundsätzlich weglassen sollen (meinungen der Experten sind hier gefragt)
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Zitat von enertegus Beitrag anzeigen
                            Ggf. stört die Nullterminierung des Strings.
                            Wir überlegen, ob wir die Nullterminierung beim Übertragen von Strings grundsätzlich weglassen sollen (meinungen der Experten sind hier gefragt)
                            Ok, ich bin jetzt zwar nicht gefragt aber wenn sich eine NULLterminierung dranhängen läßt dann kann man es ja machen soweit notwendig...

                            Gruß,
                            Bernd

                            Kommentar


                              #15
                              Mir ist jetzt nicht klar, warum die Terminierung des Strings mit übertragen werden sollte! Gibt es einen Grund, der dies notwendig macht und wird dies auch so beschrieben?

                              N.B. ist die Terminierung des Strings ein Teil der internen Darstellung, die mit der Abbildung in der realen Welt (= Programmlauf) nichts zu tun hat, oder?

                              Ansonsten schließe ich mich Bernd an.
                              BR
                              Marc

                              Kommentar

                              Lädt...
                              X