Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Denon AVR-3808 an hs

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

    #46
    Hi Patrik

    Das funktioniert wunderbar, ohne Einschränkungen

    Kommentar


      #47
      Hallo Micha

      Hättest du dafür eine kleine Vorlage? Wenn ich mal die Syntax verstanden habe, könnte ich die Vorlage für diverse Steuerungen einsetzen.
      Gruss Patrik alias swiss

      Kommentar


        #48
        Zitat von swiss Beitrag anzeigen
        Hättest du dafür eine kleine Vorlage?
        Ähm, sehr rudimentär; mehr als An/Aus/Mastervolume brauchte ich halt nicht, aber als Beispiel für schlechten Spaghetticode ist das Ideal
        Wäre aber erweiterbar..

        Makki

        (WG-Plugin, zusätzlicher Socat-Eintrag siehe Anhang):
        Code:
        # Plugin Denon-AVR
        # Kommunikation via UDP - socat separat einzurichten
        # Version: 0.1 2011-01-31
        
        ##################
        ### DEFINITION ###
        ##################
        
        my $socknum = 118;                # Eindeutige Nummer des Sockets +1
        
        # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
        $plugin_info{$plugname.'_cycle'} = 600;
        
        my $send_ip = "localhost"; # Sendeport (UDP, sie in Socket-Einstellungen)
        my $send_port = "50106"; # Sendeport (UDP, sie in Socket-Einstellungen)
        my $recv_ip = "localhost"; # Empfangsport (UDP, sie in Socket-Einstellungen)
        my $recv_port = "50105"; # Empfangsport (UDP, sie in Socket-Einstellungen)
        
        my $denon_ip;
        #$denon_ip = "172.17.2.89:23";  # uncomment to use direct telnet without socat
        
        my $basega = "10/0/0";
        my $numgas = 20;
        # Startadresse
        # 0=PW 1=PWStatus
        
        #######################
        ### ENDE DEFINITION ###
        #######################
        
        # Hauptverarbeitung
        if (!$socket[$socknum]) { # socket erstellen
            if ($denon_ip) {
                $socket[$socknum] = IO::Socket::INET->new(PeerAddr => $denon_ip, Timeout => 120, Blocking => 0)
                     or return ("open of $denon_ip  failed: $!");
            } else {
                $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                          Proto => "udp",
                                          LocalAddr => $recv_ip,
                                          PeerPort  => $send_port,
                                          PeerAddr  => $send_ip,
                                          ReuseAddr => 1
                                           )
                         or return ("open of $recv_ip : $recv_port failed: $!");
            }
        
            $socksel->add($socket[$socknum]); # add socket to select
        
            $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
            return "opened Socket $socknum";
        } 
        
        if (%msg) { # telegramm vom KNX
          if ($msg{'apci'} eq "A_GroupValue_Write") {
              my $idx = str2addr($msg{'dst'}) - str2addr($basega);
              if ($idx==0) {
                  my @vals = qw/PWSTANDBY PWON/; #1bit on/off
                  syswrite($socket[$socknum], $vals[$msg{'data'}]."\r");
              #1=PW?
              } elsif ($idx==2) { 
                  my @vals = qw /MVDOWN MVUP/; #1bit master-vol
                  syswrite($socket[$socknum], $vals[$msg{'data'}]."\r");
              } elsif ($idx==3) { # 1byte 0-99
                  syswrite($socket[$socknum], sprintf("MV%02d\r",$msg{'data'}));
              #4=MV?
              } elsif ($idx==5) {
                  my @vals = qw /MUOFF MUON/; #1bit mute
                  syswrite($socket[$socknum], $vals[$msg{'data'}]."\r");
              #6=MU?
              } elsif ($idx==7) { #1byte source 5=TV 11=ipod 19=usb
                  my @vals = qw /PHONO CD TUNER DVD BD TV SAT\/CBL DVR GAME V.AUX DOCK IPOD NET\/USB NAPSTER LASTFM FLICKR FAVORITES IRADIO SERVER USB\/IPOD/;
                  syswrite($socket[$socknum], "SI".$vals[$msg{'data'}]."\r");
              #8=SI?
              } elsif ($idx==9) { #1byte sourround mode 2=ST 6=MCHST 10=Matrix
                  my @vals = ("DIRECT","PURE DIRECT","STEREO","STANDARD","DOLBY DIGITAL","DTS SUROUND","MCH STEREO","ROCK ARENA","JAZZ CLUB","MONO MOVIE","MATRIX","VIDEO GAME","VIRTUAL");
                  syswrite($socket[$socknum], "MS".$vals[$msg{'data'}]."\r");
              #10=MS?
              } else {
                  return "dunno? recv KNX $msg{'dst'} $msg{'data'}";
              }
          }
          return;
        } elsif ($fh) { # incoming dgram
            my $buf = <$fh>;
            my $bufhex = unpack("H*",$buf);
            chomp $buf;
            my $fn = substr($buf,0,2);
            # this is still very dumb
            if ($fn eq "PW") {
                my @vals = qw/PWSTANDBY PWON/; #1bit on/off
                my( $val )= grep { $vals[$_] eq $buf } 0..$#vals;
                knx_write(addr2str(str2addr($basega)+1) ,$val,1);
                return "$val - @vals - $buf";
            } elsif ($fn eq "MV" and $buf !~ /^MVMAX/) { # MVMAX is undocumented?
                # broken, just sends every 2, .5 isn't considered
                knx_write(addr2str(str2addr($basega)+4),substr($buf,2,2),5.010);
                return "recv $buf ($bufhex)";
            } else {
                return "dunno recv $buf ($bufhex)";
            }
            return;
        }
        
        for (my $i=0; $i<$numgas;$i++) {
            $plugin_subscribe{$basega}{$plugname} = 1;
            $basega = addr2str(str2addr($basega)+1,1);
        }
        
        # insert all commands to be sent cyclic
        syswrite($socket[$socknum],"PW?\r");
        
        return;
        Angehängte Dateien
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #49
          Hallo Zusammen,

          ich muß leider das Thema noch mal aufgreifen.
          Mein Problem: Ich möchte von meine Denon AVR-3311 den Status über http (HS 2.6) abfragen (senden über TCP funktioniert). Die Dateien die hier verknüpft sind, sind "htip", nur was mach ich damit.

          Ja, leider bin ich in dem Thema noch nicht so tief drinnen um da selbständig eine Web-Seiten/IP-Geräte Abfrage neu zu erstellen.

          Ziel wäre es, wenn ich mit der FB auf Standby schalte, den Status auf meinen Bus zu bringen. Sonst zeigt meine Led immer "Receiver on" an, er ist aber aus.

          Schon mal vielen Dank und Sorry wenn ich noch nicht in der Lage bin gezielte Fragen zu stellen, kommt aber noch. Bestimmt!

          Beste Grüße aus München

          Franz

          Kommentar


            #50
            Hi,

            importieren der Bibliothek (.htip) funktioniert im Bereich Webanfragen per Rechtsklick 'Bibliothek importieren'.
            Der meckert dann wahrscheinlich zunächst, dass Du iKO zuweisen musst.

            Habe meinen aktuellen Stand nochmal anghängt.

            Die endgültige Lösung sind die Webafragen aber nicht. Nachteile siehe posts zuvor. Wir brauchen einen Baustein ähnlich dem Squeeze mit einer permanenten Telnetverbindung. Damit würden die Denons (ohne MOXA) gescheit eingebunden werden können.

            Bis dahin schalte ich per http (zuverlässig) und frag die Stati dann mit Verzögerung per telnet ab.
            Angehängte Dateien

            Kommentar


              #51
              Hallo thehansa,

              Sorry für die späte Antwort, hatte leider keinen Access.

              Der Import hat bestens funktioniert und die iKO's hab ich angelegt.

              Wie aber jetzt weiter? Ziel wäre: Wenn ich mit der FB den Denon auf Standby schalte, dass dann eine 0 oder 1 auf den Bus gesendet wird (LED "aus").

              Kannst du mir da mit einen "how to" helfen. Wäre echt super Klasse.

              Danke schon mal und jetzt rauf auf's Rennrad

              Franz

              Kommentar


                #52
                Das hilft dir vieleicht im Moment nicht weiter aber ich habe das ganze mit dem Wiregate gelöst. Mit mienem Plugin habe ich permanent alle Zustände wie ON/OFF, Aktuelle Quelle, Aktuelle Lautstärke usw... auf dem BUS und die Rückmeldung funktioniert auch in Echtzeit. Wenn eine Einstellungen z.B. über die Fernbedienung geändert wird, ist sie praktisch zeitgleich auf der Visu. Dazu existiert mittlerweile ein fertiges Plugin im SVN. Ob das in dem Ausmass mit dem HS möglich ist, weiss ich nicht.

                Vor allem weil die ganze Auswertungsgeschichte komplex und die Telnetverbindung sehr instabiel ist.
                Gruss Patrik alias swiss

                Kommentar


                  #53
                  Hi,

                  ich bin schon etwas weiter gekommen und ich glaub mir fehlt einfach noch die Erfahrung mit dem Grafischen Logikeditor.
                  Ich laß da nicht locker!

                  Einen Gruß aus MUC an alle

                  Franz

                  Kommentar


                    #54
                    Alleine mit dem GLE wirst Du da nicht glücklich, da der HS die Telnetverbindung nur halbherzig beherrscht. Glaub mir, ich hab da schon ein paar Tage damit verbracht.


                    ---
                    - Sent from my iPhone using Tapatalk

                    Kommentar


                      #55
                      Ok, dann genieße ich lieber das schöne Wetter - meine Frau wird nicht traurig sein

                      Kommentar


                        #56
                        Hi,

                        I made a few modules for controlling my Denon but the feedback is through http requests which is a bit slow. I´ve tried the Moxa solution as well and that is still going but it´s yet another device! I can control the equipment but am working on modules to parse the feedback from the moxa.
                        Every denon has a few different commands\feedback that are specific according their functions. So the command\feedback modules will be model specific but can easily be modified.
                        The protocol and commands\feedback are well documented.

                        I started this thread, https://knx-user-forum.de/knx-eib-fo...et-client.html , to see if anybody could help creating a logik module for controlling our Denon equipment since the latest equipment are skipping the rs232 connection. See DNP-720AE.

                        It seems that Nils created already a few modules to handle this problem. The source code has already been used in an other project by Eckerhart to control the squeezebox. So most of the code is already written. Thx to Nils!

                        From Matthias reply I understand it shouldn´t be to difficult to do.
                        Unfortunatly I have no understanding in Python but a lot of people on this forum do.
                        So if we could only buy a bit of their time!

                        Kommentar

                        Lädt...
                        X