Ankündigung

Einklappen
Keine Ankündigung bisher.

AV-Receiver Pioneer einbinden

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

    #16
    Ja, Du hast Recht. Bei Internet-Radio geht es. Ich hatte bei normalem Radio geschaut. Bekommt man es hin, dass auch bei normalem Radio die Informationen über sh.py angezeigt werden? Auf dem Telnet sind die Infos verfügbar.

    Danke für die Rückmeldung.

    Nachtrag:
    Ich habe den Uropa dazu, den VSX-921. Ein Schäche ist, dass er nur eine offene Verbindung zuläßt, d.h. solange sh.py läuft, ist mit Telnet (via Putty) nichts zu machen.

    Kommentar


      #17
      Zeig mir mal die Ausgabe deiner Telnet verbindung welche den Radiosender beinhaltet....

      Kommentar


        #18
        Hallo,

        der Radiosender wird im sogenannten FL-Display dargestellt. Wie sich die Telnet-Rückmeldung zusammensetzt, steht im Hanbuch auf Seite 26 (siehe Anhang).

        Es beginnt mit FL, gefolgt von 28 Ziffern. Immer 2 Ziffern bilden einen Buchstaben in HEX. Nach der Wandlung in eine Dezimalzahl entspricht der Wert dem ASCII Code.

        Telnet meldet FL0220202042415945524E2033202020
        würde bedeuten:
        HEX FL 02 20 20 20 42 41 59 45 52 4E 20 33 20 20 20
        DEZ 2 32 32 32 66 65 89 69 82 78 32 51 32 32 32
        ASCII B A Y E R N 3


        Bei Internetradio wird der Text in Klarschrift über Telnet übermittelt.

        Ich hoffe das hilft weiter, mir zu helfen.

        DANKE und GRUSS
        Michael
        Angehängte Dateien

        Kommentar


          #19
          Hi zusammen!

          Ich hab das auch mal etwas intensiver umgebaut, mit mehreren Zonen, etc. Hab einen SX86er, heißt auch alles brav Pioneer Einige Befehle sind wohl anders als bei den Kleinen.. also hier am besten von beiden Varianten das Nötige raus ziehen..

          Ich hätte das Ganze sehr gerne als RS232-Variante.. falls hier mal wer ne Idee hat, wie das einfach umzubauen wäre - gerne!

          Ich hab mir ein paar VolumeLow und High eingebaut, um per Tastendruck gleich zwei Hauptlautstärke-Varianten schalten zu können. Wäre wohl auch nobler gegangen, aber es funktioniert zumindest...
          Im PY-File werden auch Strings für den Source empfangen. Das hab ich, damit in der Visu direkt "Musik" oder "PS3" getriggert werden kann, vielleicht wäre das aber auch einfacher gegangen.

          Hier die Items:
          Code:
            [[[Pioneer]]]
            type = foo
          [[[[Power]]]]
          type = bool
          visu_acl = rw
          pioneer_send = power
          enforce_updates = yes
               knx_dpt = 1
               pioneer_listen = power
          [[[[Mute]]]]
          type = bool
          visu_acl = rw
          pioneer_send = mute
               pioneer_listen = mute
          enforce_updates = yes
               knx_dpt = 1
          [[[[Volume]]]]
          type = num
          visu_acl = rw
          pioneer_send = volume
               knx_dpt = 7
          enforce_updates = yes
               #eval = 1 if value == 80 else value
               #eval_trigger = Musik.OG.Pioneer.Volume|Musik.OG.Pioneer.Power
               pioneer_listen = volume  
               sqlite = init
            [[[[[Fading]]]]]
              type = num
          [[[[VolumeUp]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume+
          enforce_updates = yes
              knx_listen=3/4/8
              knx_dpt=1
          [[[[VolumeDown]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume-
          enforce_updates = yes
               knx_listen=3/4/7
               knx_dpt=1
            [[[[Volume_Low]]]]
              type = bool
              enforce_updates = true
              visu = no
              knx_listen=3/4/9
              knx_dpt=1
              pioneer_send = volumelow
            [[[[Volume_High]]]]
              type = bool
              enforce_updates = true
              visu = no
              knx_listen=3/4/10
              knx_dpt=1
              pioneer_send = volumehigh
          [[[[Source]]]]
          type = num
          visu_acl = rw
               knx_dpt = 7
          pioneer_send = source
               pioneer_listen = source
          enforce_updates = yes
          
            [[[[Mode]]]]
          type = num
          visu_acl = rw
              knx_dpt = 7
          pioneer_send = mode
              pioneer_listen = mode
          enforce_updates = yes
          [[[[Bass]]]]
          type = num
          visu_acl = rw
          pioneer_send = bass
              pioneer_liste = bass
          enforce_updates = yes
          [[[[Trebble]]]]
          type = num
          visu_acl = rw
          pioneer_send = trebble
              pioneer_listen = treble
          enforce_updates = yes
          [[[[NowPlaying]]]]
             type = str
             visu_acl = rw
             pioneer_listen = title
          [[[[Station]]]]
             type = str
             visu_acl = rw
             pioneer_listen = station
          
          [[[[Power2]]]]
          type = bool
          visu_acl = rw
          pioneer_send = power2
          enforce_updates = yes
              knx_dpt = 1
              pioneer_listen = power2
            [[[[Source2]]]]
          type = num
          visu_acl = rw
          pioneer_send = source2
          enforce_updates = yes
              knx_dpt = 7
              pioneer_listen = source2
          
          [[[[Mute2]]]]
          type = bool
          visu_acl = rw
          pioneer_send = mute2
              pioneer_listen = mute2
          enforce_updates = yes
              knx_dpt = 1
          [[[[Volume2]]]]
          type = num
          visu_acl = rw
          pioneer_send = volume2
              pioneer_listen = volume2
          enforce_updates = yes
              knx_dpt = 7
              sqlite = init
              #eval = 1 if value == 50 else value
              #eval_trigger = Musik.OG.Pioneer.Volume2|Musik.OG.Pioneer.Power2
              [[[[[Fading]]]]]
              type = num
          [[[[VolumeUp2]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume2+
          enforce_updates = yes
              knx_listen=3/4/15
              knx_dpt=1
          [[[[VolumeDown2]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume2-
          enforce_updates = yes
              knx_listen=3/4/14
              knx_dpt=1
          [[[[VolumeHigh2]]]]
          type = bool
          visu_acl = no
          pioneer_send = volume2high
          enforce_updates = yes
              knx_listen=3/4/17
              knx_dpt=1
          [[[[VolumeLow2]]]]
          type = bool
          visu_acl = no
          pioneer_send = volume2low
          enforce_updates = yes
              knx_listen=3/4/16
              knx_dpt=1
              
              
          [[[[Power3]]]]
          type = bool
          visu_acl = rw
          pioneer_send = power3
              pioneer_listen = power3
          enforce_updates = yes
              knx_dpt = 1
            [[[[Source3]]]]
          type = num
          visu_acl = rw
          pioneer_send = source3
              pioneer_listen = source3
          enforce_updates = yes
              knx_dpt = 7
          [[[[Mute3]]]]
          type = bool
          visu_acl = rw
          pioneer_send = mute3
              pioneer_listen = mute3
          enforce_updates = yes
              knx_dpt = 1
          [[[[Volume3]]]]
          type = num
          visu_acl = rw
          pioneer_send = volume3
              pioneer_listen = volume3
          enforce_updates = yes
              knx_dpt = 7
              sqlite = init
              #eval = 1 if value == 50 else value
              #eval_trigger = Musik.OG.Pioneer.Volume2|Musik.OG.Pioneer.Power2
              [[[[[Fading]]]]]
              type = num
          [[[[VolumeUp3]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume3+
          enforce_updates = yes
              knx_listen=3/4/19
              knx_dpt=1
          [[[[VolumeDown3]]]]
          type = bool
          visu_acl = rw
          pioneer_send = volume3-
          enforce_updates = yes
              knx_listen=3/4/18
              knx_dpt=1
          [[[[VolumeHigh3]]]]
          type = bool
          visu_acl = no
          pioneer_send = volume3hjigh
          enforce_updates = yes
              knx_listen=3/4/21
              knx_dpt=1
          [[[[VolumeLow3]]]]
          type = bool
          visu_acl = no
          pioneer_send = volume3low
          enforce_updates = yes
              knx_listen=3/4/20
              knx_dpt=1
          Hier die Plugin.conf:
          Code:
          [pioneer]
              class_name = Pioneer
              class_path = plugins.pioneer
              host = 10.0.0.130
              port = 8004
              cycle = 15
          Anhang ignorieren und die aktuellste Version (siehe Beitrag 23) laden.
          Angehängte Dateien
          Zuletzt geändert von Onkelandy; 12.10.2015, 00:17.

          Kommentar


            #20
            Möchte mich für das tolle Plugin bedanken - Definitiv etwas für die Plugin - Bibliothek!

            Funktioniert toll mit VSX-529

            EDIT: habe die 1. Variante von Manuel verwendet

            Kommentar


              #21
              freut mich dass es ohne probleme läuft :-)

              Kommentar


                #22
                Hi zusammen!

                Ich habe es inzwischen erfolgreich hinbekommen, das Ganze auch über RS232 abzuhandeln. Bei meiner "alten" Plugin-Überarbeitung müsste man im Übrigen die Status-Update Stopps bei Power Off für alle Zonen raus löschen...

                Ich werde jetzt das Plugin jedenfalls so updaten, dass auch die Rückmeldung des Receivers mit ins Spiel kommt. Denn es kann ja vorkommen, dass ein Befehl nicht wirklich so ankommt wie er soll - und da wäre es meiner Meinung nach cool, wenn solange probiert wird, bis das entsprechend positive Feedback vom Receiver kommt. Oder hat das schon jemand umgesetzt ?

                Kommentar


                  #23
                  Anbei nun meine beiden überarbeiteten Plugins. Eines für RS232 und den Pioneer SC-LX86 , eines für LAN und den VSX 923 oder so.

                  Der Vorteil beim RS232 ist, dass man dem Receiver auch sofort ein Signal senden kann, nachdem die Steckdose eingeschaltet wurde. Via LAN muss man hier 40 Sekunden warten. Der Nachteil allerdings, dass Befehle, die über die mobile App gesendet werden, nicht auf der seriellen Schnittstelle abgebildet werden. Hier wäre eine Hybridversion optimal - mal sehen, ob ich das in nächster Zeit noch bastle.

                  ZUSATZFEATURES zum ursprünglichen Plugin:
                  - Befehle werden in einer Liste gesammelt und nacheinander abgearbeitet. Das ist dann sehr praktisch, wenn innerhalb kurzer Zeit mehrere Befehle geschickt werden, z.B. aus einer Logik - es geht nichts verloren und man spart sich diverse Waits, etc. .
                  - Das Plugin schickt 20 Mal den Befehl und versucht die Bestätigung dafür zu erhalten. Gelingt dies nach 20 Sekunden nicht, kommt der nächste Befehl dran.
                  - Statusupdate wird sofort unterbrochen, sobald ein tatsächlicher Befehl geschickt wird, sodass sich hier die Rückmeldungen nicht in die Quere kommen.
                  - Ein paar sonstige Überarbeitungen. Einfach mal ins Plugin schauen und nach eigenen Bedürfnissen anpassen.

                  Codeoptimierungen und Vorschläge gerne hier posten!
                  Angehängte Dateien
                  Zuletzt geändert von Onkelandy; 12.10.2015, 00:18.

                  Kommentar


                    #24
                    Kleiner Push von mir:

                    Baue das Plugin gerade bei mir ein und funktioniert bei meinem Pioneer VSX-930 bisher gut. Wollen wir das Plugin nicht offiziell aufnehmen Onkelandy ?

                    Gruss,

                    Stefan
                    Zuletzt geändert von pfischi; 27.12.2016, 12:18.
                    Sonos

                    Kommentar


                      #25
                      Zitat von pfischi Beitrag anzeigen
                      Kleiner Push von mir:

                      Baue das Plugin gerade bei mir ein und funktioniert bei meinem Pioneer VSX-931 bisher gut. Wollen wir das Plugin nicht offiziell aufnehmen Onkelandy ?

                      Gruss,

                      Stefan
                      Kommando zurück. Geht mit dem VSX-930 doch nicht wirklich. Einige Kommandos werden nicht unterstützt. Wahrscheinlich wird es schwierig, hier eine generische Lösung zu bauen.
                      Sonos

                      Kommentar


                        #26
                        Und noch ein kleiner Nachtrag: Ich glaube man kommt an die einzelnen Stati besser über die Weboberfläche dran. Ich versuche mich mal mit einem PoC.
                        Sonos

                        Kommentar


                          #27
                          pfischi Wie meinst du das mit der Weboberfläche? Die aktuellen Infos dort auslesen und ins Plugin einpflegen? Warum soll das besser gehen als über telnet/IP? Weil über die TCP-Verbindung oftmals Müll daher kommt ? Das Webinterface nutze ich gar nicht, müsst ich mal kontrollieren, wie schnell das die Infos updatet. Wie erwähnt, für mich ist die RS232 Funktion auch recht wichtig, weil ich den Receiver normalerweise vom Netz nehme mit geschaltener Steckdose. Und da musst über TCPIP ewig warten, bis er anspricht

                          Habe inzwischen schon eine Menge anderer Funktionen implementiert. Ich denke, eine "generische Lösung" wäre schon machbar. Da würde ich ähnlich wie im drexelundweiss Plugin pro Receiver ein Textfile erstellen mit den ganzen Befehlen. Dieses File wird dann ausgelesen und voila. Ist schon ne Umbauarbeit, aber könnte man sich mal ansehen. Für deinen Receiver musst sicher ein paar Befehle anpassen. Willst du meine aktuelle Version mal nutzen? Ist leider viel Gewürge und so 100% bin ich nicht zufrieden. Aber der Ansatz, auf eine Antwort zu warten und den Befehl nochmals zu senden, falls es nicht geklappt hat, ist schon wichtig.

                          Anbei mal das zip File.
                          Angehängte Dateien

                          Kommentar


                            #28
                            Per HTTP würde halt einfacher gehen, da man einfach eine URL ansteuern kann mit dem entsprechenden Kommando. Den Stati bekommt man über eine weitere URL. Der Code wäre dann mit einfachen requests-Kommandos implementierbar, was alles deutlich vereinfacht . ABER: Die ersten Tests haben gezeigt, das nach einem Strom AN die Weboberfläche teils minutenlang nicht erreichbar ist. Das gleiche gilt auch für die Telnet-Verbindung (zumindestens bei meinem VSX-930). Mich würde noch interessieren, wie du die RS232-Verbindung vom AV-Receiver zum Server realisiert hast?

                            Gruss,

                            Stefan
                            Sonos

                            Kommentar


                              #29
                              Ich vermute mal, dass die Weboberfläche nicht viel länger zum Hochfahren braucht als Telnet oder schon? Dann könnte das schon eine nette Alternative sein.. Andererseits ist bei meinem Plugin eh mehr oder weniger gesichert, dass der Code auch ankommt, da das Plugin auf die konkret passende Rückmeldung wartet. Ist nur nervig, dass da oftmals kompletter Blödsinn retour kommt.. vielleicht stimmt irgendwas mit dem Timing nicht, keine Ahnung...

                              Ich hab einen USB auf RS232 Adapter direkt an den Raspi gehängt, auf dem läuft jetzt auch SmarthomeNG im "Kleinen", also nur mit den Funktionen, die direkt für RS232 und Arduino nötig sind, da ich hier örtlich gebunden bin quasi. RS232 nutze ich auch noch für Beamer und Leinwand, daher hab ich effektiv so einen 4er Hub, geht aber auch mit einem einfachen Adapter in Kabelform (hatte ich zu Beginn im Einsatz). Funzt(e) alles Plug an Play mit Debian Wheezy und Jessie.

                              Kommentar


                                #30
                                pfischi ich überarbeite das Plugin gerade komplett. Es wird nun einfach sein, die Befehle für den eigenen Receiver einzubinden. Ich schätze sogar, dass ich die Dinge aus dem Denon-Plugin etc. einbinden kann, um es wirklich als generisches AV Device Plugin laufen zu lassen. Momentan läuft die Sache über socket und TCP. Soweit alles prima, hab schon ne Menge Features und Ideen Als nächstes möchte ich noch die RS232 implementieren und zwar am besten komplett parallel.. und dann natürlich noch Multiinstance. Die Konfiguration sieht im Moment so aus:

                                Code:
                                ZONE;FUNCTION;SEND;QUERY;RESPONSE;READWRITE;INVERTRESPONSE;MAXVALUE
                                1;power on;PO\rPO;?P;PWR*;RW;yes
                                1;power off;PF;?P;PWR*;RW;yes
                                1;volume+;VU;?V;VOL***;W
                                1;volume-;VD;?V;VOL***;W
                                1;volume set;***VL;?V;VOL***;RW;;185
                                1;mute on;MO;?M;MUT*;RW;yes
                                1;mute off;MF;?M;MUT*;RW;yes
                                1;input set;**FN;?F;FN**;RW
                                Das Item erhält dann das Keyword "avrdevice_zone1 = power
                                In der ersten Zeile des Config Textfiles wird beschrieben, welche Werte wie angegeben werden müssen. Nach dem Senden wird also auf die korrekte Response gewartet. Trifft die nicht ein, wird der Query-Befehl raus geschickt. Der geht auch raus, wenn das Plugin neu startet oder eine neue Verbindung hergestellt wird, um alles auf die richtigen Werte zu setzen.
                                Mit READWRITE bestimmt man, ob das Item nur schreibt (zB Volume Up), nur empfängt (zB Titel-Info bei Now Playing) oder beides (der Rest.)
                                INVERTRESPONSE ermöglicht es, 0 und 1 zu tauschen. Mein Pioneer ist so schlau und sendet ein PWR1, wenn die Zone AUS ist Bei Mute das gleiche.
                                Mit MAXVALUE beschränke ich zB die Lautstärke. Sollte irgendwann mal das Item auf einen höheren Wert gestellt werden, wird automatisch auf den Max-Wert geclipt.

                                In der Plugin-Config kann man noch folgende Sachen angeben:
                                Code:
                                    host: 10.0.0.130 # IP Adresse
                                    port: 9009
                                    model: sc-lx86 # Das AV Modell. Davon abhängig wird die entsprechende Text-Datei geladen.
                                    ignoreresponse: RGB, RGC, RGD, spaces2 # Ein paar Response-Sachen, die von vornherein ignoriert werden sollen. spaces2 sagt, dass wenn etwas min. 2 Leerzeichen hat, wird es auch ignoriert.
                                    errorresponse: E02, E04 # Antwort bei einem Fehler. Meist kommt das, wenn man einen Befehl setzt, der eigtl. schon aktiv ist. "also zB Mute On", obwohl schon On ist.
                                    autoreconnect: false # Bestimmt, ob das Plugin in einem bestimmten Abstand einen Reconnect initiieren soll
                                    reconnectcycle:10 #Bestimmt, in welchem Abstand der Reconnect stattfinden soll.
                                    maxretries: 10 # Bestimmt, wie oft ein Befehl gesendet werden soll, falls keine korrekte Antwort kommt.
                                Hättest du sonst noch was, was dir auffällt oder einfällt? Dinge, die beim aktuellen Plugin stören oder nicht funktionieren?

                                Kommentar

                                Lädt...
                                X