KNX für den MusikServer4Home

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

    #16
    Hallo Lance86, wieweit ist deine Integration der GIRA APi mit MS4H? Da ich parallel den Miniserver Version 1 und GIRA X1 verwende, habe ich grosses Interesse an deiner Lösung.
    Könntest du uns mal auf dem laufenden halten?

    Kommentar

    • Lance86
      Smart Home'r
      • 24.08.2018
      • 45

      #17
      Hallo Gast

      ich habe den Gira X1 heute erst bestellt. Hatte einen zum Testen zu Hause, deshalb ist leider noch nichts weiter passiert . Sobald ich den X1 zu Hause habe, mache ich mit der Integration weiter.
      Werde mich vermutlich übernächste Woche gezielt darauf konzentrieren können, dann gibt es auch wieder Updates dazu.
      Ich werde hier in diesem Thread dann den aktuellen Stand posten
      Zuletzt geändert von Lance86; 16.10.2020, 16:08.

      Kommentar

      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7147

        #18
        Gewisse Funktionen lassen sich einfach in den knxlistener integrieren. Die direkte Kommunikation ist sicher der beste Weg. Die"Not"-Bedienung könnte man so gestalten dass der Hostname/IP in die KNX Config eingetragen wird und wenn der nicht erreichbar ist knxd das über den listener macht.

        Dazu müsst ihr mir sagen was für Funktionen darüber laufen sollen. Bzw. kann ich diese generell Funktionen ausführten wenn kein X1 vorhanden ist.
        Kein Support per PN!

        Kommentar


        • Lance86
          Lance86 kommentierte
          Kommentar bearbeiten
          das mit dem generell Ausführen kann ich dir leider nicht sagen. Solange wir keinen "Wechsel" haben sondern eindeutige Ein/Aus-Werte oder absolute Zahlen und Texte verwenden, dürfte da nichts dagegen sprechen.
      • Lance86
        Smart Home'r
        • 24.08.2018
        • 45

        #19
        Hallo zusammen,

        ich habe nun endlich meinen X1 bekommen und hatte tatsächlich mal kurz Zeit mich damit zu befassen.

        Das mit der Notbedienung über den KNX-Listener finde ich gut.

        Zum Testen, ob das Ganze auch sauber funktioniert habe ich mir einen kleinen Squeeze-Listener gebaut und damit rumgespielt.

        Folgende Voraussetzungen gibt es, damit man mit dem Gira X1 direkt kommunizieren kann (der X1 schreibt dann automatisch die Infos auf den KNX-Bus)

        1. Man muss sich für die API am X1 anmelden. Dazu habe ich das Tool "Postman" verwendet". Die Doku von Gira ist ziemlich gut. Die wichtigsten Schritte nochmal in Kürze.
        Damit die Anmeldung funktioniert muss im Reiter "Authorization" der Type "Basic Auth" gewählt und Benutzer und Passwort vom Gira X1 eingegeben werden (bitte nicht den admin verwenden)
        • Code:
          GET    https://<IP vom X1>/api/v2/
          Damit könnt ihr testen, ob der X1 überhaupt antwortet
        • Code:
          POST    https://<IP vom X1>/api/clients
          in den Bodyteil muss folgende Information:
          Code:
          { "client": "<Name den ihr verwenden wollt>" }
          Als Antwort erhält man einen Token, den man in den folgenden Abfragen in der URL verwenden muss
        • Code:
          GET    https://<IP vom X1>/api/v2/uiconfig/uid?token=<Token vom X1>
          Hier werden die ganzen Adressen aller Datenpunkte aus dem X1 angezeigt. Hier müsst ihr die Adressen für die Erforderlichen Datenpunkte raussuchen. Bei mir sind das die Datenpunkte "Play", "Volume", "Title", "Interpret", "Cover". Die Adressen sehen bei mir in etwa so aus: "a02n"
        2. Mit folgender Anweisung können dann die Daten im X1 geändert werden:
        Code:
         curl -X PUT -u "$USER:$PASS" -k -d "{\"value\":\"<Wert als String>\"}" https://$IPX1/api/v2/values/<Adresse Datenpunkt im X1>?token=$TOKEN
        Code:
         curl -X PUT -u "$USER:$PASS" -k -d "{\"value\":<Wert als Integer>}" https://$IPX1/api/v2/values/<Adresse Datenpunkt im X1>?token=$TOKEN
        Damit das alles funktioniert müssen in der ETS folgende GA's angelegt werden:
        • Wiedergabe - DPST-1-1
        • Wiedergabe Status - DPST-1-2
        • Lautstärke absolut - DPST-5-1
        • Lautstärke absolut Status - DPST-5-1
        • Titel - DPST-16-1
        • Interpret - DPST-16-1
        • Cover - DPST-16-1
        Damit läuft bei mir mit meinem SqueezeListener ein Minimalbetrieb.

        Bekannter Fehler bisher:
        - Das Cover ändert sich nicht nach erstmaliger Anzeige. Ich verwende die URL "http://<MS4H-IP>:9000/music/current/cover.jpg?player=<MACPLAYER>"
        Das Cover kann zwar geändert werden, wenn man eine andere URL einspielt, jedoch cached der X1 scheinbar das Cover und zeigt danach trotzdem wieder das alte Cover an.

        Bei Bedarf kann ich den Listener auch noch veröffentlichen.

        ---
        URL der GIRA REST API Dokumentation:

        Kommentar

        • Gast

          #20
          Hallo Lance86,

          vielen Dank für die Darstellung deines Ansatzes. Werde es am Wochenende mal testen. Ich befürchte ganz verstanden habe ich es noch nicht. Vielleicht wird es noch klarer wenn du den Listener veröffentlichen würdest?

          Kommentar

          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7147

            #21
            Zitat von Lance86

            Damit läuft bei mir mit meinem SqueezeListener ein Minimalbetrieb.

            Bekannter Fehler bisher:
            - Das Cover ändert sich nicht nach erstmaliger Anzeige. Ich verwende die URL "http://<MS4H-IP>:9000/music/current/cover.jpg?player=<MACPLAYER>"
            Das Cover kann zwar geändert werden, wenn man eine andere URL einspielt, jedoch cached der X1 scheinbar das Cover und zeigt danach trotzdem wieder das alte Cover an.
            Squeeze-Connect ist gleich mit dem was du machst, er gibt Daten Eventbasiert an zB eine URL weiter. Er schaltet bei mir zB auch Amp-Ein/Aus für KNX etc.
            Den X1<->KNX-Part kann man hier integrieren.

            Das CoverArt über den Image-Proxy ist keine gute Idee. Ich nutze immer die direkte URL zu den Covern /Radio/Spotify etc.
            Mit dem Imageproxy gibt es immer wieder das Problem das die Cover nicht passen.

            Kein Support per PN!

            Kommentar

            • Lance86
              Smart Home'r
              • 24.08.2018
              • 45

              #22
              hismastersvoice
              Das mit dem Imageproxy wäre eine schöne Sache gewesen
              Hast du einen Tipp fürs Auflösen des richtigen Covers?

              Ich habe mir gestern deinen sq_connect mal angeschaut und den Austausch mit dem X1 umgesetzt.
              Der Squeeze-Connect pusht jetzt schön fleißig alle Änderungen vom LMS an den Gira X1 und passt die Visu an.

              Jetzt muss ich mir noch den knxlisten zu Gemüte führen, damit eine Änderung am X1 auch an den LMS weitergegeben wird.

              Kommentar

              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7147

                #23
                Ich kenne dein Skript nicht, also kann ich nichts dazu sagen wann du wie die Cover abholst.
                Kann dir nur zeigen wie ich das in PHP mache...

                PHP-Code:
                //Get Values
                $res_json = shell_exec('sudo curl -s -H "Content-Type: application/json" -X POST -d \'{"id":1,"method":"slim.request","params":["' . $zone_mac . '", ["status",0,500,"tags:acd","menu​laylist","useContextMenu:1"]]}\' http://localhost:' . $config['LMS_WEB_PORT'] . '/jsonrpc.js');
                $res_json = json_decode($res_json, true);
                //get current index
                $pl_index = $res_json['result']['playlist_cur_index'];
                //artwork
                if (is_array($res_json) && (array_key_exists('icon-id', $res_json['result']['item_loop'][$pl_index]))) {
                $icon_id = $res_json['result']['item_loop'][$pl_index]['icon-id'];
                $image = "http://" . $config['LMS_IP'] . ":" . $config['LMS_WEB_PORT'] . "/music/" . $icon_id . "/cover.jpg";
                } else {
                $image = strstr($res_json['result']['item_loop'][$pl_index]['icon'], 'http');
                
                if(stripos($image, '/imageproxy/') === 0) {
                $image = str_replace('/imageproxy/', '', $image);
                }
                if(stripos(strrev($image), strrev('/image.png')) === 0) {
                $image = str_replace('/image.png', '', $image);
                }
                if(stripos($image, 'html/images/playlists.png') === 0) {
                $image = 'http://'.$config['LMS_IP'].':'.$config['LMS_WEB_PORT'].'/html/images/playlists.png';
                }
                if(stripos($image, 'plugins/RandomPlay/html/images/icon.png') === 0) {
                $image = 'http://'.$config['LMS_IP'].':'.$config['LMS_WEB_PORT'].'/plugins/RandomPlay/html/images/icon.png';
                }
                $image = urldecode($image);
                } 
                
                So das du immer die echte Cover-URL bekommst.


                Das Squeeze-Connect mass ja wissen auf was für eine GA er senden muss. Woher nimmst du die?
                Kein Support per PN!

                Kommentar

                • Lance86
                  Smart Home'r
                  • 24.08.2018
                  • 45

                  #24
                  vielen Dank hismastersvoice für deinen Auszug.
                  Ich habe das schonmal teilweise in den sq_connect eingearbeitet.

                  Ich habe allerdings aktuell noch ein Problem, dass die Übergabe an den X1 den Dienst quittiert sobald Informationen vom knxlisten kommen.

                  ein kurzer Zwischenstand als Bild mal anbei.
                  Angehängte Dateien
                  Zuletzt geändert von Lance86; 14.11.2020, 09:21.

                  Kommentar

                  • Lance86
                    Smart Home'r
                    • 24.08.2018
                    • 45

                    #25
                    Hallo zusammen,

                    mal wieder kleines Update von mir zu der Gira X1 Integration:

                    Der Push vom Cover an den X1 funktioniert nun mit einer kleinen Verzögerung, weil ich festgestellt habe, dass die Information zum nächsten Titel früher verfügbar ist als der Link zum Cover. Deshalb ein kleiner Delay.

                    Das Problem aus meinen letzten Post habe ich auch gelöst. Vielen Dank an hismastersvoice für den Denkanstoß.

                    Aktuell habe ich folgende Funktionalität umsetzen können:
                    • Wenn in der LMS Oberfläche Play/Pause ausgeführt wird, wird die Anzeige im X1 angepasst (X1-API)
                    • Titel und Interpret werden vollständig übergeben, da keine Längenbeschränkung wie in KNX (X1-API)
                    • Cover wird an X1 übergeben (X1-API)
                    • Lautstärke wird an X1 synchronisiert (X1-API)
                    • Play/Pause wird vom X1/KNX-Bus an den LMS weitergegeben (KNX-Telegramm/DPT 1.001)
                    • Volume wird vom X1/KNX-Bus an den LMS weitergegeben (KNX-Telegramm/DPT 5.001)
                    Ich habe nun ein kleine Denkproblem und bräuchte mal Unterstützung:

                    Die X1-API hat einen Vor- und Nachteil zugleich. Wenn ich einen Befehl an den X1 übergebe, schreibt er die Daten automatisch an den KNX-Bus. Ich brauche mich also nicht um die beiden GA's fürs Schalten und den Status kümmern. Nachteil ist zugleich, dass ich das ankommende Telegramm gleich wieder an den X1 schicken würde (ist keine Endlosschleife, weil wenn sich nichts ändert, schreibt der X1 kein Telegramm), aber es ist nicht schön.
                    Ich hätte mir jetzt gedacht, die Integration insoweit aufzuteilen, dass lediglich Informationen wie Titel, Interpret und Cover-URL an den X1 per API übergeben werden und der Rest wie üblich an den KNX-Bus geschickt wird.
                    Eure Meinung dazu? Ich weiß, dass KNX hier kein Schwerpunktthema ist, aber vielleicht hat ja jemand eine alternative Idee.

                    Kommentar

                    • Gast

                      #26
                      evtl. sehe ich den Wald vor lauter Bäumen nicht, aber ich kann mein knx Connect nicht einrichten.
                      Ich erhalte nur die Möglichkeit "Autostart aktivieren" unter IP-Gateway anzuhaken.

                      Wenn ich dies anhake, speichern klicke und anschließend einen Neustart durchführe, erhalte ich keine weiteren Einstellmöglichkeiten.
                      Muss ich irgendwelche Dateien bearbeiten oder wo sollen die Eingaben des IP-Gateways möglich sein.
                      Besten Dank vorab.

                      Kommentar

                      • hismastersvoice
                        Supermoderator
                        • 25.08.2015
                        • 7147

                        #27
                        Version, Screenshots der Seiten...
                        Kein Support per PN!

                        Kommentar

                        • Gast

                          #28
                          Sorry, werden hiermit nachgereicht:

                          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Screenshot KNX Connect.jpg
Ansichten: 442
Größe: 78,4 KB
ID: 300888

                          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Version.jpg
Ansichten: 430
Größe: 55,4 KB
ID: 300889

                          Kommentar

                          • hismastersvoice
                            Supermoderator
                            • 25.08.2015
                            • 7147

                            #29
                            Du kannst in den neuen Versionen nur noch die knxd config Datei direkt bearbeiten.
                            Textfeld unter Autostart
                            Das würde geändert da die Konfiguration über das Formular sehr eingeschränkt war und man hat händisch editieren musste.
                            Ein Formular zu erstellen das noch mehr abdeckt ist zu umfangreich.
                            Kein Support per PN!

                            Kommentar

                            • Gast

                              #30
                              ok, danke für die Info.
                              Gibt es eine Anleitung welche Angaben gemacht werden müssen, um mit dem KNX System eine Verbindung aufbauen zu können.
                              Aus dem Textfeld werde ich irgendwie nicht ganz schlau.

                              Kommentar

                              Lädt...