Ankündigung

Einklappen
Keine Ankündigung bisher.

12299 Squeeze Baustein

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

    Hallo Holger,

    wenn Du die Kontrolle wieder lostläßt, dann hast Du das Problem gleich mit erschlagen.

    Es kann ja nur zwei Scenarien geben, entweder alle die eine Ansage spielen sind Synchron. Dann müste man diese Synchronisieren und eine einzige Ansage spielen ODER es alle sind nicht synchron. Dann kann man die Ansagen auch nacheinander rausschicken.

    Dann hat jeder Ansageplayer seinen eigenen Zustand, der dann weiter bearbeitet wird.

    Das ist so, wie wenn der Tennis Lehrer gehen seine drei Schüler gleichzeitig spielt. Er muß immer wissen, von wem der Ball kommt und den wieder zu dem Schüler zurückspielen.

    Vieleicht wird es nun klar, was ich meine.

    Viele Grüsse

    Tbi

    Kommentar


      Hallo Tobias

      Es geht hier nicht um die Abfolge mehrerer Player. Dazu gibts verschiedene Varianten und die tun soweit wohl auch.

      Das Timing der einzelnen Befehle die während einer Ansage ablaufen ist aber wichtig. Hier muss das Delay stimmen.

      Um bei deinem Beispiel zu bleiben. Wen ich sofort nachdem ich den Ball geworfen habe aushole dann hat der Ball beim Abschag noch nicht die richtige Höhe und ich haue daneben.

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

      Kommentar


        Zitat von eckerho1 Beitrag anzeigen
        Um bei deinem Beispiel zu bleiben. Wenn ich sofort nachdem ich den Ball geworfen habe aushole dann hat der Ball beim Abschag noch nicht die richtige Höhe und ich haue daneben.
        Es ist wie immer, der Vergleich hinkt.

        Denn Du hast ja eine Eingangswarteschlange und kannst auf jeden ball genau reagieren.

        Wenn Du also zu schnell weiter schlägst, must du eben mehr gedult haben. Das heißt bei uns hier, erst weiterschlagen, wenn der LMS auch so weit ist. Welches Meldung kommt als letztes davor ? Kannst Du nicht einen oder mehrer Zwischenzustande einbauen ? Dann reagierst Du erst, wenn der LMS so weit für den Player ist.

        Soweit ich mich erinnere, schickst Du bei ansagestatus==2 viele Befehle raus, ohne zu schauen was beim LMS passiert. Hier müssen mehrere Zwischenzustände her. Dann kriegst Du auch immer mit, wieweit der LMS ist. Da braucht es dann keine Delays, mehr.

        Um bei dem Beispiel zu bleiben. Du spielst auf die drei Tennisschüler 10 Bälle, wie eine Wurfmaschine. Nun hast Du ein Delay eingebaut, das kann mal stimmen oder mal nicht. Richtig macht es der Tennislehrer, wenn er jedem Schüler nur einen Ball zuspielt und dann wartet bis der nächste Ball kommt.

        Vielleicht können hier die vom LMS geechoten Befehle helfen. Im Moment werden die ja einfach weg gedrückt. Du weist, was ich meine ?

        Viele Grüsse

        Tbi

        Kommentar


          Hallo Tobias

          Das Problem ist, dass der LMS die Befehle bestätigt bevor der Player sie wirklich abgearbeitet hat. Wenn dann schon der Nächste Befehl kommt, dann führt der Player diese nicht mehr richtig aus.

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

          Kommentar


            Mmmh,

            wenn das so ist, kann man das nicht mitbekommen. Aber bist Du dir da sicher ?

            Denn der Code, so wie er heute ist, kriegt das ja nicht mit. Hier sind nur "
            sndcmd"
            .

            Im ansagestatus==2 werde alle Befehle nur einfach rausgeschickt, nun mit Delay etwas gebremst. Aber wie es dem Player geht, kriegt der Baustein hier nicht mit.

            Code:
                                    elif "playlist stop" in recline and self.ansagelaeuft==2:
                                        self.sendcmd(self.playeransagelist[0] + ' playlist preview cmd:stop')
                                            
                                        ## repeat modus zurücksetzen
                                        self.sendcmd(self.playeransagelist[0] + ' playlist repeat ' + self.repeat[0])
                                        
                                        ## hier alle player die eingeschaltet sind und nicht pause hatten auf pause 0 setzen.
                                        for indexnum, power in enumerate(self.playerpower):
                                            try:
                                                if power == "1" and self.playerpause[indexnum] == "0":
                                                    self.sendcmd(self.playername[indexnum] + ' pause 0')
                                            except:
                                                pass
            
            
                                            
                                        ## lautstärke und powerstatus zurücksetzen
                                        for indextemp, player in enumerate(self.playeransagelist):
                                            try:
                                                index = self.playername.index(player)
                                                ## Lautstärke zurücksetzen
                                                self.sendcmd(player + ' mixer volume ' + self.playervolume[index])
                                                ## self.sendcmd(player + ' mode play')
                                                
                                                if self.playerpause[index]=="0" or self.playerpower[index]=="0":
                                                    self.sendcmd(player + ' mode play')
                                                    
                                                ## pause wenn nötig wieder ein
            ##                                    if self.playerpause[index]=="1":
            ##                                        ## hier muss etwas gewartet werden bis der vorherige Befehl greift
            
            ##                                        time.sleep(3 * self.ansagedelayfaktor)                                   
            ##                                        self.sendcmd(player + ' pause 1')
            ##                                    ## power wenn nötig wieder aus
                                                if self.playerpower[index]=="0":
                                                    ## hier muss etwas gewartet werden bis der vorherige Befehl greift
            
                                                    time.sleep(2 * self.ansagedelayfaktor)         
                                                    self.sendcmd(player + ' power 0')
            
            
                                                
                                                ## Hier auch noch alle anderen Player die vorher liefen mit mode Play 
            
                                            ## z.B: wenn player nicht in Liste war
                                            except:
                                                self.log('Ansage: Player ' + player + ' nicht in Liste','warning')
                                                
                                        
                                        ##time zurücksetzen (auf zuvor abgespielte Zeit springen)
                                        try:
                                            time.sleep(0.5 * self.ansagedelayfaktor)
                                            self.sendcmd(self.playeransagelist[0] + ' time ' + self.position[0])
                                        except:
                                            pass
                                            
                                                
                                        
                                            
                                        ## hier alle player die eingeschaltet sind und nicht pause hatten auf pause 0 setzen.
                                        for indexnum, power in enumerate(self.playerpower):
                                            try:
                                                if power == "1" and self.playerpause[indexnum] == "0":
                                                    self.sendcmd(self.playername[indexnum] + ' pause 0')
                                            except:
                                                pass
            
                                        
                                        ## Ansage beendet
                                        self.sendout(3,0)
                                        self.ansagelaeuft = 0
            Gruß Tbi

            Kommentar


              Eingang mit üngültigem Fixwert belegt

              Hallo,

              ich wollte gerade den Baustein von V2.28 auf V2.30 updaten, bekomme dann aber leider im Experten die Meldung: Mit ungültigem Fixwert belegt.
              Wo liegt mein Fehler?

              Danke,
              Sebastian

              Kommentar


                Lösche den Baustein - und füge ihn neu ein.
                Weil die Anzahl der Eingänge sich verändert hat - kriegt der Experte ein Problem...

                Gruß
                T

                Kommentar


                  Das war ja einfach.

                  Vielen Dank
                  Sebastian

                  Kommentar


                    Da hier ja die Squeezebox-Profi´s sind: könnt ihr mal einen Blick auf mein Problem werfen? -> https://knx-user-forum.de/gebaeudete...-new-post.html
                    Danke vielmals!
                    Gruss aus Radevormwald
                    Michel

                    Kommentar


                      Moin,

                      seit gestern habe ich ein gravierendes Problem mit dem Baustein.
                      Habe festgestellt, das die Steuerung nicht funktioniert. Nach ein wenig rumprobieren habe ich mal auf den Monitor vom HS geschaut.

                      Hier steht z. B. die folgende Meldung:

                      CMD: xx:xx:xx:xx:xx:xx power 1
                      File "/hs/compile/hs_logik.py", line 232, in calc
                      File "formula", line 0, in ?
                      File "<12299_Squeeze>", line 402, in sendcmd
                      AttributeError: KNXUF_Squeeze instance has no attribute 'sock'
                      [5012L, 12299L, 0L, 'EC[4]', 'SN[1].sendcmd([4])', '', 0L, 0L, 0L, 0L]

                      Ich deute diese Meldung so, dass der Baustein keine Verbindung zum Squeeze-Server hat

                      Ich habe dann folgendes unternommen:

                      1. reset an E3 -> keine Wirkung
                      2. reset an E4 -> keine Wirkung
                      3. Neustart HS ohne Änderung -> keine Wirkung
                      4. Neustart Squeeze-Server -> keine Wirkung
                      5. Neustart HS ohne Änderung -> keine Wirkung
                      6. Änderung Baustein von 2.20 auf 2.04 -> keine Wirkung
                      7. Neustart Squeeze-Server -> keine Wirkung
                      8. Änderung Baustein von 2.04 auf 2.30 -> keine Wirkung
                      9. Neustart HS ohne Änderung -> plötzlich kamen innerhalb von 10 min über 100.000 leere Telegramme aus A3
                      10. Neustart HS -> alles funktioniert

                      Insgesamt also gelöst, aber keine Ahnung was da los war. Eine Änderung am Squeeze-Server habe ich nicht gemacht.

                      Heute morgen wurde ich pünktlich geweckt, also alles gut!

                      Heute Abend komme ich nach hause und nichts geht; Anzeige am HS wieder genauso wie gestern Abend.

                      Könnt ihr damit was anfangen?

                      VG,
                      Mucki

                      Kommentar


                        Hallo Mucki

                        Die Meldung auf dem HS hast du richtig interpretiert.

                        0 auf E5 und dann wieder eine 1 auf E5 baut die Verbindung neu auf.
                        reset an E4 gibts nicht mehr.

                        Wenn aber die HS Neustarts das Problem nicht immer lösen vermute ich mal ein Netzwerk- oder Squeeze Server Problem.

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

                        Kommentar


                          Moin,

                          ich bin kurz vor der Vollendung meines ersten erwähnenswerten Bausteins

                          Genau genommen sind das eher zwei Bausteine in einer Hülle.
                          1. Die Eingänge geben über A1 den Befehl an den Baustein von Holger raus.
                          2. Die Ausgänge ab A3 geben die Daten raus, die aus dem 12299 kommen.

                          Der Baustein ist somit als Ergänzung zum 12299 gedacht um eine einfache Steuerung und Infoausgabe zu schaffen.

                          Bevor ich den Baustein hochlade, möchte ich erst noch ein paar Tests machen. Weiterhin will ich mir noch die Funktionsvorlage von Scholli anschauen und ggf. den Baustein noch anpassen um hier eine direkte Anbindung zu ermöglichen.

                          Erstmal würde ich aber noch gerne erfahren, ob ich aus eurer Sicht noch etwas Grobes vergessen habe.

                          VG,
                          Mucki

                          P.S. ne Doku sollte ich vermutlich auch noch erstellen
                          Angehängte Dateien

                          Kommentar


                            Hallo Holger,

                            das ist ja schon mal ein Ansatz.
                            Ich habe immer nur eine 1 an E5 geschickt. Ich werd's dann mal mit der 0 und 1 probieren.

                            Zitat von eckerho1 Beitrag anzeigen
                            reset an E4 gibts nicht mehr.
                            -> das hab ich wohl verpasst

                            VG,
                            Mucki

                            Kommentar


                              Zitat von MuckiLegden Beitrag anzeigen
                              Moin,

                              ich bin kurz vor der Vollendung meines ersten erwähnenswerten Bausteins

                              Genau genommen sind das eher zwei Bausteine in einer Hülle.
                              1. Die Eingänge geben über A1 den Befehl an den Baustein von Holger raus.
                              2. Die Ausgänge ab A3 geben die Daten raus, die aus dem 12299 kommen.
                              Wenn du in einem Baustein Eingang ud Ausgang des 12299 anhängst könnte dein Problem auch von einem Loop kommen den du da unabsichtlich gebastelt hast.

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

                              Kommentar


                                Zitat von eckerho1 Beitrag anzeigen
                                Wenn du in einem Baustein Eingang ud Ausgang des 12299 anhängst könnte dein Problem auch von einem Loop kommen den du da unabsichtlich gebastelt hast.
                                Bin mir ziemlich sicher, dass das nicht der Fall ist, aber ich hatte den gerade schon rausgeworfen.
                                Werde den am WE weiter testen.

                                VG,
                                Mucki

                                Kommentar

                                Lädt...
                                X