Ankündigung

Einklappen
Keine Ankündigung bisher.

12299 Squeeze Baustein

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

    Zitat von MatthiasS Beitrag anzeigen
    Über den Kameraswitcher geht das auch mit einer Variable! Ich beschreibe später mal, wie das funktioniert.
    Hallo Matthias,

    Ich versuche im Moment ebenfalls die Cover von verschiedenen Playern darzustellen und wäre sehr dankbar für oben genannte Beschreibung.

    Wenn ich mit den /current/Cover.jpg?player=x Pfaden arbeite, funktioniert die Anzeige nur im HSClient. In der Browser Visu werden leider nur identische Bilder angezeigt. Gibt es hier einen Tipp?

    Gruß,
    Sebastian

    Kommentar


      Zitat von thehansa Beitrag anzeigen
      Schade...
      Mein Problem mit den Versionen nach 2.28 bleibt...
      Der LMS geht beim connect in eine Schleife.

      ...
      select(64, [4 8 9 12 22 30 31 34 35 36 37 38 39 40 41 42 43 44 45 46 47],
      Hi,

      dasselbe Problem hab ich leider auch mit der aktuellen Version... :-( :-(
      Bei mir läuft der Logitech Media Server 7.7.2 - sollte man denn einen älteren verwenden? Habe den 2.28 bei mir am Laufen, der funktioniert soweit, hängt sich nur alle paar Tage mal auf mit Socket Problemen... :-(

      Woran kann das mit der Schleife liegen?

      LG Stefan

      10.02.2013 13:19:54 (44)
      File "/hs/compile/hs_logik.py", line 232, in calc
      File "formula", line 0, in ?
      File "[12299_Squeeze]", line 363, in sendcmd
      File "/hs/elinos_bin/lib/python2.4/socket.py", line 136, in _dummy
      error: (9, 'Bad file descriptor')
      [5012L, 12299L, 0L, 'EC[4]', 'SN[1].sendcmd(EN[4])', '', 0L, 0L, 0L, 0L]

      Kommentar


        Hi all,

        da der gute alte v2.28 bei mir nun alle zwei Tage den connect verliert, muss ich mir doch nochmal das Problem mit der "Schleife im LMS" (oder wahrscheinlich eher dem nonsense-ping-pong zwischen LMS 7.7.3 und der v3.37) ansehen.

        Irgenwie muss es doch möglich sein herauszubekommen, wo es hängt.

        1. Da SvStefan das Problem mit der 7.7.2 nachvollziehen kann, wird es nicht spezifisch für den 7.7.3 sein. Beide LMS Versionen laufen ja prinzipiell mit der v2.28. Vielleicht gibt es Unterschiede zwischen der Win und der Linux Version...
        2. Der Strace auf dem LMS zeigt einen funktionierenden login, gefolgt von einem (m. E. korrekten init und subscribe):

        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 0}) = 1 (out [37], left {0, 0})
        sendto(37, "login hansa ******\n", 19, 0, NULL, 0) = 19
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 45296}) = 1 (out [37], left {0, 45286})
        sendto(37, "players 0 15 count%3A5 playerind"..., 1127, 0, NULL, 0) = 1127
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 44814}) = 1 (out [37], left {0, 44787})
        sendto(37, "syncgroups\n", 11, 0, NULL, 0) = 11
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 44385}) = 1 (out [37], left {0, 44376})
        sendto(37, "subscribe power%2Cpause%2Cmode%2"..., 76, 0, NULL, 0) = 76
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 43848}) = 0 (Timeout)
        read(28, 0x7fff4ce16e60, 8192) = -1 EAGAIN (Resource temporarily unavailable)
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 999930}) = 1 (in [37], left {0, 950880})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 950339}) = 1 (out [37], left {0, 950333})
        sendto(37, "\n", 1, 0, NULL, 0) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 950114}) = 1 (in [37], left {0, 595827})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0

        Auch die weitere Meldung der Devices scheint vernünftig:

        read(37, "00%3A04%3A20%3A17%3Ad1%3A0b powe"..., 4096) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 595055}) = 1 (out [37], left {0, 595035})
        sendto(37, "00%3A04%3A20%3A17%3Ad1%3A0b powe"..., 36, 0, NULL, 0) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 594783}) = 1 (in [37], left {0, 594778})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "00%3A04%3A20%3A17%3Ae5%3Aec powe"..., 4096) = 534
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 592530}) = 1 (out [37], left {0, 592525})
        sendto(37, "00%3A04%3A20%3A17%3Ae5%3Aec powe"..., 36, 0, NULL, 0) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 592312}) = 1 (out [37], left {0, 592307})
        sendto(37, "00%3A04%3A20%3A29%3A3f%3A14 powe"..., 36, 0, NULL, 0) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 592126}) = 1 (out [37], left {0, 592122})
        sendto(37, "00%3A04%3A20%3A2c%3A08%3A3e powe"..., 36, 0, NULL, 0) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 591943}) = 1 (out [37], left {0, 591939})
        sendto(37, "00%3A04%3A20%3A29%3A40%3A26 powe"..., 36, 0, NULL, 0) = 36
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 591739}) = 1 (out [37], left {0, 591735})
        sendto(37, "00%3A04%3A20%3A17%3Ad1%3A0b mixe"..., 44, 0, NULL, 0) = 44
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 591537}) = 1 (out [37], left {0, 591505})
        sendto(37, "00%3A04%3A20%3A17%3Ae5%3Aec mixe"..., 43, 0, NULL, 0) = 43
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 591344}) = 1 (out [37], left {0, 591340})
        sendto(37, "00%3A04%3A20%3A29%3A3f%3A14 mixe"..., 43, 0, NULL, 0) = 43
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 591158}) = 1 (out [37], left {0, 591154})
        sendto(37, "00%3A04%3A20%3A2c%3A08%3A3e mixe"..., 44, 0, NULL, 0) = 44
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590965}) = 1 (out [37], left {0, 590961})
        sendto(37, "00%3A04%3A20%3A29%3A40%3A26 mixe"..., 43, 0, NULL, 0) = 43
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590779}) = 1 (out [37], left {0, 590775})
        sendto(37, "00%3A04%3A20%3A17%3Ad1%3A0b mode"..., 38, 0, NULL, 0) = 38
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590596}) = 1 (out [37], left {0, 590592})
        sendto(37, "00%3A04%3A20%3A17%3Ae5%3Aec mode"..., 38, 0, NULL, 0) = 38
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590418}) = 1 (out [37], left {0, 590414})
        sendto(37, "00%3A04%3A20%3A29%3A3f%3A14 mode"..., 38, 0, NULL, 0) = 38
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590240}) = 1 (out [37], left {0, 590228})
        sendto(37, "00%3A04%3A20%3A2c%3A08%3A3e mode"..., 38, 0, NULL, 0) = 38
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 590060}) = 1 (out [37], left {0, 590056})
        sendto(37, "00%3A04%3A20%3A29%3A40%3A26 mode"..., 38, 0, NULL, 0) = 38
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 589873}) = 1 (in [37], left {0, 503965})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096) = 1

        Danach beginnt das Problem:

        LMS und v3.37 senden sich gegenseitig "\n" (im wireshark Data: 0a):
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 503397}) = 1 (out [37], left {0, 503391})
        sendto(37, "\n", 1, 0, NULL, 0) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 503191}) = 0 (Timeout)
        read(28, 0x7fff4ce16e60, 8192) = -1 EAGAIN (Resource temporarily unavailable)
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 999928}) = 0 (Timeout)
        read(28, 0x7fff4ce16e60, 8192) = -1 EAGAIN (Resource temporarily unavailable)
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 999926}) = 1 (in [37], left {0, 949072})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 948189}) = 1 (out [37], left {0, 948178})
        sendto(37, "\n", 1, 0, NULL, 0) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 947665}) = 1 (in [37], left {0, 947617})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 946927}) = 1 (out [37], left {0, 946922})
        sendto(37, "\n", 1, 0, NULL, 0) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 946475}) = 1 (in [37], left {0, 946466})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [37], NULL, {0, 945639}) = 1 (out [37], left {0, 945630})
        sendto(37, "\n", 1, 0, NULL, 0) = 1
        select(64, [4 8 9 12 29 31 32 33 34 35 36 37 38 39 40 43 45 49], [], NULL, {0, 945110}) = 1 (in [37], left {0, 945101})
        getpeername(37, {sa_family=AF_INET, sin_port=htons(32829), sin_addr=inet_addr("192.168.0.111")}, [16]) = 0
        read(37, "\n", 4096)



        In der Py der v3.37 findet sich:

        ## jetzt auf Daten warten
        while self.__TCPisrunning:
        try:
        ## Warten auf Daten
        try:

        self.sock.send("\n")
        r,w,e = select.select([self.sock],[],[self.sock],2)

        Ich frage mich, ob das das Problem auslöst?

        Den SourceCode von der 2.28 habe ich nicht, so dass ich auch nicht sehen kann, ob das da auch schon so war. @Holger hast Du den noch?

        Schaut man sich den Strace bei einem Connect mit der v2.28 an ist der login/init/subscribe Vorgang identisch. Nur dieses senden von "\n" taucht da nicht auf.

        Kann bitte ein Pythonversteher mal gucken, ob man das nicht doch lösen kann??

        Gruß
        Hansa

        Kommentar


          wie geht es denn da nach dem select weiter?

          das senden von dem \n macht höchstens vor der While einen Sinn (wenn überhaupt) ansonsten wird ja bei jedem timeout ein LF gesendet.
          Nils

          aktuelle Bausteine:
          BusAufsicht - ServiceCheck - Pushover - HS-Insight

          Kommentar


            Hallo Nils,

            ich hab den SourceCode, so wie er im Downloadbereich steht, nochmal angehängt.

            Die Zeilen sehen so aus:
            Code:
            while self.__TCPisrunning:
                                    try:
                                        ## Warten auf Daten
                                        try:
            
                                            self.sock.send("\n")
                                            r,w,e = select.select([self.sock],[],[self.sock],2)
                                        except:
                                            ###DEBUG###__import__('traceback').print_exc(file=__import__('sys').stdout)
                                            break
                                        ## Daten auf dem Socket
                                        if self.sock in r:
                                            try:
                                                ## Daten lesen und an Parser schicken
                                                data = self.sock.recv(2048)
                                                if not data:
                                                    break
                                                    
                                                for temp in data.splitlines():
                                                    if len(temp) > 0:
                                                        self.__parse(temp)
                                                    
                                            except socket.error, EOFError:
                                                break
                                            
                                            except:
                                                ###DEBUG###__import__('traceback').print_exc(file=__import__('sys').stdout)
                                                break
                                        else:
                                            if r:
                                                ###DEBUG###print "Wrong Socket from select"
                                                break
                                            
                                        ## Fehler auf dem Socket
                                        if e:
                                            ###DEBUG###print "Exception received"
                                            break
                                    except:
                                          ###DEBUG###__import__('traceback').print_exc(file=__import__('sys').stdout)
                                          break
                                  
                                ## Log wenn isrunning aber trotzdem hier
                                if self.__TCPisrunning:
                                    self.ConnectLog('connectionlost')
            Danke fürs helfen!
            Angehängte Dateien

            Kommentar


              Er rennt! Endlich.

              Habe 'nur' den
              self.sock.send("\n")
              auskommentiert und den Baustein mittels
              C:\Python24\python.exe C:\Users\hansa\Desktop\12299_Squeeze_HS3-4_V2.37.py
              neu übersetzt.

              Kein Dunst, ob das irgendwelche Nebenwirkungen hat... bisher sieht es aber gut aus.
              Hätte ich den mit einer anderen Python Version übersetzten sollen?
              Bei mir läuft er noch unter dem HS 2.7.

              Gruß
              Hansa
              Angehängte Dateien

              Kommentar


                Hallo

                Da der Experte 4 nun da ist..

                Hier die V3.0 mit komplett überarbeiteter Kommunikation.
                Läuft nur auf HE 4 oder HS mit Experte 4.

                Bitte mal testen

                Gruss, Holger
                Angehängte Dateien
                ECMACOM GmbH
                Konzeption, Planung, Implementation, Unterhalt
                www.ecmacom.ch
                www.knxshop4u.ch

                Kommentar


                  Hi
                  ist der Baustein kompatibel zr Version 2.32 - oder muss ich was Anpassen?

                  Gruß
                  Thorsten

                  Kommentar


                    Hallo Thorsten

                    Der Eingang um den Baustein zu sperren ist weg. Befehlssatz noch wie gehabt.

                    Gruss, Holger
                    ECMACOM GmbH
                    Konzeption, Planung, Implementation, Unterhalt
                    www.ecmacom.ch
                    www.knxshop4u.ch

                    Kommentar


                      Hallo welcher ist den für den HS3 mit Experte 4 der richtige?
                      www.heselbacher-hof.de

                      Kommentar


                        Hi

                        Die Version 3.0.
                        Liegt etwas weiter oben hier im Thread.

                        Gruss, Holger
                        ECMACOM GmbH
                        Konzeption, Planung, Implementation, Unterhalt
                        www.ecmacom.ch
                        www.knxshop4u.ch

                        Kommentar


                          Hallo Holger, den habe ich versucht aber dann kommt der Fehler: Die Definition des Baustein 12299 ist ungültig. Wie gesagt ich habe einen HS3.
                          Gruß
                          Jochen
                          www.heselbacher-hof.de

                          Kommentar


                            Dann hattest du schon den alten drin und hast nur den neuen Baustein ins logic Verzeichnis kopiert.

                            Alten Bausten im Logikeditor des Experten löschen Neuen neu anlegen und dann sollter der Fehler weg sein.

                            Gruss, Holger
                            ECMACOM GmbH
                            Konzeption, Planung, Implementation, Unterhalt
                            www.ecmacom.ch
                            www.knxshop4u.ch

                            Kommentar


                              Supi Holger vielen dank genau so war es hatte den alten drin und habe den neuen nur reinkopiert. Vielen vielen Dank!!!
                              Gruß
                              Jochen
                              www.heselbacher-hof.de

                              Kommentar


                                Leider läuft er bei mir nicht. Früher musste ich immer nach dem Projektübertragen einen Reset des Bausteines machen und dann der lief er. Ich habe im HS Monitor geschaut. Bei XML Out kommen keine Daten raus. Bei Systemlog XML kommt was. Im Telnet zeigt er auch nichts an. Habe ich was fasch gemacht? Muss ich den Baustein irgendwie starten?
                                www.heselbacher-hof.de

                                Kommentar

                                Lädt...
                                X