Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

    #76
    Hallo macflei,

    vielen Dank für die Rückmeldung, ich warte auf Deine Codeschnipsel. Mit den Ions zur Auswahl ist genau das, was ich gesucht hatte. Geht das dann auch per Autogegenrierung der sh, oder mach ich da viel manuell im HTML5 code ?

    Grüße

    Michel

    Kommentar


      #77
      Hi Michel,
      komme leider erst am Wochenende dazu.
      Ist aber auch nichts spektakuläres. Wenn Du nicht warten kannst oder willst, kannst Du Dir ja mal multimedia.station anschauen.
      Die Cover hab ich mit GIMP angepasst. Geht sehr fix.
      Zum Autogenerator kann ich nichts sagen, da ich diesen nicht benutze.



      GruSS
      macflei

      mobil gesendet

      Kommentar


        #78
        Zitat von Orion Beitrag anzeigen
        Hallo macflei,
        ....ich warte auf Deine Codeschnipsel.
        Wie versprochen die Codebeispiele.
        Es ist ein Beispiel für einen Player inkl. Playlisten.
        Bei mir sind verschiedene Bedienfunktionen zusätzlich auf Tastsensoren gelegt oder in Szenen eingebunden. Deshalb die GA`s im Code.
        Die Album-Cover hab ich via Gimp angepasst (abgerundete Ecken, skalieren)

        Auszug aus /usr/smarthome/items/squeezebox.conf
        Code:
        [Squeezebox_Bad]
          squeezebox_playerid = 00:04:20:2a:87:b7
          [[Name]]
            type = str
            visu_acl = rw
            squeezebox_send = <playerid> name {}   
            squeezebox_recv = <playerid> name  
          [[IP]]
            type = str
            visu_acl = rw
            squeezebox_recv = player ip <playerid>   
          [[Signal_Strength]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> signalstrength
          [[Power]]
            type = bool
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/0
            squeezebox_send = <playerid> power {}
            squeezebox_recv = <playerid> prefset server power
            squeezebox_init = <playerid> power    
            
          [[Mute]]
            type = bool
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/5
            knx_send = 3/0/5
            squeezebox_send = <playerid> mixer muting {}
            squeezebox_recv = <playerid> prefset server mute
            squeezebox_init = <playerid> mixer muting
          [[Volume]]
            type = num
            visu_acl = rw
            knx_dpt = 5
            knx_listen = 3/0/4
            knx_send = 3/0/4
            squeezebox_send = <playerid> mixer volume {}
            squeezebox_recv = <playerid> prefset server volume
            squeezebox_init = <playerid> mixer volume    
          [[Volume_Up]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> button volup
          [[Volume_Down]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> button voldown
            
          [[Play]]
            type = bool
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/1
            knx_send = 3/0/1
            squeezebox_send = <playerid> play
            squeezebox_recv = <playerid> play
            squeezebox_init = <playerid> mode
          [[Stop]]
            type = bool
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/3
            knx_send = 3/0/3
            squeezebox_send = <playerid> stop
            squeezebox_recv = <playerid> stop
            squeezebox_init = <playerid> mode
          [[Pause]]
            type = bool
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/2
            knx_send = 3/0/2
            squeezebox_send = <playerid> pause {}
            squeezebox_recv = <playerid> pause
            squeezebox_init = <playerid> mode
          [[Repeat]]
            type = num
            visu_acl = rw
            enforce_updates = yes
            squeezebox_send = <playerid> playlist repeat {}
            squeezebox_recv = <playerid> playlist repeat
          [[Repeat_Song]]
            type = bool
            visu_acl = rw
            enforce_updates = yes
            squeezebox_send = <playerid> playlist repeat 1
          [[Repeat_Playlist]]
            type = bool
            visu_acl = rw
            enforce_updates = yes
            squeezebox_send = <playerid> playlist repeat 2
          [[Repeat_None]]
            type = bool
            visu_acl = rw
            enforce_updates = yes
            squeezebox_send = <playerid> playlist repeat 0
          [[Current_Title]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> playlist newsong
            squeezebox_init = <playerid> current_title
          [[Genre]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> genre
          [[Artist]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> artist
          [[Album]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> album
          [[Title]]
            type = str
            visu_acl = rw
            squeezebox_recv = <playerid> title
          [[Duration]]
            type = num
            visu_acl = rw
            squeezebox_recv = <playerid> duration
          [[Time]]
            type = num
            visu_acl = rw
            squeezebox_recv = <playerid> playlist time
          [[TimePlus]]
            type = num
            visu_acl = rw
            enforce_updates = true
            squeezebox_recv = <playerid> time
            squeezebox_send = <playerid> time +10
          [[TimeMinus]]
            type = num
            visu_acl = rw
            enforce_updates = true
            squeezebox_recv = <playerid> time
            squeezebox_send = <playerid> time -10
          [[Playlist_Index]]
            type = num
            visu_acl = rw
            squeezebox_send = <playerid> playlist index {}
            squeezebox_recv = <playerid> playlist index
          [[Playlist_Forward]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/6
            squeezebox_send = <playerid> playlist index +1
          [[Playlist_Backward]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/7
            squeezebox_send = <playerid> playlist index -1
            
          [[Playlist_Name]]
            type = str
            visu_acl = rw
            squeezebox_send = <playerid> playlist name {}
            squeezebox_recv = <playerid> playlist name
          [[Playlist_Save]]
            type = str
            visu_acl = rw
            squeezebox_send = <playerid> playlist save {}   
          [[Playlist_Load]]
            type = str
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play {}
        
          [[Playlist_Load_Bayern3]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Bayern3.m3u
        
          [[Playlist_Load_AntenneBayern]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/AntenneBayern.m3u
        
          [[Playlist_Load_Cafe80s]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Cafe80s.m3u
        
          [[Playlist_Load_Bayern1]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Bayern1.m3u
        
          [[Playlist_Load_RadiArabella]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/RadioArabelle.m3u
        
          [[Playlist_Load_Radio80s]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Radio80s.m3u
        
          [[Playlist_Load_RockAntenne]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/RockAntenne.m3u
        
          [[Playlist_Load_AntenneBayern80s]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/AntenneBayern80s.m3u
        
          [[Playlist_Load_antennemv]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/antennemv.m3u
        
          [[Playlist_Load_Bocelli]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Bocelli.m3u
        
        
          [[Playlist_Load_helloween]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/helloween.m3u
        
        
          [[Playlist_Load_pogues]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/pogues.m3u
        
        
          [[Playlist_Load_ami]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/ami.m3u
        
        
          [[Playlist_Load_eav]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/eav.m3u
        
        
          [[Playlist_Load_edguy]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/edguy.m3u
        
        
          [[Playlist_Load_freedomcall]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/freedomcall.m3u
        
        
          [[Playlist_Load_manowar]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/manowar.m3u
        
          [[Playlist_Load_Gong]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/16
            knx_send = 3/0/16
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/gong.m3u
        
          [[Playlist_Load_OMD]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/17
            knx_send = 3/0/17
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/OMD.m3u
        
          [[Playlist_Load_Playlist1]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/13
            knx_send = 3/0/13
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/PlaylistParty.m3u
          [[Playlist_Load_Playlist2]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/14
            knx_send = 3/0/14
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/PlaylistTV.m3u
          [[Playlist_Load_Playlist3]]
            type = bool
            enforce_updates = true
            visu_acl = rw
            knx_dpt = 1
            knx_listen = 3/0/15
            knx_send = 3/0/15
            squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/PlaylistEssen.m3u
        Auszug aus /var/www/smartvisu/pages/mac/page.squeeze.html
        Code:
        {% extends "rooms.html" %}
        
        {% block content %}
        
                <div class="block">
            <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false" >
                    <h3>{{ basic.value('Name1', 'Squeezebox_Bad.Name') }}-{{ basic.value('IP1', 'Squeezebox_Bad.IP') }}-{{ basic.value('Signal1', 'Squeezebox_Bad.Signal_Strength', '%') }}</h3>
                    {% import "widget_squeezebox.html" as squeezebox %}
                     {{ squeezebox.control('music2', 'Squeezebox_Bad.Power', 'Squeezebox_Bad.Play', 'Squeezebox_Bad.Pause', 'Squeezebox_Bad.Stop', 'Squeezebox_Bad.Playlist_Forward', 'Squeezebox_Bad.Playlist_Backward', 'Squeezebox_Bad.TimePlus', 'Squeezebox_Bad.TimeMinus', 'Squeezebox_Bad.Volume', 'Squeezebox_Bad.Mute', 'Squeezebox_Bad.Title', 'Squeezebox_Bad.Artist', 'Squeezebox_Bad.Repeat', 'Squeezebox_Bad.Repeat_Playlist', '', 'Squeezebox_Bad.Duration', '') }}    
                
            </div>    
            <div data-role="collapsible">
              <h3>Playlisten</h3>
                    ------ Radio ------
        {% import "multimedia.html" as multimedia %}
            <table width="100%">
                <tr>
                <td align="middle" width="100%">
                        {{ multimedia.station('CH1', 'Squeezebox_Bad.Playlist_Load_AntenneBayern', 'pics/station/Radio/antennebayern.png', 1, 'midi') }}
                        {{ multimedia.station('CH2', 'Squeezebox_Bad.Playlist_Load_Bayern1', 'pics/station/Radio/s24854q.png', 1, 'midi') }}
                        {{ multimedia.station('CH3', 'Squeezebox_Bad.Playlist_Load_Bayern3', 'pics/station/Radio/Bayern3.png', 1, 'midi') }}
                        {{ multimedia.station('CH4', 'Squeezebox_Bad.Playlist_Load_antennemv', 'pics/station/Radio/antennemv.png', 1, 'midi') }}
                </td>
                </tr>
            </table><br>
                    ----- Alben -----
            <table width="100%">
                <tr>
                <td align="middle" width="100%">
                         {{ multimedia.station('CH5', 'Squeezebox_Bad.Playlist_Load_pogues','pics/station/Playlists/pogues12.png', 1, 'midi') }}
                         {{ multimedia.station('CH6', 'Squeezebox_Bad.Playlist_Load_manowar','pics/station/Playlists/manowar.png', 1, 'midi') }}
                         {{ multimedia.station('CH7', 'Squeezebox_Bad.Playlist_Load_freedomcall','pics/station/Playlists/freedomcall.png', 1, 'midi') }}
                         {{ multimedia.station('CH8', 'Squeezebox_Bad.Playlist_Load_edguy','pics/station/Playlists/edguy.png', 1, 'midi') }}
                </td>
                </tr>
            </table>
            <table width="100%">
                <tr>
                <td align="middle" width="100%">
                         {{ multimedia.station('CH9', 'Squeezebox_Bad.Playlist_Load_helloween','pics/station/Playlists/helloween.png', 1, 'midi') }}
                         {{ multimedia.station('CH10', 'Squeezebox_Bad.Playlist_Load_eav','pics/station/Playlists/eav.png', 1, 'midi') }}
                         {{ multimedia.station('CH11', 'Squeezebox_Bad.Playlist_Load_ami','pics/station/Playlists/ami1.png', 1, 'midi') }}
                         {{ multimedia.station('CH12', 'Squeezebox_Bad.Playlist_Load_Bocelli','pics/station/Playlists/bocelli.png', 1, 'midi') }}
                </td>
                </tr>
            </table>
        
            </div>
        
            </div>
            </div>
        {% endblock %}
        /var/www/smartvisu/pages/mac/widget_squeezebox.html
        Code:
        /**
         * -----------------------------------------------------------------------------
         * @package     smartVISU
         * @author      Martin Gleiß
         * @copyright   2012
         * @license     GPL <http://www.gnu.de>
         * -----------------------------------------------------------------------------
         */
        
        /**
         * Squeezebox Multimedia Player
         * 
         * @param       unique id for this widget
         * @param       the gad/item for play
         * @param       the gad/item for pause
         * @param       the gad/item for stop (optional)
         * @param       the gad/item for playlist forward
         * @param       the gad/item for playlist backward
         * @param       the gad/item for playlist fastforward (opuional)
         * @param       the gad/item for playlist fastbackward (opuional)
         * @param       the gad/item for the volume (optional)
         * @param       the gad/item to mute the music (optional)
         * @param       the gad/item for the song title (optional)
         * @param       the gad/item for the song artist (optional)
         * @param       the gad/item for repeat (optional)
         * @param       the gad/item to repeat all (optional)
         * @param       the gad/item for the duration (optional)
         * @param       the gad/item for the time/position (optional)
         * @param       the gad/item for the playlist index (optional)
         * @param       the gad/item for the playlist total (optional)
         *
         * @author      Robert Budde
         * derived from "multimedia" by Axel Otterstätter - thanks!
         */
        {% macro control(id, gad_power, gad_play, gad_pause, gad_stop, gad_playlistforward, gad_playlistbackward, gad_playlistfastforward, gad_playlistfastbackward, gad_vol, gad_mute, gad_title, gad_artist, gad_repeat, gad_repeatall, gad_defaultplaylist, gad_duration, gad_time) %}
            {% import "basic.html" as basic %}
            {% import "widget_my.html" as my %}
            {% set uid = uid(page, id) %}
        
            <div id="{{ uid }}" class="music">
                
                {% if gad_vol %}
                <div class="vol">
                    <img class="slider-bottomup-scale" src="pages/base/pics/scale_buttomup.png">
                    {{ basic.slider(id~'vol', gad_vol, 0, 100, 5, 'bottomup') }}
                </div>
                {% endif %}
        
        
                <div class="control">
                {% if gad_power %} {{ basic.dual(id~'power', gad_power, icon1~'control_standby.png', icon0~'control_standby.png') }} {% endif %}
                {% if gad_mute %} {{ basic.dual(id~'mute', gad_mute, icon1~'audio_volume_mute.png', icon0~'audio_volume_mute.png', 1, 0) }} {% endif %}
                {% if gad_repeat %} {{ basic.dual(id~'repeat', gad_repeat, icon1~'control_return.png', icon0~'control_return.png', 1, 0) }} {% endif %}
                {% if gad_repeatall %} {{ basic.dual(id~'repeatall', gad_repeatall, icon1~'audio_repeat.png', icon0~'audio_repeat.png') }} {% endif %}
                {% if gad_defaultplaylist %} {{ basic.button(id~'defaultplaylist', gad_defaultplaylist, 'Default Playlist', icon0~'audio_playlist.png', 1) }} {% endif %}
                </div>
        
                <div class="title">
                  {% if gad_artist %}
                  {{ basic.value(id~'artist', gad_artist) }}
                  <br />
                  {% endif %}
                  {% if gad_title %}
                  {{ basic.value(id~'title', gad_title) }}
                  {% endif %}
                  <br />
                  {% if gad_playlistist %}
                  {% if gad_playlisttotal %}
                  {{ basic.value(id~'playlistist', gad_playlistist) }} von {{ basic.value(id~'playlisttotal', gad_playlisttotal) }}
                  {% endif %}
                  {% endif %}
                </div>
        
                <div class="set">
                    {% if gad_duration %}
                    {% if gad_time %}
                    <div class="pos">
                        <div class="scale">&nbsp;</div>
                        {{ my.time_slider(id~'time', gad_time, gad_duration, 1) }}
                    </div>
                    {% endif %}
                    {% endif %}
        
                    <div data-role="controlgroup" data-type="horizontal">
                        {{ basic.dual(id~'play', gad_play, icon1~'audio_play.png', icon0~'audio_play.png', 1, 1) }}
                        {{ basic.dual(id~'pause', gad_pause, icon1~'audio_pause.png', icon0~'audio_pause.png') }}
                        {% if gad_stop %} {{ basic.dual(id~'stop', gad_stop, icon1~'audio_stop.png', icon0~'audio_stop.png', 1, 1) }} {% endif %}
                   </div>
                    <div data-role="controlgroup" data-type="horizontal">
                        {{ basic.button(id~'playlistbackward', gad_playlistbackward, 'backward', icon0~'control_arrow_left.png', 1) }}
                        {% if gad_playlistfastbackward %} {{ basic.button(id~'gad_playlistfastbackward', gad_playlistfastbackward, 'fastbackward', icon0~'control_arrow_leftward.png', 1) }} {% endif %}
                        {% if gad_playlistfastforward %} {{ basic.button(id~'playlistfastforward', gad_playlistfastforward, 'fastforward', icon0~'control_arrow_rightward.png', 1) }} {% endif %}
                        {{ basic.button(id~'playlistforward', gad_playlistforward, 'forward', icon0~'control_arrow_right.png', 1) }}
                   </div>
               </div>
            </div>
        {% endmacro %}
        Danke nochmals an Robert für das tolle Plugin.

        Kommentar


          #79
          Hallo macflei,

          vielen Dank, werde ich ausprobieren. Kannst Du mir noch sagen, wie der Befehl

          Code:
              squeezebox_send = <playerid> playlist play /mnt/hd1/media/playlists/Bocelli.m3u
          Entstanden ist bzw. muss ich den bei meinem Logitech Medien Server irgendwie anpassen ?

          Danke Dir

          Michel

          Kommentar


            #80
            Zitat von Orion Beitrag anzeigen
            .... bzw. muss ich den bei meinem Logitech Medien Server irgendwie anpassen ?
            Du muß Playlists erstellen/abspeichern.
            Wenn Du eine Playlist erstellt hast (zum Besipiel ein Album geladen und dann als Playlist abgespeichert), mußt Du den Pfad zum Speicherort dieser Playlist dann in die Codezeile einfügen. Für jedem Radiosender erstellst Du ebenfalls eine Playlist.

            Code:
            squeezebox_send = <playerid> playlist play /pfad/zur/playlsit.m3u

            Kommentar


              #81
              Hallo macflei,

              vielen Dank, funktioniert. Es hat etwas gedauert, bis ich den Pfad wirklich gefunden hatte. Es geht auch komplett mit der HTML Autogenerierung, man verliert die Stations Ions. Aber sonst funktioniert dort alles !

              Grüße

              Michel

              Kommentar


                #82
                Nur als Anmerkung dazu:

                Ich hatte heute mit "playlist load" einige Schwierigkeiten. Daher weiter gesucht und mit

                Code:
                  [[Playlist_Play]]
                    type = str
                    enforce_updates = true
                    squeezebox_send = <playerid> playlistcontrol cmd:load playlist_name:{}
                  [[Playlist_Play_Internetradio]]
                    type = bool
                    enforce_updates = true
                    squeezebox_send = <playerid> playlistcontrol cmd:load playlist_name:Internetradio
                eine schönere Version gefunden. Der Pfad wird automatisch der im LMS eingestellte genommen.

                Als Argument in der smartVISU dann halt nicht "1" sondern einfach den Namen der Playliste!

                Kommentar


                  #83
                  squuezebox Time item never updated ...

                  Hello.
                  As I said before, I have a issue with the Time item in the plugin.
                  In my configuration this value is never updated. It was read in init, but not during the song.
                  Is there anybody that have a working Time configuration ?

                  Thanks to share your configuration.

                  Regards

                  Kommentar


                    #84
                    Squeezebox-Ansage

                    Falls das wer brauchen kann, hab mir heute zusammengesucht, wie man mit dem Plugin eine Ansage hinkriegt, so dass nachher dasselbe weiterspielt, was vorher eingestellt war.

                    squeeze_logic.py:
                    Code:
                    import time
                    
                    playing = sh.squeezebox1.play() # Status auslesen
                    sh.squeezebox1.playlistsave('squeeze1') # Aktuelle Playlist abspeichern
                    sh.squeezebox1.playlistplay('Relativer/Pfad/Ansage.mp3')
                    time.sleep(5) # Länge Ansage
                    sh.squeezebox1.playlistresume('squeeze1') # Resume alte Playlist
                    if not playing:
                    	sh.squeezebox1.stop(True) # Falls vorher gestoppt war, nun auch stoppen
                    Das Item playlistplay macht (eh klar): <playerid> playlist play {}
                    playlistresume macht: <playerid> playlist resume {}

                    LG Stefan

                    Kommentar


                      #85
                      Zitat von Robert Beitrag anzeigen
                      Der Pfad wird automatisch der im LMS eingestellte genommen.

                      Code:
                        [[Playlist_Play_Internetradio]]     type = bool     enforce_updates = true     squeezebox_send = <playerid> playlistcontrol cmd:load playlist_name:Internetradio
                      Als Argument in der smartVISU dann halt nicht "1" sondern einfach den Namen der Playliste!
                      Hallo Robert,
                      das habe ich irgendwie nicht gerafft.

                      Ich habe einen LMS auf eigenem Raspi aktuellem Squeezeplugimage am laufen.

                      In meiner Item habe ich folgenden Code:
                      Code:
                        [[Playlist_Load_AntenneBayern]]
                          type = bool
                          enforce_updates = true
                          visu_acl = rw
                          squeezebox_send = <playerid> playlist play /mnt/internal/media/playlists/AntenneBayern.m3u
                      
                        [[Playlist_Load_Bremen1]]
                          type = bool
                          enforce_updates = true
                          visu_acl = rw
                          squeezebox_send = <playerid> playlist play /mnt/internal/media/playlists/Bremen1.m3u
                        [[Playlist_Load_Gong]]
                          type = bool
                          enforce_updates = true
                          visu_acl = rw
                          squeezebox_send = <playerid> playlist play /mnt/internal/media/playlists/Gong.m3u
                        [[Playlist_Load_B5]]
                          type = bool
                          enforce_updates = true
                          visu_acl = rw
                          squeezebox_send = <playerid> playlist play /mnt/internal/media/playlists/B5.m3u
                      usw.
                      html:
                      Code:
                      {% import "multimedia.html" as multimedia %}
                          <table width="100%">
                              <tr>
                              <td align="middle" width="100%">
                                      {{ multimedia.station('CH1', 'Squeezebox_Bad.Playlist_Load_AntenneBayern', 'pics/station/radio/antennebayern.png', 1, 'midi') }}
                                      {{ multimedia.station('CH2', 'Squeezebox_Bad.Playlist_Load_Bremen1', 'pics/station/radio/bremen1.png', 1, 'midi') }}
                                      {{ multimedia.station('CH3', 'Squeezebox_Bad.Playlist_Load_Gong', 'pics/station/radio/gong.png', 1, 'midi') }}
                                      {{ multimedia.station('CH4', 'Squeezebox_Bad.Playlist_Load_B5', 'pics/station/radio/b5.png', 1, 'midi') }}
                      Das Abspielen der Internetsender funktioniert und per Buttonbetätigung werden die Sender gewechselt.

                      Was ist bei Deinem Itemeintrag anders bzw was muß ich im html-Code und LM Player konfigurieren?
                      Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                      Kommentar


                        #86
                        Problem mit Playlist

                        Hallo erstmal,

                        vielen Dank für das Klasse Plugin, habe gerade damit erfolgreich
                        die Kommunikation zur Squezzebox hinbekommen. Mein Problem sind derzeit die Wiedergabelisten, sprich Playlist. Habe meinen LMS sowie die Playlist´s auf einem NAS-System liegen. Wie habt ihr das bei euch gelöst, wo legt ihr die Daten ab? Bekomme einfach keine Playlist geladen. Ist das überhaupt in Verbindung mit NAS möglich? Muss ja irgendwie einen Aufruf erzeugen.
                        Habe mich übrigerweise an das gut beschriebene Beispiel unter smartvisu.de gehalten, aber leider ohne Erfolg.

                        Ich denke, ich muss das in dieses Format packen, geht aber trotzdem nicht!

                        squeezebox_send = <playerid> playlist play /volume1/music/01_Playlists/AntenneBayern.m3u

                        Wäre für Hilfe, bzw. einen Denkanstoß sehr dankbar.

                        Schöne Grüße
                        Daniel

                        Kommentar


                          #87
                          @SurfEU: Ich habe meinen Squeezeserver auch auf einem NAS laufen und muss keine Pfade angeben. Wichtig ist in dem Fall, dass die Playlisten halt auch in der Datenbank drin sind. Also mal im Webinterface eine Playliste abspeichern und die dann so aufrufen:
                          ITEM:
                          [[Playlist_Load]]
                          type = str
                          enforce_updates = true
                          visu_acl = rw
                          squeezebox_send = <playerid> playlistcontrol cmd:load playlist_name:{}
                          #geht auch: squeeze_send = <playerid> playlist resume {}

                          LOGIK:
                          sh.Squeezebox.Playlist_Load("PLAYLISTNAME")

                          Kommentar


                            #88
                            Problem mit Playlists speichern

                            Hallo zusammen!

                            Hier gibt es ja schon einige Posts, die sich mit Playlisten befassen, allerdings konnte ich leider noch nichts zu meinem Problem finden. Sämtliche Experimente meinerseits sind ebenfalls in die Hose gegangen

                            Das möchte ich tun:
                            - 2 oder mehrere Playlisten, die ich per KNX Taster abspielen kann
                            - beim Umschalten von einer zur anderen Playliste soll die noch aktuelle Playliste (bzw. die Abspielposition) gespeichert werden, aber nur, wenn sie nicht durch neue Songs ersetzt wurde

                            Szenario 1 funktioniert:
                            - Lade Playliste 1, spiele paar Songs
                            - Schalte auf Playliste 2 um, speichere davor aktuellen Stand der Playliste 1

                            Szenario 2 funktioniert nicht:
                            - Lade Playliste 1
                            - Songs in der Playliste über Webinterface ersetzt. Dabei wird eine namenlose neue Playliste erstellt. Es handelt sich laut "playlist name ?" NICHT mehr um die geladene Liste. Und das ist gut so.
                            - Schalte auf Playliste 2 um, speichere nichts, da Playliste 1 durch eine temporäre ersetzt wurde

                            Ich bräuchte also vor dem Speichern das Rückmeldeobjekt zu "<playerid> playlist name ?" und bekomm das nicht auf die Reihe Wäre froh, wenn mir hier wer helfen könnte.


                            Weiteres Problem: Ich möchte auch das Umschalten der Playlisten außerhalb von KNX monitoren, also zB wenn das übers Webinterface geschieht. squeezebox_recv habe ich wie hier empfohlen bereits auf <playerid> playlistcontrol cmd:load playlist_name:PLAYLISTNAME gestellt. Allerdings schreibt mein Squeezeserver beim Laden einer Playliste nicht den Namen, sondern eine ID (die zudem nicht konstant zu sein scheint): playlistcontrol cmd:load playlist_id: NUMMER. Wie kann ich denn den Squeezeserver dazu bringen, die Liste via Namen statt via ID aufzurufen, wenn ich das zB über iPeng oder Webinterface steuere?

                            Vielen Dank!
                            Andy

                            Kommentar


                              #89
                              Playlist

                              Hallo Onkelandy,

                              vielen Dank für die schnelle Auskunft. Muss ich heute Abend direkt mal testen. Würde es dir was ausmachen, mir ein konkretes Beispiel zu geben.
                              Eines ist mir zum Beispiel nicht ganz klar...

                              Der Punkt Logik:

                              sh.Squeezebox.Playlist_Load("PLAYLISTNAME")

                              Wo setzt Du diesen Eintrag, sprich in welcher .conf Datei?
                              Musst Du diese Logik nicht triggern, wodurch wird das ausgelöst?

                              Ein Beispiel wäre für mich ganz gut!

                              Danke Dir!

                              Kommentar


                                #90
                                Hi!
                                Also das kommt natürlich auf das Szenario an, das du hast. Wenn du ne Playliste durch Schalterdruck triggern willst, würden die Codes so aussehen:

                                in items eine conf., wie die heißt, ist egal.. entweder du lädst dann die Playlist direkt oder mit einem "Name" Argument, wobei du dann natürlich auch die GA und Aufrufe anpassen musst:
                                Code:
                                [Squeezebox]
                                  squeezebox_playerid = MAC Addy
                                  [[Playlist_Load]]
                                    type = str
                                    enforce_updates = true
                                    visu_acl = rw
                                    squeezebox_send = <playerid> playlistcontrol cmd:load playlist_name:{}
                                  [[Playlist_Load_Liste1]]
                                    type = bool
                                    enforce_updates = true
                                    visu_acl = rw
                                    knx_send=GA, die von Schalter getriggert wird
                                    knx_listen=GA, die von Schalter getriggert wird
                                    knx_init=GA, die von Schalter getriggert wird
                                    squeezebox_send = <playerid> playlist resume Liste1
                                    squeezebox_recv = <playerid> playlistcontrol cmd:load playlist_name:Liste1
                                In Logic.conf im etc-Verzeichnis:
                                Code:
                                [Playliste]
                                filename = playliste.py
                                watch_item = Squeezebox.Playlist_Load_Liste1
                                visu_acl = yes
                                Und dann noch das File playliste.py im logics-Ordner:
                                Code:
                                #!/usr/bin/python3.2
                                logger.info(trigger)
                                
                                
                                if Playlist_Load_Liste1() == 1:
                                      sh.Squeezebox.Playlist_Load_Liste1(1)
                                      logger.info("Squeezebox: Playliste 1 geladen")
                                      #alternativ: sh.Squeezebox.Playlist_Load("Liste1")
                                Wie nobel und toll das ist, kann ich nicht sagen - bin blutiger Anfänger. Aber funktionieren tut's. Und froh wäre ich, wenn mir noch wer mit meiner Frage helfen könnte

                                Kommentar

                                Lädt...
                                X