Ankündigung

Einklappen
Keine Ankündigung bisher.

Slimserver, direkte CLI-Anbindung, Grundlagen

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

  • Slimserver, direkte CLI-Anbindung, Grundlagen

    Während meiner Versuche zum Thema CoverArt bin ich auf die CLI Schnittstelle des slimservers gestossen. Es handelt sich dabei um den kompletten Satz an Steuerungsbefehlen für den Server und die Clienten. Diese Befehle werden über den TCP-socket 9090 direkt an den slimserver übertragen, der sie dann auswertet und ggf. die abgefragten Daten auf demselben Weg wieder zurücksendet.

    Die Dokumentation der CLI Schnittstelle ist Bestandteil der slimserver Software. Zu finden ist sie unter:
    http://127.0.0.1:9000/html/docs/cli-api.html (sofern sich der slimserver auf demselben Rechner befindet)

    Mit Hilfe eines Terminalprogramms wie Hyperterminal kann man selber auf die schnelle die ersten Erfahrungen mit der CLI machen.

    So ergibt die Eingabe von (ohne Hochkomma):
    "player count ?" den Wert "player count 2", also zunächst die Wiederholung des Befehls, gefolgt von der Zahl 2, es sind also 2 Player im Netz.

    Weitere Beispiele:
    "player id ?" ergibt "player id 0 00%3A04%3A20%3A26%3A56%3A0e", also die playerId, die eindeutige Adresse des ersten Players, wie sie in der gesamten CLI Schnittstelle verwendet wird. Diese playerID ist gleichbedeutend mit der MAC Adresse des Gerätes, hier: 00:04:20:26:56:0e.

    "player name 00%3A04%3A20%3A26%3A56%3A0e ?" ergibt "player name 00%3A04%3A20%3A26%3A56%3A0e Radio", also das Wort "Radio".

    Als letztes Beispiel die "status" Abfrage, die alle notwendigen Daten des Clienten abfragt. Für die Abfrage der CoverID ist die Angabe der Variablen "tags" von besonderer Bedeutung. Damit kann bestimmt werden, welche Informationen gesendet werden. "J" gibt die CoverID heraus, die Variable "u" gibt den Pfad der mp3-Datei auf dem Server raus. Aufgerufen werden die Parameter, indem man sie einfach hintereinander aufzählt, also: "tags:Ju"

    "00:04:20:26:56:0e status - 2 tags:Ju" gibt neben allen möglichen Daten auch heraus:"artwork_track_id%3A3181", also 3181. Damit kann man mit der Adresse http://<slimseverIP>:9000/music/3183/cover.jpg , das gerade aktuelle Cover im Browser sehen.
    Angehängte Dateien

  • #2
    HyperTerminal auf Windows 7/Vista

    Leider liefert Microsoft das nützliche Programm Hyperterminal, dass es kostenlos bei Win XP dazugab, nicht mehr mit. Wer noch ein Win XP System im Zugriff hat, kann sich aber von dort die nötigen Dateien besorgen. Die HyperTerminal Anwendung selbst liegt bei XP unter "C:\Programme\Windows NT\" und heisst hypertrm.exe. Die beiden DLLs hypertrm.dll und hticons.dll sind im Windows Systemordner SYSTEM32 zu finden.

    Einfach die Dateien kopieren und in den entsprechenden Ordner von Win7/Vista legen.

    Zuletzt noch einen Hyperlink von hypertrm.exe auf den Desktop (oder sonstwo hin) legen, und los gehts.

    Innvollerweise wird ein Webzugang auf den Slimserver eingestellt. Die Parameter der "Einstellung" sind laut anhängender Graphik zu setzen, damit man bei den Experimenten mit der slimserver CII auch was sieht.
    Angehängte Dateien

    Kommentar


    • #3
      Problem TCP/IP

      Die Idee, vollständig auf den hsslim.exe zu verzichten, wird erstmal nix. Das Problem ist das TCP Protokoll. Der Homeserver kann zwar IP Pakete empfangen und auswerten, aber nur wenn man den passenden Port kennt.

      Wenn ich mit einem Terminalprogramm über Port 9090 auf den slimserver zugreife, dann gibt mir der Server einen neuen Port zurück, über den er antworten wird. Zum Beispiel 58544. Diesen Port kenne ich aber nicht, bzw. ich kann im Moment nicht feststellen, ob und wie der Homeserver ihn mir bekanntmachen würde. Deshalb weiss ich auch nicht, auf welchen Port mein TCP-Empfänger hören soll. Zudem muss ich den Port schon bei der Programmierung festlegen, wo er noch gar nicht bekannt sein kann...

      Das ganze Problem ist nur dann von Bedeutung, wenn man auf Änderungen lauschen will, wie sie von den CLI Funktionen "listen","subscribe" oder "displaystatus" dargestellt werden. Wenn zum Beispiel jemand auf der Slimbox selber ein neues Programm wählt, dann muss die Schnittstelle im Homeserver das mitbekommen. Der slimserver sendet auch die Änderungsnachricht, aber eben nur auf den uns unbekannten Port.

      Andere mp3-streaming Implementationen wie das BARIX-Anbindung haben gar keine externe Benutzerschnittstelle. Deshalb kommt das Demoprojekt:


      auch nur mit Webabfragen aus, bei denen ein Befehl gesandt und die Antwort sofort übermittelt wird. Genauso wie bei meiner CoverID Abfrage.

      Das Programm hsslim.exe baut also offensichtlich eine TCP Terminalsitzung zum slimserver auf, und übermittelt (umformatierte) Pakete per UDP weiter. UDP Pakete sind viel einfacher. Dabei kann der ursprüngliche Port erhalten bleiben, weshalb auch die Ereignissabfrage per UDP einwandfrei funktioniert.

      Wie ich von hier aus weitermache, muss ich erst überlegen...

      Kommentar


      • #4
        Neues Slimserver Plugin

        Es besteht die Möglichkeit, ein neues slimsever plugin zu erstellen, das entweder nur die Funktion hat, die aktuelle coverID über einen UDP Port zurückzumelden, oder sogar das ganze hsslim.exe unnötig zu machen.

        Als Grundlage dient eine Vorlage aus dem slimserverforum:
        power on/off status change event for players? - Squeezebox : Community : Forums

        von user wernerL. Dieses plugin sieht sehr vielversprechend aus. Ich muss zwar dafür Perl lernen und mich in die Menüstruktur eindenken, aber vielleicht gibt es Hilfe vom Autor.

        Kommentar


        • #5
          AW: Slimserver, direkte CLI-Anbindung, Grundlagen

          Hallo Peter,

          wie weit bist du da denn schon?

          Viele Grüße,
          david

          Kommentar

          Lädt...
          X
          😀
          🥰
          🤢
          😎
          😡
          👍
          👎