Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

  • Gue0411
    antwortet
    Hallo zusammen,
    ich habe mich endlich an die Umsetzung meiner Visualisierung mit SmarthomeNG und SmartVISU gemacht.
    Hier habe ich auch das Squeezebox-Plugin installiert.
    Bei mir laufen im Haus verteilt insgesamt 4 Raspberry's mit Max2Play, auf dem ein Squeezebox-Server und 4 Player (einer je Raum) laufen.

    Nun zu meinem Problem.
    Ich habe das Squeezebox-Plugin zum laufen gebracht. Zumindest sehe ich im Backend bei den Items die Definitionen aufgelistet.
    Allerdings sind diese alle leer. Es scheint, keine Kommunikation stattzufinden...
    Leider bin ich nicht allzu fit mit Linux, Python etc.
    Also habt bitte Nachsehen mit mir

    Hat jemand vielleicht einen Tip, an was das liegen könnte?

    EDIT:
    Sorry für den Post, hatte den falschen Port in der Plugin.yaml eingetragen Funktioniert nun
    Zuletzt geändert von Gue0411; 21.01.2019, 19:49. Grund: Problem behoben

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Die telnet rückmeldung passt %3A = :

    das Problem liegt also beim Speichern über das Plugin? Deinen obigen Beitrag hätte ich anders verstanden

    Einen Kommentar schreiben:


  • Marcov
    antwortet
    Hi,

    ls auf der Synology:
    Die über das Plugin angelegte Playlist heißt statt "Überweisung.m3u" -> "?berweisung.m3u"
    die über den Server angelegten Dateien haben die Umlaute

    über Telnet kommt nur seltsames zurück:

    PHP-Code:
    74:da:38:05:02:6a playlistcontrol cmd:load playlist_name:'testlisteü'
    74%3Ada%3A38%3A05%3A02%3A6a playlistcontrol cmd%3Aload playlist_name%3A'testliste%C3%BC' count%3A813 
    er läd dann auch irgendwas, aber nicht diese Liste...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Wie heißt denn das "Benjamin Blümchen" Playlist-File auf dem Server wenn du mal per ssh oder telnet einloggst und mit ls im entsprechenden Ordner den Namen anzeigen lässt?

    Kannst du dich mal per CLI direkt mit dem LMS verbinden (telnet) und den Befehl
    Code:
    <PLAYER_ID> playlistcontrol cmd:load playlist_name:'Benjamin Blümchen'
    absetzen und beobachten? Bzw. dann im Stile eines URL Encodes statt dem ü ein %C3%BC
    wie zB hier checken: https://www.url-encode-decode.com/

    Einen Kommentar schreiben:


  • Marcov
    antwortet
    Hallo,

    ich verwende für einen selbstgebauten Kinderplayer u.a. das Squezeboxplugin, dabei ist mir aufgefallen, dass das übermitteln von Playlisten mit Umlauten nicht funktioniert:
    PHP-Code:
    sh.Squeezebox_Player.Playlist_Load('Benjamin Blümchen/'
    Kommt zwar anscheinend beim Server an, die Playliste ist aber leer . Absurderweise kann ich eine Playlist, die ich vorher mit
    PHP-Code:
    sh.Squeezebox_Player.Playlist_Save('Benjamin Blümchenmann.m3u'
    mit
    PHP-Code:
    sh.Squeezebox_Player.Playlist_Load('Benjamin Blümchenmann.m3u'
    wieder laden

    Der LMS läuft auf einer Synology, smarthomeNG ist 1.4 Master

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi macflei,
    danke die Hilfe kannte ich erlicherweise noch nicht da schon die meisten Szenarien im default drin waren.
    VG & Danke
    Jürgen

    Einen Kommentar schreiben:


  • macflei
    antwortet
    aus der Hilfe vom LMS:

    <playerid> sync <playerindex|playerid|-|?>

    The "sync" command specifies the player to synchronise with the given playerid. The command accepts only one playerindex or playerid. To unsync the player, use the "-" parameter.
    Note that in both cases the first <playerid> is the player which is already a member of a sync group. When adding a player to a sync group, the second specified player will be added to the group which includes the first player, if necessary first removing the second player from its existing sync-group.
    You may query which players are already synced with this player by passing in a "?" parameter. Multiple playerids are separated by a comma. If the player is not synced, "-" is returned.

    Examples:
    Request: "04:20:00:12:23:45 sync 1<LF>"
    Response: "04:20:00:12:23:45 sync 1<LF>"

    Request: "04:20:00:12:23:45 sync ?<LF>"
    Response: "04:20:00:12:23:45 sync 04:20:00:12:23:21<LF>"

    Request: "04:20:00:12:23:45 sync -<LF>"
    Response: "04:20:00:12:23:45 sync -<LF>"

    syncgroups ?

    The "syncgroups" query returns a comma separated list of sync groups members (IDs and names).

    Examples:
    Request: "syncgroups ?<LF>"
    Response: "syncgroups sync_members:04:20:00:12:23:45,04:20:00:12:34:56 sync_member_names:Living%20Room,Kitchen<LF>"

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi,
    ich will das 2 Palyer Synronisiert werden.

    Im Webfrontend vom LMS gibt es dazu bei der Playerauswahl den Meüpunkt Synchronize. Dann geht ein solcher Dialog auf wo man sagen kann mit was man Synchronisieren will.

    VG
    Jürgen

    syncron.JPG

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Was genau meinst du damit? Ansteuern verschiedener Player in versch. Räumen funzt über die vorangestellte MAC Adresse.

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi,

    weiss jemand wie das Zonenhandling funktioniert? erst mal rein von den Kommandos die zum LMS geschickt werden müssen.

    Viele Grüsse
    Jürgen

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi Robert
    Konntest du dir die Sache schon mal ansehen? Wäre cool, wenn du das mit der Modusabfrage bzw. mit playlist play und playlist stop noch einbinden könntest. Alternativ kann ich das zusammen mit einem Umbau auf ein Smartplugin auch mal versuchen und dann als pull request hochladen.
    Cool wäre aber va. wenn das Problem mit den Titeln bei einem Internetstream behoben werden könnte, da hab ich nicht wirklich einen Ansatz.

    Danke!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hoi Robert !

    Zitat von Robert Beitrag anzeigen

    Vielleicht mal Radiosender (am besten mit URL) benennen! Bei mir funzt das alles...
    Beispielsweise hier wird immer alles in einer Wurst genommen und nicht sauber in Titel, Interpret, etc. aufgeteilt:
    http://opml.radiotime.com/Tune.ashx?...48a1cdef244da0

    Zitat von Robert Beitrag anzeigen
    Code:
    [Squeezebox_Wohnen]
    [[Playlist_Andy]]
    type = bool
    [[[Play]]]
    [[[[multiclick]]]]
    type = bool
    enforce_updates = true
    visu_acl = rw
    knx_dpt = 1
    squeezebox_send = b8:27:eb:29:ea:2d playlist index -1
    Das ist so vorgesehen. Ich wandere nur den Baum hoch, nicht runter, da ich dort verzweigen müsste. Klar, kann man machen, aber mir ist der Sinn nicht klar. Ich habe im Item-Baum eine "lokale Wurzel" für EINE BESTIMMTE Squeezebox. Alle DEREN Funktionen befinden sich in der weiteren Ästen. Warum also nicht die ID in den Knoten "[Squeezebox_Wohnen]"?
    Ja, da spricht gar nichts dagegen, die ID in Squeezebox_Wohnen zu schreiben - das hab ich auch so. Ich mein auch gar nicht, in andere Äste schauen, sondern im gleichen Ast eine Ebene höher. Denn bei mir ist es so - vielleicht ist es aber auch ein anderes Problem?? - dass ich zwar von Playlist_Andy auf die playerid zurück greifen kann, aber nicht vom darunter liegenden multiclick. Also mir scheint nur eine Hierarchieebene zu funktionieren..?

    Zitat von Robert Beitrag anzeigen
    Das Problem verstehe ich glaub ich noch, aber was das "Query Item" daran jetzt repariert verstehe ich nicht!?
    Das Query Item sorgt zumindest dafür, dass sobald sich der Titel ändert, der Modus des Players abgefragt wird. Und da bekommt das Plugin dann mit, dass squeezebox doch im Play-Modus ist. Könnte man natürlich genauso ins Plugin selbst einbauen ohne Item, aber ich hab das jetzt halt mal probehalber so gelöst.
    Das Problem ist also, dass das Plugins zwar mitbekommt, wenn ich auf Play drücke, aber nicht, wenn ich eine Playliste lade und abspiele (bzw. eine Radiostation). Ich nutze das Webinterface der Squeezebox, by the way.

    Zitat von Robert Beitrag anzeigen
    Ok, verstehe ich grob. Das Ende einer Playliste wird nicht auf "Stop" propagiert? Verstehe ich das richtig, dass die Squeezebox aufhört zu spielen (und am Gerät "gestoppt" ist), das sh.py-Item "Stop" aber weiter "false" ist weil der Befehl "playlist_id playlist stop" nicht korrekt interpretiert wird?
    Genau so

    Thanks!
    Zuletzt geändert von Onkelandy; 14.08.2016, 10:31.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Manche Radiosender schicken offenbar die Info zum Programm so, dass das Plugin die Info auf die Titelzahl oder Dauer oder sowas legen möchte.. Siehe hier:
    Code:
    2016-07-22 13:04:45 WARNING Main Item Squeezebox_KG.Duration: value MODERATION does not match type num. Via LMS 10.0.0.100:9090
    Vielleicht mal Radiosender (am besten mit URL) benennen! Bei mir funzt das alles...

    Zitat von Onkelandy Beitrag anzeigen
    Das wäre ziemlich cool.. While you're at it.. Siehst du eine Chance, das Auslesen der PlayerID noch zu optimieren?
    Bei mir ist es so, dass wenn ich ein Item hab wie dieses:
    [...]
    alles bestens funktioniert. Aber sobald ich ein Item eine Hierarchieebene tiefer habe, kann man nicht mehr auf playerid zugreifen:
    Code:
    [Squeezebox_Wohnen]
    [[Playlist_Andy]]
    type = bool
    [[[[multiclick]]]]
    type = bool
    enforce_updates = true
    visu_acl = rw
    knx_dpt = 1
    squeezebox_send = b8:27:eb:29:ea:2d playlist index -1
    Das ist so vorgesehen. Ich wandere nur den Baum hoch, nicht runter, da ich dort verzweigen müsste. Klar, kann man machen, aber mir ist der Sinn nicht klar. Ich habe im Item-Baum eine "lokale Wurzel" für EINE BESTIMMTE Squeezebox. Alle DEREN Funktionen befinden sich in der weiteren Ästen. Warum also nicht die ID in den Knoten "[Squeezebox_Wohnen]"?

    Zitat von Onkelandy Beitrag anzeigen
    Mir ist gerade noch eine kleine Eigenheit vom Squeezebox Server aufgefallen - wenn man das im Plugin abfangen könnte, wäre das natürlich perfekt. Ist auch nicht sonderlich kompliziert behaupt ich mal

    Folgende Situation:
    Aktuell läuft keine Musik, Stop-Modus. Man lädt nun eine neue Playliste und lässt diese sofort abspielen (Klick auf den Playbutton neben der Playliste im Web-Interface, zB). Dann bleibt Play leider auf False und Pause auf True.

    Ich fange das Problem nun ab, indem ich ein Query Item erstelle, das bei jeder Änderung des Titels aufgerufen wird. Nicht gerade nobel, aber funzt..
    Code:
    [[Querymode]]
    type = bool
    visu_acl = rw
    enforce_updates = true
    squeezebox_send = <playerid> mode ?
    squeezebox_recv = <playerid> mode
    squeezebox_init = <playerid> mode
    Das Problem verstehe ich glaub ich noch, aber was das "Query Item" daran jetzt repariert verstehe ich nicht!?

    Zitat von Onkelandy Beitrag anzeigen
    Des weiteren wird am Ende einer Playliste folgender Befehl von Squeezebox empfangen: playlist_id playlist stop
    Obwohl ich versucht habe, das Stop-Item entsprechend anzupassen (nämlich eben playlist eingefügt), habe ich hier keine richtiges Update erhalten.
    Problem kann durch Einfügen/Ändern des Codes ab Zeile 208 im Plugin gelöst werden:
    Code:
    elif (data[1] == 'playlist'):
    if (data[2] == 'jump') and (len(data) == 4):
    self._update_items_with_data(
    [data[0], 'playlist index', data[3]])
    elif (data[2] == 'stop'):
    self._update_items_with_data([data[0], 'play', '0'])
    self._update_items_with_data([data[0], 'stop', '1'])
    self._update_items_with_data([data[0], 'pause', '0'])
    Am besten das gleiche Spiel noch mit "playlist" "play" - denn wenn ich zb einen Radiosender auswähle und abspiele wird genau dieser Befehl ausgeführt. ein normales "playerid play" gibt's da leider nicht...
    Ok, verstehe ich grob. Das Ende einer Playliste wird nicht auf "Stop" propagiert? Verstehe ich das richtig, dass die Squeezebox aufhört zu spielen (und am Gerät "gestoppt" ist), das sh.py-Item "Stop" aber weiter "false" ist weil der Befehl "playlist_id playlist stop" nicht korrekt interpretiert wird?

    Grüße
    Robert
    Zuletzt geändert von bmx; 07.08.2016, 09:42.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Mir ist gerade noch eine kleine Eigenheit vom Squeezebox Server aufgefallen - wenn man das im Plugin abfangen könnte, wäre das natürlich perfekt. Ist auch nicht sonderlich kompliziert behaupt ich mal

    Folgende Situation:
    Aktuell läuft keine Musik, Stop-Modus. Man lädt nun eine neue Playliste und lässt diese sofort abspielen (Klick auf den Playbutton neben der Playliste im Web-Interface, zB). Dann bleibt Play leider auf False und Pause auf True.

    Ich fange das Problem nun ab, indem ich ein Query Item erstelle, das bei jeder Änderung des Titels aufgerufen wird. Nicht gerade nobel, aber funzt..
    Code:
      [[Querymode]]
        type = bool
        visu_acl = rw
        enforce_updates = true
        squeezebox_send = <playerid> mode ?
        squeezebox_recv = <playerid> mode
        squeezebox_init = <playerid> mode
    Des weiteren wird am Ende einer Playliste folgender Befehl von Squeezebox empfangen: playlist_id playlist stop
    Obwohl ich versucht habe, das Stop-Item entsprechend anzupassen (nämlich eben playlist eingefügt), habe ich hier keine richtiges Update erhalten.
    Problem kann durch Einfügen/Ändern des Codes ab Zeile 208 im Plugin gelöst werden:
    Code:
                    elif (data[1] == 'playlist'):
                        if (data[2] == 'jump') and (len(data) == 4):
                            self._update_items_with_data(
                                [data[0], 'playlist index', data[3]])
                        elif (data[2] == 'stop'):
                            self._update_items_with_data([data[0], 'play', '0'])
                            self._update_items_with_data([data[0], 'stop', '1'])
                            self._update_items_with_data([data[0], 'pause', '0'])
    Am besten das gleiche Spiel noch mit "playlist" "play" - denn wenn ich zb einen Radiosender auswähle und abspiele wird genau dieser Befehl ausgeführt. ein normales "playerid play" gibt's da leider nicht...
    Zuletzt geändert von Onkelandy; 31.07.2016, 10:17.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das wäre ziemlich cool.. While you're at it.. Siehst du eine Chance, das Auslesen der PlayerID noch zu optimieren?
    Bei mir ist es so, dass wenn ich ein Item hab wie dieses:

    Code:
    [Squeezebox_Wohnen]
      squeezebox_playerid = b8:27:eb:29:ea:2d
      type = foo
      [[Power]]
        type = bool
        visu_acl = rw
        knx_dpt=1
        squeezebox_send = <playerid> power {}
    alles bestens funktioniert. Aber sobald ich ein Item eine Hierarchieebene tiefer habe, kann man nicht mehr auf playerid zugreifen:
    Code:
    [Squeezebox_Wohnen]
      [[Playlist_Andy]]
        type = bool
            [[[[multiclick]]]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            squeezebox_send = b8:27:eb:29:ea:2d playlist index -1
    Fehlermeldung:
    Code:
    2016-07-25  16:38:31 WARNING  Main         squeezebox: could not resolve playerid for Squeezebox_Wohnen.Playlist_Andy.Load.multiclick from parent item Squeezebox_Wohnen.Playlist_Andy.Load
    Mir ist klar, dass sich das Prob recht leicht in den Item-Angaben lösen lässt - optimal wäre aber, der Code würde das abfangen..
    Thx!!

    Einen Kommentar schreiben:

Lädt...
X