Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

    #46
    Nein, ich denke das ist außerhalb des Zuständigkeitsbereichs eines Plugins und fällt in die Kategoerie "muss-sich-der-User-was-überlegen". Das kann z.B. eine kleine Logik sein, die generell alle Strings empfängt und kleinhackt. Denn das Plugin kann sich ja nicht anders verhalten, nur weil (unter anderem!!) eine KNX GA mit im Item hängt. Ich danke Marcus und dem lieben Gott, dass (obwohl ich KNX über alles favorisiere) sh.py technologieagnostisch ist.

    Das er den anderen Text nicht sendet, kann entweder daran liegen, dass das KNX-Plugin sich schon verschluckt hat (glaube ich eher weniger) oder an der Encodierung des Titels, die z.B. " " mit %20 repräsentiert. Das ist aber auch unerheblich, ob es vielleicht bei 5 Titeln mit dem KNX funktioniert wenn die restlichen 99 eh nicht gehen.

    Kommentar


      #47
      Zitat von Robert Beitrag anzeigen
      Nein, ich denke das ist außerhalb des Zuständigkeitsbereichs eines Plugins und fällt in die Kategoerie "muss-sich-der-User-was-überlegen".
      Da wollte ich gerade widersprechen, bis ich
      sh.py technologieagnostisch ist
      daran dachte und es dann las ;-)

      Das er den anderen Text nicht sendet, kann entweder daran liegen, dass das KNX-Plugin sich schon verschluckt hat (glaube ich eher weniger) oder an der Encodierung des Titels, die z.B. " " mit %20 repräsentiert. Das ist aber auch unerheblich, ob es vielleicht bei 5 Titeln mit dem KNX funktioniert wenn die restlichen 99 eh nicht gehen.
      Na, ich denke, über KNX sollte dann einfach ein 14 Byte String kommen. Was anderes kann ja eh kein Gerät anzeigen. Dazu müsste ich dann -irgendwann- eine Kürz-Logik bauen.

      Was sagst du denn zu den %20. Sollten die nicht decodiert werden?

      Gruß,
      Hendrik

      Kommentar


        #48
        Zitat von henfri Beitrag anzeigen
        Na, ich denke, über KNX sollte dann einfach ein 14 Byte String kommen.
        Hier ist dein Auftritt! Debug das KNX-Plugin und guck ob man da was machen kann. ;-)

        Zitat von henfri Beitrag anzeigen
        Was anderes kann ja eh kein Gerät anzeigen.
        Doch, meine smartVISU - wunderbar! (und die macflei etc.)

        Zitat von henfri Beitrag anzeigen
        Dazu müsste ich dann -irgendwann- eine Kürz-Logik bauen..
        Ja, oder eben gucken wo es hakt und ggfl. das KNX-Plugin erweitern. Dann haben wir alle was davon.

        Zitat von henfri Beitrag anzeigen
        Was sagst du denn zu den %20. Sollten die nicht decodiert werden?
        Nein.

        Kommentar


          #49
          Zitat von Robert Beitrag anzeigen
          Hier ist dein Auftritt! Debug das KNX-Plugin und guck ob man da was machen kann. ;-)
          Du leidest an extremer Fremd-Überschätzung ;-) Aber im Winter vielleicht.



          Doch, meine smartVISU - wunderbar! (und die macflei etc.)
          Ersteres ist ja kein KNX-Gerät, sondern bekommt die Daten per IP, oder?
          Und was ist letzteres?


          (decode von %20 im SB-Plugin) Nein.
          Warum? die Codierung ist doch nicht nötig in SH.py

          Gruß,
          Hendrik

          Kommentar


            #50
            Zitat von henfri Beitrag anzeigen
            Ersteres ist ja kein KNX-Gerät, sondern bekommt die Daten per IP, oder?
            Und was ist letzteres?
            Das mit "macflei" bezieht sich wohl auf mich.
            Ja, bei mir aberbeitet das Plugin auch wie es soll.
            Ich denke auch das das einbinden der KNX-Befehle (send, listen, etc.) in Verbindung mit dem supporteten Image + RasPi hinhaut.
            Das ist ja auch einer der Vorteile bei smarthome.py . Eine Zeile mehr im funtionierenden item (+Plugin) und schon bekommt man Aktionen auf dem Bus realisiert.
            Werde es gerne am Wochenende testen und (wahrscheinlich) bestätigen.
            Aber das schöne an den Plugins ist ja dies, das wenn einem was nicht gefällt, man ja die Möglichkeit hat es anders zu machen.

            Kommentar


              #51
              Zitat von macflei Beitrag anzeigen
              Werde es gerne am Wochenende testen und (wahrscheinlich) bestätigen.
              Es ist so wie ich vermutet habe. Funktioniert 1a.
              Hab mal testweise eine geschaltete Steckdose eingebunden.

              Code:
                [[Power]]
                  type = bool
                  visu = yes
                  squeezebox_send = <playerid> power {}
                  squeezebox_recv = <playerid> prefset server power
                  squeezebox_init = <playerid> power  
                      knx_dpt = 1
                      knx_listen = 0/0/67
                      knx_send = 0/0/67

              Kommentar


                #52
                - √ - Neues Plugin: Logitech Squeezebox - Anregungen?

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

                Kommentar


                  #53
                  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!).

                  Kommentar


                    #54
                    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

                    Kommentar


                      #55
                      Zitat von henfri Beitrag anzeigen
                      Hallo,

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

                      Kommentar


                        #56
                        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
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          #57
                          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

                          Kommentar


                            #58
                            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.
                            Umgezogen? Ja! ... Fertig? Nein!
                            Baustelle 2.0 !

                            Kommentar


                              #59
                              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

                              Kommentar


                                #60
                                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

                                Kommentar

                                Lädt...
                                X