Ankündigung

Einklappen
Keine Ankündigung bisher.

12299 Squeeze Baustein

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

    Hi

    Ja und der Baustein schreibt auf den Monitor der am HS angeschlossen ist dass er x Sek wartet bevor er die Verbindung wieder aufbaut.

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

    Kommentar


      Zitat von eckerho1 Beitrag anzeigen
      ... schreibt auf den Monitor der am HS angeschlossen ...
      Aaaaah - Monitor = Hardware
      Ich war da auf einer ganz anderen welle - ich hab wohl zuviel mit Monitoring und Virtualisierung zu tun - um an die richtige HW zu denken.

      Am WE werde ich wohl mal drauf achten...

      Gruß
      Thorsten

      Kommentar


        Hi Thorsten,

        die Dinge die ich geschrieben habe siehst Du ohne zusätzliche HW

        Hab nämlich auch keinen dran.

        Gruß Tbi

        Kommentar


          Zitat von ThorstenGehrig Beitrag anzeigen
          Aaaaah - Monitor = Hardware
          Ich war da auf einer ganz anderen welle - ich hab wohl zuviel mit Monitoring und Virtualisierung zu tun - um an die richtige HW zu denken
          Auch ESX hat eine Konsole die man mit eine HW Monitor schauen kann :-))
          Und dann gibts da ja auch noch die Console für die VMs...

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

          Kommentar


            Hi,

            ich bin immer noch am grübeln, ob es nicht doch an uns (HS seilig) liegt, das die Verbindung abbricht.

            Das was mich wundert, ist eben das es nun drei verschiedene Stellen (pro System eine) sind wo es versackt. Das spricht nach Timing und nicht nach Logischem Fehler im Code des SB Servers.

            Jedes System hat eine Parameter (Timeout), ab wann ein Verbindung als "down" angesehen wird.

            Das kann also gut sein, das hier Windows wesentlich tolleranter ist.
            Aber die Linux bzw. NAS eben nicht so.

            Im Code des Bausteins sind eigentlich zuviele Befehlsfolgen hintereinander, das wirkt bockierend und kann die Gegenstelle zu der Annahme treiben, die Verbindung wäre "down". Dann beendet sie diese.

            Ich denke hier müssen mehr Ansagezustände eingeführt werden, wo in der Zwischenzeit die Verbindung bedient werden kann.

            Im Moment wird die Kontrolle für die Zeit der Ansage nicht mehr losgelassen.

            Das halte ich für kritisch.

            Was haltet ihr davon?

            Gruß Tbi

            Kommentar


              Hi tbi

              hier mal eine Version bei der ich auf HS Seite den timeout für die Verbindung setze.

              Schau mal ob die Verbindung noch immer ein Reset macht.

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

              Kommentar


                Hi Holger,

                wir kommen hier

                Code:
                rsock, wsock, esock = select.select([self.__socket],[],[],120)
                zu selten vorbei.

                Da wir hier:

                Code:
                ##            elif cmd.startswith("ansage "):
                ##
                ##                ##
                ##                ## hier ev. noch abfragen ob Ansage noch läuft und dann nur starten wenn sie nicht läuft.
                ##                ##
                ##
                ##                ## Ansage wurde gestartet
                ##                self.ansagelaeuft = 1
                ##                self.ansagetext = cmd.replace('ansage ','')
                ##                ## repeat nur auswerten wenn abgefragt, nicht auch nochmal wenn es auf 0 gesetzt wird für die Ansage
                ##                self.repeat = ['-1']
                ##
                ##                ## Repeat Status des ersten players abfragen (muss vor ansagelaeuft = 1 kommen)
                ##                self.__socket.send(self.playeransagelist[0] + ' playlist repeat ?\n')
                ##
                ##                ## Position im aktuellen Song abfragen
                ##                self.__socket.send(self.playeransagelist[0] + ' time ?\n')
                ##
                ##                ## Repeat auf 0 setzen
                ##                self.__socket.send(self.playeransagelist[0] + ' playlist repeat 0\n')
                ##
                ##                ## Player für Ansage einschalten und auf gewünschte Lautstärke setzen
                ##                ## Mit drei for Schleifen nicht elegant, aber optimales timing für Squeezeserver
                ##                for index, player in enumerate(self.playeransagelist):
                ##                    self.__socket.send(player + ' pause 1\n')
                ##                for index, player in enumerate(self.playeransagelist):
                ##                    self.__socket.send(player + ' power 1\n')
                ##                for index, player in enumerate(self.playeransagelist):
                ##                    self.__socket.send(player + ' mixer volume ' + self.playeransagevolume[index] + '\n')
                ##                      
                ##                ## warten bis alle player laufen
                ##                time.sleep(4)
                ##                ## Ansage starten
                ##                self.__socket.send(self.playeransagelist[0] + ' playlist preview url:file:' + self.__config['ansagepfad'] + cmd.replace('ansage ','') + '\n')
                ####                print self.playeransagelist[0] + ' playlist preview url:file:////' + self.__config['ansagepfad'] + cmd.replace('ansage ','')
                ##
                ##            else:    
                ##                ## Kommando senden
                ##                self.__socket.send(cmd+"\n")
                Deshalb wird der SQ Server davon ausgehen, das nichts mehr abgenommen wird und die Verbindung schliessen.

                zulange drin verweilen.

                Wenn der HS wieder lesen will, stellt er fest, dass die andere Seite den Socket zu gemacht hat.

                Dann wiederum baut der HS die Verbindung wieder neu auf. Das sehen wir ja.

                So sieht es übrigens immer noch aus:

                Code:
                00%3A04%3A20%3A18%3A07%3Aea menustatus ARRAY(0xc96f2a8) add 00%3A04%3A20%3A18%3A
                07%3Aea
                00%3A04%3A20%3A18%3A07%3Aea mixer volume 70
                00%3A04%3A20%3A18%3A07%3Aea prefset server volume 70
                00%3A04%3A20%3A18%3A07%3Aea playlist preview url%3Afile%3A%2F%2F%2F%2Fshare%2FMu
                ltimedia%2FAudio%2Ftest%2FReiner%2Fhi.wav
                00%3A04%3A20%3A18%3A07%3Aea playlist save tempplaylist_0004201807ea silent%3A1
                00%3A04%3A20%3A18%3A07%3Aea playlist play %2F%2Fshare%2FMultimedia%2FAudio%2Ftes
                t%2FReiner%2Fhi.wav
                00%3A04%3A20%3A18%3A07%3Aea playlist stop
                00%3A04%3A20%3A18%3A07%3Aea playlist jump 0  0
                00%3A04%3A20%3A18%3A07%3Aea playlist open file%3A%2F%2F%2Fshare%2FMultimedia%2FA
                udio%2Ftest%2FReiner%2Fhi.wav
                00%3A04%3A20%3A18%3A07%3Aea playlist open file%3A%2F%2F%2Fshare%2FMultimedia%2FA
                udio%2Ftest%2FReiner%2Fhi.wav
                00%3A04%3A20%3A18%3A07%3Aea playlist load_done
                00%3A04%3A20%3A18%3A07%3Aea playlist newsong hi 0
                00%3A04%3A20%3A18%3A07%3Aea playlist newsong hi 0
                00%3A04%3A20%3A18%3A07%3Aea playlist stop
                00%3A04%3A20%3A18%3A07%3Aea playlist preview cmd%3Astop
                00%3A04%3A20%3A18%3A07%3Aea playlist resume tempplaylist_0004201807ea  noplay%3A
                1 wipePlaylist%3A1
                00%3A04%3A20%3A18%3A07%3Aea playlist jump 0  1
                00%3A04%3A20%3A18%3A07%3Aea playlist repeat 0
                00%3A04%3A20%3A18%3A07%3Aea time 25.397
                [B][COLOR=Red]subscribe power%2Cpause%2Cmode%2Cclient%2Cplaylist%2Csync%2Cprefset server[/COLOR][/B] => der Reconnect
                00%3A04%3A20%3A18%3A07%3Aea prefset server snLastSyncUp 1318063546
                00%3A04%3A20%3A18%3A07%3Aea play  [B][COLOR=Red]=> manuell[/COLOR][/B]
                00%3A04%3A20%3A18%3A07%3Aea playlist jump 0
                00%3A04%3A20%3A18%3A07%3Aea playlist open http%3A%2F%2F85.239.108.31%2Fmotorfm
                Mein Vorschlag wäre mal das:

                Code:
                ##                time.sleep(4)
                rauszunehmen. Ich habe eine sehr kurze Ansage in Verwendung nur "Hi" gesprochen.

                oder mal in einen andere Zweig:

                Code:
                ##                time.sleep(10)
                und schauen ob es dann da auch zum reconnect kommt.


                Gruß Tbi

                Kommentar


                  Holger,

                  kannst Du mir das letzte *.py mal geben. Dann kann ich das selbst ausprobieren.

                  Hab mich nun da mal eingelesen, eigentlich simpel Hät ich schon längst machen sollen.

                  Gruß Tbi

                  Kommentar


                    Hi All,

                    Holger hat mir gestern den Code geschickt und heute hab ich mich ran gemacht und nun ist der Bug gefunden.

                    Also, es war diese Schleife:

                    Code:
                    ##                            for player in self.playeransagelist:
                    ##                                ## position in tuple finden
                    ##                                index = self.playername.index(player)
                    ##                                ## Lautstärke zurücksetzen
                    ##                                self.sendcmd(player + ' mixer volume ' + self.playervolume[index])
                    ##                                ## power wenn nötig wieder aus, sonst play wenn nicht pause
                    ##                                if self.playerpower[index]=="0":
                    ##                                    self.sendcmd(player + ' power 0')
                    ##                                elif self.playerpause[index]=="1":
                    ##                                    print "Im PAUSE"
                    ##                                    self.sendcmd(player + ' pause 1')
                    ##                                else:
                    ##                                   self.sendcmd(player + ' mode play')
                    Die hat die exception geschmissen.

                    Richtig ist sie so:

                    Code:
                                                ## lautstärke und powerstatus zurücksetzen, wenn power 1 und pause 0 dann play
                                                for index, player in enumerate(self.playeransagelist):
                                                    ## Lautstärke zurücksetzen
                                                    self.sendcmd(player + ' mixer volume ' + self.playervolume[index])
                                                    ## power wenn nötig wieder aus, sonst play wenn nicht pause
                                                    if self.playerpower[index]=="0":
                                                        self.sendcmd(player + ' power 0')
                                                    elif self.playerpause[index]=="1":
                                                        self.sendcmd(player + ' pause 1')
                                                    else:
                                                        self.sendcmd(player + ' mode play')
                    Es gibt aber noch ein Problem mit dem Pause Status, deshalb habe ich das hier:

                    Code:
                    ##                                    elif befehl=="pause":
                    ##                                        self.playerpause.pop(index)               ## alten wert an Stelle Index löschen
                    ##                                        self.playerpause.insert(index,wert)    ## wert einsetzen
                    erstmal auskommentiert. Ich denke das ist durch die Einführung der Pause wärend der Ansage gekommen. Also im Moment wird nach der Ansage immer weiter gespielt oder die Player waren vorher schon aus. Dann werden sie nach der Ansage auch wieder ausgeschaltet.

                    Mein Eindruck ist noch, dass nicht richtig das time funktioniert. Also noch nicht richtig an die richtige Stelle im Lied zurück gesprungen wird.

                    Jedenfalls gibt es nun keine Reconnects mehr

                    Aber eins ist nun klar es geht und beliebig oft hintereinander. Und die Musik spielt wieder. Ob nun IP-Radio oder eigene Musik
                    Und wenn der Player vorher aus war, ist er nach der Durchsage auch wieder aus.

                    Viel Spaß beim Probieren.

                    Gruß Tbi
                    Angehängte Dateien

                    Kommentar


                      Hier:

                      AT&T Natural Voices® Text-to-Speech Demo

                      Kann man sich ürigens genial einfach Ansage sprechen lassen ... und abspeichern .

                      Einfach die Sprache auswählen ... und save target.

                      Viel Spaß

                      Tbi

                      Kommentar


                        Hallo Tobias

                        Danke für den Hint.
                        Da war wirklich ein Fehler drin.

                        Richtig muss es allerdings heissen
                        Code:
                        for indextemp, player in enumerate(self.playeransagelist):
                            index = self.playername.index(player)
                        Der indextemp ist damit die Syntax zufrieden ist.
                        Wir müssen dann aber noch die Position des Players im Tuple der gesamten Liste suchen.
                        So wie du es gemacht hast wird der Index in der Liste der Player für die Ansage gesucht.
                        Darum auch das seltsame verhalten mit Power, Pause usw.

                        Gruss, Holger

                        Edit: Habs nochmal bei python nachgelesen. Ist mir nicht klar warum es bei Tobias mit
                        Code:
                        for index, player in enumerate(self.playeransagelist):
                        kein reset mehr gibt.
                        Kann mir das wer erklären?
                        ECMACOM GmbH
                        Konzeption, Planung, Implementation, Unterhalt
                        www.ecmacom.ch
                        www.knxshop4u.ch

                        Kommentar


                          Hi,
                          @tbi: guter job. Du und Holger - ihr schaukelt das ding schon :-)
                          Danke!

                          @tbi2: Zum Thema Sprachausgabe / TTS erzeugen hab ich hier was zusammengeschrieben:
                          https://knx-user-forum.de/sonstiges-...er-google.html
                          Die Sprache finde ich persönlich besser.
                          Wenn man das jetzt noch mit den Fähigkeiten von Siri kombinieren würde ... träum :-)

                          @All: wie funktioniert eigentlich der Reset?
                          Ich habe gerade im Betrieb die config geändert (Pfad für die Ansagen) - und er wird nicht angenommen.
                          Jetzt wollte ich reseten (habe "reset" und 1 auf den Reseteingang gelegt) - Antwort auf dem Monitor (dem richtigen ) :
                          "KNXUF_name not defined" oder so ähnlich.
                          Ich habe die Version von tbi gerade am laufen...

                          Gruß
                          Thorsten

                          Kommentar


                            Hallo Thorsten

                            Reset baut nur die Verbindung zum Squeezeserver neu auf.

                            Update der Config im Betrieb ist nicht unterstützt.

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

                            Kommentar


                              Hallo,

                              ich habe heute von experte 2.5 auf 2.7 gewechselt und in dem Zug den Bausstein von Version 1.01 auf 2.16 umgestellt um mal die Ansagen zu testen.Leider funktioniert mit der Version 2.16 überhaupt keine Steuerung mehr.Nehme ich den Baustein wieder in Version 1.01 funktioniert wieder alles. Ich habe sonst nix geändert. Der SQ-Server läuft mit Version 7.6.1 auf WIN XP Embedded.
                              Was kann ich hier mal noch versuchen???

                              Danke und Gruß
                              Thorsten

                              Kommentar


                                Hallo Thorsten

                                Versuch mal den 2.15, der sollte für die "normalen" Funktionen auf jeden Fall tun.

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

                                Kommentar

                                Lädt...
                                X