Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

  • adm1024
    antwortet
    Issue on squeezebox plugin for Time value

    Hello and sorry to speak english.
    I am new in smarthome.py.

    I made a working well configuration for severals squeeze box and it is OK.
    I can drive them and see the differents status and values on SmartVISU.

    I only have a problem with "Time" value in the song.
    Squeezeserver only send the duration value of the played song (not for streaming) but never the time. It is possible to ask the server to have it.
    I want to calculate the position value with time and duration. I made a logic script to do that. The script is started every 10 seconds.
    Code:
    #!/usr/bin/env python
    if sh.sqb.Play:
        if sh.sqb.Duration() != 0:
            sh.sqb.Position((sh.sqb.Time() / sh.sqb.Duration()) * 100)
    But the sh.sqb.Time() never re-asks the server to have the new value and keep the last received value.

    I try severals items attributs for sqb.Time item, but I not find the solution.
    I certainly missed something in my items configuration, but I don't know what.
    If somebody have a solution ?
    If you want, I can put the items and logic files to contribute to the plugin.
    Regards

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    ich hätte eine Anregung:
    Ab ins nächste Release damit!
    :-)
    Edit:
    Müsste ja eigentlich automatisch kommen, laut
    https://knx-user-forum.de/325028-post39.html
    Aber gerade das aktuelle Develop gezogen und da ist nix mitgekommen..

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Sieht gut aus!
    Danke!

    Einen Kommentar schreiben:


  • Robert
    antwortet
    So, habe gerade die Version für Python 3 in "develop" geschoben. Zudem etwas aufgeräumt und generell ein Verschlucken durch Exceptions aufgefangen.

    Leider habe ich - ohne jetzt testen zu wollen ob es vorher noch klappte - das Problem, dass ein "playlist index +1" nix bringt. "-1" hingegen klappt. Witzigerweise "+2" auch. Allerdings kriege ich das auch mit dem direkten Telnet-Interface nicht hin. Einen Workaround durch das setzen der absoluten Position möche ich nicht machen. Wer den Fehler/Trick rausfindet ist der gefeierte Held!

    Grüße
    Robert

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Puuuh, versteh ich nicht ganz - dann probier bitte mal das ".replace('°','%B0')" bzw. mach eben einen GIT pull (develop!).

    Grüße
    Robert

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    "%B0" geht aber nicht ... wird im Display dann genau so angezeigt ... heute Nachmittag seh ich mir das nochmal an.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Nach einer Nacht: Evtl. sollte man das nicht extra ändern bzw. ich werde den Commit von gestern wohl reverten.

    Das "%B0" muss der Benutzer dann an der richtigen Stelle selber eintragen - aber so können viele Fallstricke verhindert werden (z.B. dass benötigte Doppelpunkte nicht mitencodiert werden, welche im "Text" aber schon etc.).

    Evtl. sollte das in die Doku...

    Grüße
    Robert

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Ich habe keine bessere Lösung als

    Code:
    Zeile 121:             self._send(' '.join(cmd_str for cmd_str in cmd).format(value).replace('°','%B0'))
    Problem ist: Den Doppelpunkt braucht das Radio so... Und was weiß ich noch alles... Ergo kann man nicht alles url-encodieren. Muss man mal im Auge behalten, ob noch so Wünsche auftreten und sich da was Grundlegendes findet.

    Grüße
    Robert

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Muss ich nochmal in meinen Daten wühlen, ich weiß dass es schonmal funktioniert hat aufm WireGate, aber der Code im SVN ist Grütze ... %B0 wollte auch nicht. Im Browser funktioniert es aber. www.google%B20de wird zu zum Gradzeichen (hab ich hier gerade nicht aufm iPad).

    Ich knobel auch mal weiter die Tage.

    EDIT:
    https://knx-user-forum.de/239606-post20.html
    Da hat wohl das Grad Zeichen funktioniert, ich teste morgen mal die urlencode separat.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hi Mirko,

    hab jetzt eine Stunde geknobelt - bekomme es auch nicht hin...

    Problem ist das Encoding. Habe jetzt verschiedene Ansätze getestet, allerdings scheint es nicht auszureichen, den String als UTF-8 zu encodieren. Eigentlich sollte \xc2\xb0 ein Grad-Zeichen encodieren, aber das übernimmt das Radio dann...

    Daher: weißt du, was für ein String korrekterweise gesendet werden sollte?

    Visu: 1-2 Seiten weiter vorne sind Links auf ein Widget von mir was die grundsätzlichen Funktionen abbildet. Die Items sind dann Copy&Paste aus meinen Beispielen.

    Grüße
    Robert

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hallo Robert,

    erstmal besten Dank für dieses Plugin!!! Zwei Fragen:

    Wie bekomme ich Sonderzeichen hin? Ich benötige das °C und die folgenden Varianten funktionieren leider nicht:
    Code:
    #### Display Values
        
    [[Display_Speicher]]
        type = str
        enforce_updates = true
        squeezebox_send = <playerid> show line1:Speichertemperatur line2:{}&degC centered:1 duration:30
        eval = str(int(sh.ow.WP_WW_SP()))
        eval_trigger = og.arbeiten.licht_decke.switch
    #bringt "&degC"
      [[Display_Aussen]]
        type = str
        enforce_updates = true
        squeezebox_send = <playerid> show line1:Aussentemperatur line2:{}°C centered:1 duration:30
    #bringt "!C"
    Frage zwei: Hast Du evtl. eine fertige Visu Seite?

    Grüße

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von henfri Beitrag anzeigen
    Hallo,

    ist OT, aber [...]
    Dir ist bewusst, dass es off-topic ist, aber du postest trotzdem?

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    ist OT, aber hat jemand von euch ein funktionierendes Debian Start-Script für den SB-Server?

    Meins funktioniert nach dem Reboot leider nicht. Ich vermute, dass es versucht den SB-Server zu starten, obwohl noch kein Netzwerk vorhanden ist...

    Code:
    #!/bin/sh
    #
    # $Id$
    #
    # logitechmediaserver   initscript for slimserver.pl
    #                       This file should be placed in /etc/init.d.
    #
    # Original Author: Mattias Holmlund
    #
    # Updated By: Dan Sully, Michael Herger
    
    #
    ### BEGIN INIT INFO
    # Provides:             logitechmediaserver
    # Required-Start:       $all
    # Required-Stop:        $all
    # Should-Start:         $all
    # Should-Stop:          $all
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Startup script for the Logitech Media Server
    # Description:          Logitech Media Server powers the Squeezebox, Transporter and SLIMP3 network music \
    #                       players and is the best software to stream your music to any software MP3 \
    #                       player. It supports MP3, AAC, WMA, FLAC, Ogg Vorbis, WAV and more! \
    #                       As of version 7.7 it also supports UPnP clients, serving pictures and movies too!"
    ### END INIT INFO
    #
    
    set -e
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="Logitech Media Server"
    NAME=squeezeboxserver
    NEWNAME=logitechmediaserver
    DAEMON=/usr/sbin/$NAME
    DAEMON_SAFE=/usr/sbin/${NAME}_safe
    PIDFILE=/var/run/$NEWNAME.pid
    SCRIPTNAME=/etc/init.d/$NEWNAME
    SLIMUSER=$NAME
    PREFSDIR=/var/lib/$NAME/prefs
    LOGDIR=/var/log/$NAME/
    CACHEDIR=/var/lib/$NAME/cache
    CHARSET=utf8
    SLIMOPTIONS=
    
    # Read config file if it is present.
    if [ -r /etc/default/$NEWNAME ]; then
            . /etc/default/$NEWNAME
    elif [ -r /etc/default/$NAME ]; then
            . /etc/default/$NAME
    fi
    
    #
    #       Function that starts the daemon/service.
    #
    d_start() {
            # Use squeezeboxserver_safe to restart the daemon when
            # it dies. This must be done to handle mysql restarts.
            start-stop-daemon --start --quiet \
                    --chuid $SLIMUSER \
                    --pidfile $PIDFILE \
                    --exec $DAEMON_SAFE \
                    --background \
                    --make-pidfile \
                    -- \
                    $DAEMON \
                    --prefsdir $PREFSDIR \
                    --logdir $LOGDIR \
                    --cachedir $CACHEDIR \
                    --charset=$CHARSET \
                    $SLIMOPTIONS
    }
    
    d_start_direct() {
            start-stop-daemon --start --quiet \
                    --chuid $SLIMUSER \
                    --pidfile $PIDFILE \
                    --exec $DAEMON \
                    -- \
                    --pidfile $PIDFILE \
                    --daemon \
                    --prefsdir $PREFSDIR \
                    --logdir $LOGDIR \
                    --cachedir $CACHEDIR \
                    --charset=$CHARSET \
                    $SLIMOPTIONS
    }
    
    #       Function that stops the daemon/service.
    #
    d_stop() {
    
            ## This is a bug in the start-stop-daemon that checks the PID name from the /proc/PID/stat filesystem...
            ## Unfortunately this cuts-off the name of the daemon because its longer now, and then it doesnt get
            ## caught by the start-stop-daemon. The daemon actually reports it as squeezeboxserve instead of
            ## squeezeboxserver_safe.
            start-stop-daemon --oknodo --stop --pidfile $PIDFILE --retry=TERM/30/KILL/5
    }
    
    #
    #       Function that sends a SIGHUP to the daemon/service.
    #
    d_reload() {
            start-stop-daemon --stop --quiet --pidfile $PIDFILE --signal 1
    }
    
    case "$1" in
      start)
            echo -n "Making sure that $DESC is not running first: "
            d_stop
            echo -n "Starting $DESC"
            d_start
            echo "."
            ;;
      stop)
            echo -n "Stopping $DESC"
            d_stop
            echo "."
            ;;
      restart|force-reload)
            #
            #       If the "reload" option is implemented, move the "force-reload"
            #       option to the "reload" entry above. If not, "force-reload" is
            #       just the same as "restart".
            #
            echo -n "Restarting $NAME"
            d_stop
            d_start
            echo "."
            ;;
      *)
            # echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 1
            ;;
    esac
    
    exit 0
    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Ich habe gerade eine leicht verbesserte Version ins GIT hochgeladen, bei der die relativen Werte (+1 beim Springen in Playlist oder -10 bei "time" um zu Spulen) das Abfragen des absoluten Wertes veranlassen. So stimmt der Index wieder (zählt aber immer noch ab '0' - das liegt am LMS und ich weiß nicht ob man das "fixen" sollte!).

    Einen Kommentar schreiben:


  • henfri
    antwortet
    - √ - Neues Plugin: Logitech Squeezebox - Anregungen?

    Probleme hatte ich doch nur mit den Strings/14byte Text?!

    Einen Kommentar schreiben:

Lädt...
X