Ankündigung

Einklappen
Keine Ankündigung bisher.

Denon-Plugin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hi!

    Das Plugin funktioniert bei mir nach dem Update wieder.

    Einzig die knx_write-Aufrufe klappen nicht.
    Die Casts von Strings und knx-Adressen scheinen nicht zu klappen

    Anstatt
    Code:
    knx_write(addr2str(str2addr($basega)+1) ,$val,1);
    Verwende ich jetzt direkt eine knx-Adresse
    Code:
    knx_write("6/3/1" ,$val,1);
    Ist aber nicht schlimm, da der Offset sowieso statisch addiert wird.

    Kommentar


      #17
      Zitat von swiss Beitrag anzeigen
      Es gibt wie gesagt 2 Möglichkeiten zur bidirektionalen Kommunikation mit dem Denon:

      - LAN
      - RS232

      Für RS232 kannst du entweder den Port an der Rückseite des Wiregate oder einen USB -> RS232 Wandler einsetzen.

      Mehr wird als HW im Prinzip nicht benötigt ausser du musst mit dem RS232 über Lankabel ins Rack oder sonnst wo hin. Aber das können wir leider nicht aus der Glaskugel lesen...
      sorry, mir ist die Sache immer noch nicht klar. Über welchen Anschluß gehe ich denn an den Denon ran? Der X1100 hat kein RS232 Anschluß, sondern nur einen LAN und einen USB....

      Denon --> LAN oder USB? --> ??? --> Wiregate USB oder RS232

      Am liebsten wäre mir ja was direkt über LAN, aber Telnet scheint nicht zuverlässig und per http wüsste ich jetzt nicht wie es mit dem wiregate geht.

      Gruß und Danke für die Geduld mit mir...

      Andi
      Gruß
      Andi

      Kommentar


        #18
        Am liebsten wäre mir ja was direkt über LAN, aber Telnet scheint nicht zuverlässig und per http wüsste ich jetzt nicht wie es mit dem wiregate geht.
        Die Telnet Implementierung des Denn ist ziemlich buggy, nach jedem Kommando muss die Verbindung neu aufgebaut werden, zumindest bei meinem. Die http Befehle kannst Du von der Kommandozeile z.B. mit curl absetzen.

        Eine RS232 kann ich bei dem Receiver auf die Schnelle nicht entdecken, USB scheint auch nur für Audio gedacht zu sein.

        Kommentar


          #19
          @Ziegelstein:

          Soketnummer muss einfach eine eindeutige Nummer sein die du noch in keinem anderen Plugin verwendest. Ist also egal ob da 1, 2, 76 oder 123 steht. Hauptsache die Nummer wurde noch sonst bei keinem Soket auf deinem Wiregate verwendet

          Ich sehe gerade dass die Serielle Anbindung weder in meinem noch in makkis Denonplugin umgesetzt wurde. lässt sich aber moderatem Aufwand anpassen. Sonnst müsstest du einfach einen socket im Webmin einrichten (ist fast der einfachere und bessere Weg).

          Die Verbindungsparameter sind:

          Geschwindigkeit 9600
          Datenbits: 8
          Parität: NON
          Startbit: 1
          Stopbit: 1

          @Andi: Hmmm... Das ist eine gute Frage... Bin mir nicht ganz sicher ob dein Modell die Ansteuerung über TCP command unterstützt. Da müsst ich selber mal im Internet suchen... Wenn es nicht viele Befehle sind kannst du auch mit HTTP Request arbeiten aber das ist in meinen Augen absoluter Krampf. Lieber ein sauberes Protokoll als Webseiten Parsen um sich die Werte herausopperieren zu müssen...

          @Jockel: Hmmm mein AVR4311 hat einen RS232 Anschluss auf der Rückseite aber es ist durchaus möglich dass das nicht alle Modelle haben... Dann bleibt nur IP. Das Reconnecten übernimmt dabei der socket des Wiregate. Das funktioniert eigentlich sehr gut und ohne dass man davon etwas merkt oder sich damit befassen muss
          Gruss Patrik alias swiss

          Kommentar


            #20
            Socket einrichten

            Zitat von swiss Beitrag anzeigen
            @Ziegelstein:
            Soketnummer muss einfach eine eindeutige Nummer sein die du noch in keinem anderen Plugin verwendest. Ist also egal ob da 1, 2, 76 oder 123 steht. Hauptsache die Nummer wurde noch sonst bei keinem Soket auf deinem Wiregate verwendet
            --> wieso steht in den Plugins auskommentiert dann immer:
            "Eindeutige Nummer des Socket +1"
            und nicht
            "nimme ne neue, einmalige Nummer" .. oder so.


            Zitat von swiss Beitrag anzeigen
            @Ziegelstein:
            Ich sehe gerade dass die Serielle Anbindung weder in meinem noch in makkis Denonplugin umgesetzt wurde. lässt sich aber moderatem Aufwand anpassen. Sonnst müsstest du einfach einen socket im Webmin einrichten (ist fast der einfachere und bessere Weg).

            Die Verbindungsparameter sind:

            Geschwindigkeit 9600
            Datenbits: 8
            Parität: NON
            Startbit: 1
            Stopbit: 1
            mh..klingt leicht für dich - ist unmöglich für mich.. habe fast das Ganze Forum durch - konnte kein Bild erhaschen, woraus für mich hervor geht, wie ich was wo im Webmin eingebe..
            Kannst du mir da helfen?

            Das nächste wäre dann die Anpassung im Plugin selber..
            Und dann habe ich auch nicht verstanden, wie das Plugin selber funktioniert.
            Gesteuert werden alle Befehle über die "baseGA"

            Was sende ich denn damit: irgendwelche Zahlen als Byte?

            Dank von mir zu dir, euch!

            Kommentar


              #21
              Hallo

              Ja das mit dem Socket ist historisch bedingt da dieses Beispiel so mal von makki erstellt wurde und danach immer wieder in neuen Anwendungen kopiert wurde. So ist auch in meinen Plugins die Socket verwenden der Hinweis mit Socketnummer+1 drinn...

              Zum Socket im Webmin...

              Hier muss du erst mal wissen welche serielle Schnittstelle du verwenden willst. Denn bei den USB-Seriell Wandlern hat jeder einen anderen und auf dem System eindeutigen Namen. Desshalb kann man die Parameter nicht ganz pauschal schreiben.

              Ausser dem Namen der Schnittstelle (einzutragen unter socket1 Socket:) können die Angaben im Bild aber übernommen werden:
              Angehängte Dateien
              Gruss Patrik alias swiss

              Kommentar


                #22
                Wenn du das hast und die Ampel nach dem Speichern auf grün springt, muss du im Plugin oben nur noch folgende 2 Einstellungen anpassen um eine Verbindung zu erhalten:

                $send_port= '50108';
                $recv_port='50107';
                $base_ga <= Das ist die Start GA von der hochgezählt wird. In der Version vom makki wäre das 10/0/0

                Wenn nun also auf base_ga + 0 eine 1 kommt, wird der reciver eingeschlten. Kommt eine 0 entsprechend aus...

                10/0/0 Wert 1 = Einschalten
                10/0/0 Wert 0 = Ausschalten

                10/0/1 Wert 1 = lauter
                10/0/1 Wert 0 = leiser

                10/0/2 Wert 1 = Stummschaltung EIN
                10/0/2 Wert 0 = Stummschaltung AUS

                usw...
                Gruss Patrik alias swiss

                Kommentar


                  #23
                  Zitat von swiss Beitrag anzeigen
                  Hallo


                  Zum Socket im Webmin...

                  Hier muss du erst mal wissen welche serielle Schnittstelle du verwenden willst. Denn bei den USB-Seriell Wandlern hat jeder einen anderen und auf dem System eindeutigen Namen.
                  Danke schon mal!
                  dank dir und google bin ich wieder schlauer und hab grob verstanden, wozu das /dev - Verzeichnis da ist.

                  In meinem Fall:
                  Ich verwende bzw. möchte ein reines RS232-Kabel vewenden. Nix mit USB.

                  Daher habe ich versucht:
                  /dev/ttyS0
                  /dev/ttyS1

                  anzugeben --> in beiden Fällen bleibt die Ampel rot.. Denke da, dass diese beiden Anschlüsse vom WG wohl irgendwie schon reserviert oder geblockt sind?
                  USB-RS232 ist bestellt..
                  Angehängte Dateien

                  Kommentar


                    #24
                    Hmmm... beim Wiregate war der RS232 Port etwas in der Art: /dev/ACM0 oder so... jedenfalls etwas mit A aber ich kann gerade nich nachsehen da ich auf der Arbeit bin...
                    Gruss Patrik alias swiss

                    Kommentar


                      #25
                      Jo,

                      habe folgendes ausprobiert:
                      PHP-Code:
                      dmesg grep tty 
                      demnach sind die Anschlüsse vorhanden und belegt??

                      Du meinst bestimmt:

                      ttyACM0 (ist aber auch irgendwas mit USB..)
                      Angehängte Dateien

                      Kommentar


                        #26
                        huch..

                        da geht auf einmal doch was mit meinen Setting.
                        Im Log-File des Plugin steht jede Menge Zeug, Ein/aus geht auch schon mal..
                        Krass!

                        Ampel bleibt wahrscheinlich rot, da USB = aktiv (Plug&Play) und mein Kabel nicht (passiv)

                        Muss nu mal rumspielen was geht und was nicht...

                        Kommentar


                          #27
                          Hallo,

                          ich versuche gerade das Plugin zu verstehen und habe daher ein paar Fragen.

                          Verstehe ich das richtig:
                          - das das Plugin Zyklisch alle 600 Sekunden aufgerufen wird
                          - das das Plugin auf jedes knx Komando reagiert?

                          Code:
                          $plugin_info{$plugname.'_cycle'} = 600; # alle 600 Sekunden
                          ....
                          if (%msg) { # Reagiert auf jedes telegramm vom KNX Bus
                          Danach wird geprüft ob es eine Write Befehl war.
                          Falls es kein Write Befehl war wird vom Plugin aktiv auf den KNX Bus geschrieben?

                          Code:
                          ...
                          if ($msg{'apci'} eq "A_GroupValue_Write") { #Prüfen ob auf den Bus geschrieben wurde
                          ....
                          } elsif ($fh) { # incoming dgram (Jeder KNX-Bus Befehl)
                          Falls das Plugin nur durch den Zyklischen Aufruf gestartet wurde, dann wird PW? gesendet
                          Code:
                          ...
                          syswrite($socket[$socknum],"PW?\r");
                          
                          return "cycle";
                          Diese Zeile
                          Code:
                           my $idx = str2addr($msg{'dst'}) - str2addr($basega);
                          ermittelt immer die letzten Stelle der GA Adresse? (10/0/5 -> $idx = 5)

                          Diese Variabel
                          Code:
                          $msg{'data'}
                          Enthält den Wert der auf das GA gesendet wurde.



                          --
                          Gruß
                          Lothar

                          Kommentar


                            #28
                            Soweit fast richtig, funktioniert übrigens prima..
                            $idx ist die GA in dezimal (0-65535), nicht "die letzte Stelle", wir sind hier nicht bei Buchhalter-Cobol, sorry der musste sein

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

                            Kommentar


                              #29
                              ich habe es leider nicht hin bekommen, das die Lautstärke per Cometvisu einzustellen war.
                              Bin noch etwas am experimentieren.
                              --
                              Gruß
                              Lothar

                              Kommentar


                                #30
                                So nun gibts noch eine neue Frage die ich noch nicht ganze verstehe.

                                Ich selbst nutze die Socket Verbindung innerhalb Perl
                                Code:
                                if (!$socket[$socknum]) { # socket erstellen
                                
                                        if ($debug == 1){
                                                plugin_log($plugname, "2 - Socket:$socknum zur IP $denon_ip wird aufgebaut ");
                                        }
                                
                                $socket[$socknum] = new IO::Socket::INET (
                                                PeerHost => $denon_ip,
                                                PeerPort => '23',
                                                Proto => 'tcp',
                                                Timeout => 1,
                                                ReadTimeout => 0.5,
                                                WriteTimeout => 0.5,
                                                Blocking => 0
                                        ) or return ("open of $denon_ip  failed: $!");
                                
                                    $socksel->add($socket[$socknum]); # add socket to select
                                
                                    $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                                    return "opened Socket $socknum";
                                }else{
                                        if ($debug == 1){
                                                plugin_log($plugname, "2 - Socket:$socknum zur IP $denon_ip besteht ");
                                        }
                                }
                                Nun ist mir aber aufgefallen, das jetzter das Script permanent gestartet wird, weil Netzwerktraffig besteht.

                                Ist diese Zeile dafür verantwortlich?
                                Code:
                                $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                                Wie kann man die Socket Verbindung wider schließen?
                                Solange die Socket offen ist ist auch das Telnet Interface auf dem Denon belegt.

                                Für was wird das
                                Code:
                                $socksel->add($socket[$socknum]); # add socket to select
                                benötigt?
                                --
                                Gruß
                                Lothar

                                Kommentar

                                Lädt...
                                X