Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Es wird allerdings demnächst eine gänzlich neue Version des Plugins geben - daher nicht zu viel Zeit hier investieren
    Wie ist denn da der Stand der Dinge? Denn die aktuelle Version läuft nicht wirklich zufriedenstellend. Mein Log ist ständig voll von Fehlermeldungen:

    Code:
    2022-08-10  00:02:10 WARNING  plugins.squeezebox  Can not send because squeezebox is not connected.
    Allein heute schon 2300x der Gleiche Log-Eintrag. Das ist nicht schön.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Fürs Laden einer Playliste müsste playlist.load mit Angabe des Filenamen gehen.
    Ich hab hier zB ein zusätzliches Item mit dem Inhalt
    Code:
    type: bool
    enforce_updates: True
    visu_acl: rw
    knx_dpt: 1
    squeezebox_send: <playerid> playlist resume <NAME OHNE M3U>
    Favoriten sollten eigentlich auch klappen, da gibt es im Struct ein Item dafür.
    Es wird allerdings demnächst eine gänzlich neue Version des Plugins geben - daher nicht zu viel Zeit hier investieren

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Nach den vielen Updates des Squeezebox-Plugins: Wie lädt man denn da eine Playliste rein? Bzw. lassen sich auch Favoriten verwenden, die im Server hinterlegt sind und ggf. auch die Icons (für die SmartVisu) verwenden?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Du kannst bei squeezebox_send: <playerid> jeden beliebigen CLI Command einfügen, der hier gelistet ist: http://<DeinServer>:9002/html/docs/cli-api.html?player=#Supported%20Commands

    Als Beispiel playlist play /music/abba/01_Voulez_Vous.mp3 und dann könntest du über ein squeezebox_recv abfangen, ob der Song fertig ist, zB über playlist status. Am besten machst du da ne Logik, die zuerst den Namen der aktuellen Playlist in ein Item speichert, dann eben den obigen Befehl auslöst. Dann von einem Item, das den Status auf "pause" erkennt, wiederum abhängig machen, dass die vorige Playlist geladen wird. Codebeispiel hab ich hier leider keins. Ich habe für solche Situationen einfach eigene Playlisten mit je 1 Song erstellt und nutze da dann nur <playerid> playlist resume

    Einen Kommentar schreiben:


  • Yfkt5A
    antwortet
    Hallo zusammen,

    ist es möglich -und wenn ja wie- Meldungen einzuspielen und anschliessend den gespielten Sender/Wiedergabeliste wieder weiterlaufen zu lassen?

    Konkret möchte ich meine Türklingel darüber laufen lassen, aber auch andere Meldungen Tür auf, Waschmaschine fertig usw. wären denkbar.

    Für Tipps über Möglichkeiten der Einbindung und Codeschnipsel wäre ich sehr dankbar.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das dürfte am struct im struct liegen, das geht zumindest aktuell noch nicht. Leg also einfach dein Item so an:
    Code:
    Musik:
        name: "{{ basic.value('value1', 'item.player.player_name') }} @ {{ basic.value('value2', 'item.player.player_ip') }}"
        squeezebox_playerid: b8:27:eb:XX:XX:XX
        player:     
            struct: squeezebox.player
        info:
            struct: squeezebox.info
    Wobei du die struct auch eine Hierarchieebene höher einbinden kannst, wenn du willst. Also
    Code:
    Musik:
        struct:
            - squeezebox.player
            - squeezebox.info

    Einen Kommentar schreiben:


  • LoRdN0n4m3
    antwortet
    Danke, das hat funktioniert. Ob es jetzt an der Version lag, hatte "Master" 1.3.2. oder an der Struktur kann ich leider nicht sagen. Hatte mir aus einem alten Item-Beispiel eine eigene Struktur erstellt und den Player damit eingebunden.

    Gibt es evtl. eine elegantere Lösung, um auf die im Plugin enthaltenen Strukturen zuzugreifen?

    Mein Item sieht aktuell folgendermaßen aus:

    Code:
    Musik:
        name: "{{ basic.value('value1', 'item.player.player_name') }} @ {{ basic.value('value2', 'item.player.player_ip') }}"
        squeezebox_playerid: b8:27:eb:XX:XX:XX # MAC Adresse von Server Webinterface entnehmen
        player:
           struct: squeezebox.player
        info:
           struct: squeezebox.info
        controls:
           struct: squeezebox.controls
        playlist:
           struct: squeezebox.playlist
    Hatte es mit dem Ansatz versucht mir eine eigene Struktur anzulegen, in der alle Elemente enthalten sind

    Code:
    Player:
        player:
           struct: squeezebox.player
        info:
           struct: squeezebox.info
    .....
    und dann:

    Code:
    Musik:
        name: "{{ basic.value('value1', 'item.player.player_name') }} @ {{ basic.value('value2', 'item.player.player_ip') }}"
        squeezebox_playerid: b8:27:eb:XX:XX:XX # MAC Adresse von Server Webinterface entnehmen
        struct: Player
    Allerdings kommt so keine Kommunikation zu stande. Auch im Item-Baum werden die einzelenen Items nicht mehr gelistet.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Zieh dir bitte dir aktuellste develop Version vom Plugin und nutze die dort aktualisierten structs.
    Was ist denn vor dem "list index out of range" passiert? Bitte um Debug Log.

    Einen Kommentar schreiben:


  • LoRdN0n4m3
    antwortet
    Hallo zusammen,

    ich bin Neu in dem Thema hier und habe anhand der Codebeispiele erfolgreich das Squeezebox-Plugin inkl. Visu mit Playlistanwahl in mein SmarthomeNG 1.6.1 sowie smartVISU 2.9 einbinden können.
    Die Steuerung funktioniert Problemlos und ich bin absolut begeistert. Auch hier möchte ich meinen Dank an die Entwickler zum Ausdruck bringen!!

    Ich habe noch zwei kleine Probleme, für die ich leider keine Idee zur Abhilfe habe und ich hoffe Ihr könnt mir dabei helfen.

    In meinen Logs finden sich folgende Einträge:
    Code:
    2020-02-06 13:10:53 ERROR plugins.squeezebox exception while parsing '['b8:27:eb:XX:XX:XX', 'mode']'
    2020-02-06 13:10:53 ERROR plugins.squeezebox exception: list index out of range
    2020-02-06 13:10:53 WARNING lib.item Item EG.Wohnzimmer.Musik.Play: value "stop" does not match type bool. Via LMS 192.168.X.XXX:9090
    2020-02-06 13:10:53 WARNING lib.item Item EG.Wohnzimmer.Musik.Stop: value "stop" does not match type bool. Via LMS 192.168.X.XXX:9090
    2020-02-06 13:10:53 WARNING lib.item Item EG.Wohnzimmer.Musik.Pause: value "stop" does not match type bool. Via LMS 192.168.X.XXX:9090
    Mit dem Error weiß ich leider garnichts anzufangen.. Weiß jemand wie der verursacht wird, und noch besser, was ich dagegen unternehmen kann?

    Die Warnung ist ja eindeutig. Einem boolean Item kann kein String-Wert zugewiesen werden.
    Definiere ich z.B. Play als str anstatt bool, ist die Warnung weg, allerdings funktioniert dann die Anzeige des Status nicht mehr.

    Besten Dank im Voraus.

    Einen Kommentar schreiben:


  • stromie
    antwortet
    Werde es am Wochenende testen

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hab noch ein paar kleinere Sachen aktualisiert, wenn du noch testen willst stromie
    Siehe github PR https://github.com/smarthomeNG/plugins/pull/326

    Einen Kommentar schreiben:


  • stromie
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Das müsstest du wohl über eine Logik machen. Nach dem Motto:
    Code:
    neueliste = []
    
    for elem in liste:
    
    if elem.startswith('name:'):
    
    _, _, listentry = elem.partition(':')
    
    neueliste.append(listentry)
    Man könnte sowas natürlich ins Plugin einbinden. Wie rufst du dann aber die Favoriten auf? Mit der ID schätze ich?
    Das müsste gehen. Danke

    Einen Kommentar schreiben:


  • stromie
    antwortet
    Danke
    aktuell rufe ich die id:0 bis 5 auf. Da die komplette id nicht in der lms Oberfläche steht.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das müsstest du wohl über eine Logik machen. Nach dem Motto:
    Code:
    neueliste = []
    
    for elem in liste:
    
          if elem.startswith('name:'):
    
             _, _, listentry = elem.partition(':')
    
             neueliste.append(listentry)
    Man könnte sowas natürlich ins Plugin einbinden. Wie rufst du dann aber die Favoriten auf? Mit der ID schätze ich?

    Einen Kommentar schreiben:


  • stromie
    antwortet
    Hallo Onkelandy

    hast du eine Ahnung wie ich folgenden String in ein Item spliten kann ?

    Got: ['favorites', 'items', '0', '25', 'title:Favoriten',
    'id:6e38ce6a.0', 'name:1 Mix Radio Trance', 'type:audio', 'isaudio:1', 'hasitems:0',
    'id:6e38ce6a.1','name:99Drei - Radio Mittweida 99.3 (Weltmusik)', 'type:audio', 'isaudio:1', 'hasitems:0',
    'id:6e38ce6a.2','name:ENERGY Sachsen 98.3 (Top 40/Pop)', 'type:audio', 'isaudio:1', 'hasitems:0',
    'id:6e38ce6a.3','name:Radio PSR 100.0 (Adult Contemporary)', 'type:audio', 'isaudio:1', 'hasitems:0',
    'id:6e38ce6a.4','name:MDR JUMP 89.8 (Adult Contemporary)', 'type:audio', 'isaudio:1', 'hasitems:0',
    'id:6e38ce6a.5','name:Name', 'isaudio:0', 'hasitems:1', 'count:6']

    das ist das Ergebnis auf die Anfrage der Favoriten.

    Interressant wäre eine Liste
    mit dem Inhalt der name:

    Grüße Stromie

    Einen Kommentar schreiben:

Lädt...
X