Ankündigung

Einklappen
Keine Ankündigung bisher.

Russound C3/C5 RIO over TCP Plugin

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

    #46
    Ist auch in master gefixt.

    Bis bald

    Marcus

    Kommentar


      #47
      läuft bislang stabil (danke an marcus fürs Übernehmen)

      Stelle aber nach wie vor den 10 sekündlichen Verbindungsauf- /-abbau im Log fest. (Das war in der Vergangenheit definitiv nicht so)

      Kann das außer mir noch jemanden beobachten (ist das normal)?
      Bringt das evtl negative Wechselwirkungen mit sich (Performance)?

      Auszug aus meinem log (smarthome -v)

      Code:
      2013-12-15 19:52:21,665 DEBUG    Main         Russound: closing socket 10.10.0.10:9621 -- connection.py:close:303
      2013-12-15 19:52:31,136 DEBUG    Connections  Russound: connected to 10.10.0.10:9621 -- connection.py:connect:386
      2013-12-15 19:52:31,139 DEBUG    Connections  Sending request: WATCH System ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,144 DEBUG    Connections  Sending request: WATCH C[1].Z[6] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,148 DEBUG    Connections  Sending request: WATCH C[1].Z[8] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,151 DEBUG    Connections  Sending request: WATCH C[1].Z[1] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,155 DEBUG    Connections  Sending request: WATCH C[1].Z[5] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,160 DEBUG    Connections  Sending request: WATCH C[1].Z[4] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,164 DEBUG    Connections  Sending request: WATCH C[1].Z[2] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,168 DEBUG    Connections  Sending request: WATCH C[1].Z[3] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,172 DEBUG    Connections  Sending request: WATCH C[1].Z[7] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:31,467 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,470 DEBUG    Main         Parse response: N System.status="ON" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,649 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,652 DEBUG    Main         Parse response: N C[1].Z[6].name="Schlafzimmer" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,655 DEBUG    Main         Parse response: N C[1].Z[6].treble="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,659 DEBUG    Main         Parse response: N C[1].Z[6].balance="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,662 DEBUG    Main         Parse response: N C[1].Z[6].loudness="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,666 DEBUG    Main         Parse response: N C[1].Z[6].turnOnVolume="10" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,669 DEBUG    Main         Parse response: N C[1].Z[6].doNotDisturb="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,673 DEBUG    Main         Parse response: N C[1].Z[6].currentSource="1" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,676 DEBUG    Main         Parse response: N C[1].Z[6].volume="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,680 DEBUG    Main         Parse response: N C[1].Z[6].status="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,684 DEBUG    Main         Parse response: N C[1].Z[6].mute="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,687 DEBUG    Main         Parse response: N C[1].Z[6].partyMode="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,691 DEBUG    Main         Parse response: N C[1].Z[6].bass="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,694 DEBUG    Main         Parse response: N C[1].Z[6].page="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,697 DEBUG    Main         Parse response: N C[1].Z[6].sharedSource="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,701 DEBUG    Main         Parse response: N C[1].Z[6].sleepTimeRemaining="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,704 DEBUG    Main         Parse response: N C[1].Z[6].lastError="" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,708 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,711 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,714 DEBUG    Main         Parse response: N S[1].programServiceName="BAYERN 3" -- __init__.py:found_terminator:185
      2013-12-15 19:52:31,717 DEBUG    Main         Russound: closing socket 10.10.0.10:9621 -- connection.py:close:303
      2013-12-15 19:52:41,184 DEBUG    Connections  Russound: connected to 10.10.0.10:9621 -- connection.py:connect:386
      2013-12-15 19:52:41,187 DEBUG    Connections  Sending request: WATCH System ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,191 DEBUG    Connections  Sending request: WATCH C[1].Z[6] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,195 DEBUG    Connections  Sending request: WATCH C[1].Z[8] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,199 DEBUG    Connections  Sending request: WATCH C[1].Z[1] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,203 DEBUG    Connections  Sending request: WATCH C[1].Z[5] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,207 DEBUG    Connections  Sending request: WATCH C[1].Z[4] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,211 DEBUG    Connections  Sending request: WATCH C[1].Z[2] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,215 DEBUG    Connections  Sending request: WATCH C[1].Z[3] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,220 DEBUG    Connections  Sending request: WATCH C[1].Z[7] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:41,513 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,517 DEBUG    Main         Parse response: N System.status="ON" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,693 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,696 DEBUG    Main         Parse response: N C[1].Z[6].name="Schlafzimmer" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,700 DEBUG    Main         Parse response: N C[1].Z[6].treble="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,703 DEBUG    Main         Parse response: N C[1].Z[6].balance="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,706 DEBUG    Main         Parse response: N C[1].Z[6].loudness="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,710 DEBUG    Main         Parse response: N C[1].Z[6].turnOnVolume="10" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,713 DEBUG    Main         Parse response: N C[1].Z[6].doNotDisturb="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,717 DEBUG    Main         Parse response: N C[1].Z[6].currentSource="1" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,721 DEBUG    Main         Parse response: N C[1].Z[6].volume="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,724 DEBUG    Main         Parse response: N C[1].Z[6].status="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,728 DEBUG    Main         Parse response: N C[1].Z[6].mute="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,731 DEBUG    Main         Parse response: N C[1].Z[6].partyMode="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,735 DEBUG    Main         Parse response: N C[1].Z[6].bass="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,738 DEBUG    Main         Parse response: N C[1].Z[6].page="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,742 DEBUG    Main         Parse response: N C[1].Z[6].sharedSource="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,745 DEBUG    Main         Parse response: N C[1].Z[6].sleepTimeRemaining="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,749 DEBUG    Main         Parse response: N C[1].Z[6].lastError="" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,752 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,755 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,758 DEBUG    Main         Parse response: N S[1].programServiceName="BAYERN 3" -- __init__.py:found_terminator:185
      2013-12-15 19:52:41,762 DEBUG    Main         Russound: closing socket 10.10.0.10:9621 -- connection.py:close:303
      2013-12-15 19:52:51,232 DEBUG    Connections  Russound: connected to 10.10.0.10:9621 -- connection.py:connect:386
      2013-12-15 19:52:51,235 DEBUG    Connections  Sending request: WATCH System ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,240 DEBUG    Connections  Sending request: WATCH C[1].Z[6] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,243 DEBUG    Connections  Sending request: WATCH C[1].Z[8] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,247 DEBUG    Connections  Sending request: WATCH C[1].Z[1] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,251 DEBUG    Connections  Sending request: WATCH C[1].Z[5] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,256 DEBUG    Connections  Sending request: WATCH C[1].Z[4] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,260 DEBUG    Connections  Sending request: WATCH C[1].Z[2] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,264 DEBUG    Connections  Sending request: WATCH C[1].Z[3] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,268 DEBUG    Connections  Sending request: WATCH C[1].Z[7] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:52:51,541 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,544 DEBUG    Main         Parse response: N System.status="ON" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,726 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,729 DEBUG    Main         Parse response: N C[1].Z[6].name="Schlafzimmer" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,732 DEBUG    Main         Parse response: N C[1].Z[6].treble="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,736 DEBUG    Main         Parse response: N C[1].Z[6].balance="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,739 DEBUG    Main         Parse response: N C[1].Z[6].loudness="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,743 DEBUG    Main         Parse response: N C[1].Z[6].turnOnVolume="10" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,746 DEBUG    Main         Parse response: N C[1].Z[6].doNotDisturb="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,750 DEBUG    Main         Parse response: N C[1].Z[6].currentSource="1" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,753 DEBUG    Main         Parse response: N C[1].Z[6].volume="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,757 DEBUG    Main         Parse response: N C[1].Z[6].status="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,761 DEBUG    Main         Parse response: N C[1].Z[6].mute="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,764 DEBUG    Main         Parse response: N C[1].Z[6].partyMode="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,768 DEBUG    Main         Parse response: N C[1].Z[6].bass="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,771 DEBUG    Main         Parse response: N C[1].Z[6].page="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,775 DEBUG    Main         Parse response: N C[1].Z[6].sharedSource="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,778 DEBUG    Main         Parse response: N C[1].Z[6].sleepTimeRemaining="0" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,781 DEBUG    Main         Parse response: N C[1].Z[6].lastError="" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,785 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,788 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,791 DEBUG    Main         Parse response: N S[1].programServiceName="BAYERN 3" -- __init__.py:found_terminator:185
      2013-12-15 19:52:51,795 DEBUG    Main         Russound: closing socket 10.10.0.10:9621 -- connection.py:close:303
      2013-12-15 19:53:01,281 DEBUG    Connections  Russound: connected to 10.10.0.10:9621 -- connection.py:connect:386
      2013-12-15 19:53:01,284 DEBUG    Connections  Sending request: WATCH System ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,288 DEBUG    Connections  Sending request: WATCH C[1].Z[6] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,292 DEBUG    Connections  Sending request: WATCH C[1].Z[8] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,296 DEBUG    Connections  Sending request: WATCH C[1].Z[1] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,300 DEBUG    Connections  Sending request: WATCH C[1].Z[5] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,304 DEBUG    Connections  Sending request: WATCH C[1].Z[4] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,308 DEBUG    Connections  Sending request: WATCH C[1].Z[2] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,312 DEBUG    Connections  Sending request: WATCH C[1].Z[3] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,317 DEBUG    Connections  Sending request: WATCH C[1].Z[7] ON
       -- __init__.py:_send_cmd:173
      2013-12-15 19:53:01,588 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,592 DEBUG    Main         Parse response: N System.status="ON" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,774 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,777 DEBUG    Main         Parse response: N C[1].Z[6].name="Schlafzimmer" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,781 DEBUG    Main         Parse response: N C[1].Z[6].treble="0" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,784 DEBUG    Main         Parse response: N C[1].Z[6].balance="0" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,788 DEBUG    Main         Parse response: N C[1].Z[6].loudness="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,791 DEBUG    Main         Parse response: N C[1].Z[6].turnOnVolume="10" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,795 DEBUG    Main         Parse response: N C[1].Z[6].doNotDisturb="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,798 DEBUG    Main         Parse response: N C[1].Z[6].currentSource="1" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,802 DEBUG    Main         Parse response: N C[1].Z[6].volume="0" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,806 DEBUG    Main         Parse response: N C[1].Z[6].status="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,809 DEBUG    Main         Parse response: N C[1].Z[6].mute="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,813 DEBUG    Main         Parse response: N C[1].Z[6].partyMode="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,816 DEBUG    Main         Parse response: N C[1].Z[6].bass="0" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,820 DEBUG    Main         Parse response: N C[1].Z[6].page="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,823 DEBUG    Main         Parse response: N C[1].Z[6].sharedSource="OFF" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,827 DEBUG    Main         Parse response: N C[1].Z[6].sleepTimeRemaining="0" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,830 DEBUG    Main         Parse response: N C[1].Z[6].lastError="" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,833 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,837 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,840 DEBUG    Main         Parse response: N S[1].programServiceName="BAYERN 3" -- __init__.py:found_terminator:185
      2013-12-15 19:53:01,843 DEBUG    Main         Russound: closing socket 10.10.0.10:9621 -- connection.py:close:303
      Danke vorab für eine Info & Grüße
      Sven

      Kommentar


        #48
        Der Russound beendet nach zweistündiger Inaktivität die Verbindung. sh.py baut diese dann sofort wieder auf. Das war schon immer so.
        Mit freundlichen Grüßen
        Niko Will

        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

        Kommentar


          #49
          Hi Niko,

          das sind aber nur Sekunden, bis die Connection schließt.

          Bis bald

          Marcus

          Kommentar


            #50
            konnte das Problem zwar nicht beheben aber im Rahmen von zig Versuchen ein wenig eingrenzen.
            Schalte ich den Russound aus und wieder ein ist es wie "früher". Verbindung wird für 2h aufgebaut und dann nach eine kurzen Unterbrechung wieder aufgebaut.
            Schalte ich die Zonen nur über KNX (Schalter oder ETS) bleibt auch alles stabil. Schalte ich die Zonen auf anderem Weg (ipad, app) dann bekomme ich sofort wieder das o..g Problem dass alle 10sek die Verbindung unterbrochen und wieder aufgebaut wird.
            Log ist dasselbe wie oben. Meine item.conf Beispiel für Zone 6:
            Code:
            [[[audio]]]
            	name = Audio Schlafzimmer
            		[[[[status]]]]
            			type = bool
            			visu = yes
            			rus_path = 1.6.status
            			knx_dpt = 1
            			knx_cache = 8/1/135
            			knx_send = 8/1/135
            			knx_status = 8/2/135
            			knx_reply = 8/2/135
            		[[[[volume]]]]
                                    type = num
            			visu = yes
                                    rus_path = 1.6.volume
            	         [[[[relativevolume]]]]
                                    type = bool
            			visu = yes
                                    rus_path = 1.6.relativevolume
                                    knx_dpt = 1
                                    knx_listen = 8/3/135
            			enforce_updates = true
                        [[[[source]]]]
                                    type = num
            			visu = yes
                                    rus_path = 1.6.currentsource
                        [[[[mute]]]]
                                    type = bool
            			visu = yes
                                    rus_path = 1.6.mute
                        [[[[channelup]]]]
                                    type = bool
            			visu = yes
                                    rus_path = 1.6.channelup
                                    knx_dpt = 1
                                    knx_listen = 8/5/135
                                    enforce_updates = true
                        [[[[partymode]]]]
                                    type = str
            			visu = yes
                                    rus_path = 1.6.partymode
                        [[[[donotdisturb]]]]
                                    type = str
            			visu = yes
                                    rus_path = 1.6.donotdisturb

            Kommentar


              #51
              Hi Sven,

              danke für das debuggen.
              Kannst Du bitte mal bin/smarthome.py editieren oder develop verwenden?
              Wenn Du stable verwendest, bitte in die Zeile 344 der bin/smarthome.py statt dem "pass"
              Code:
              logger.debug("Connection polling failed: {}".format(e))
              Und das ganze noch mal im debug Modus anschauen? Evtl. steht hier schon was hilfreiches.

              Bis bald

              Marcus

              Kommentar


                #52
                Hi Marcus,
                erledigt (Zeile 344 geändert)
                und nach einer kurzen Schrecksekunde (Rechte waren nach dem Bearbeiten nicht mehr auf "ausführen") läuft sh.py jetzt wieder.
                Log im Anhang da recht umfangreich. (Hoffe ich poste jetzt nicht implizit passworte o.ä. in die halbe Welt)

                Aus meiner Sicht ist jetzt ein neuer Fehler dazugekommen:
                Code:
                2013-12-18 20:13:00,752 ERROR    Main         Item eg.arbeit.audio.status: problem running <bound method KNX.update_item of <plugins.knx.KNX object at 0x25610b0>>: list index out of range -- item.py:__update:371
                Traceback (most recent call last):
                  File "/usr/smarthome/lib/item.py", line 369, in __update
                    method(self, caller, source, dest)
                  File "/usr/smarthome/plugins/knx/__init__.py", line 327, in update_item
                    self.groupwrite(ga, item(), item.conf['knx_dpt'])
                  File "/usr/smarthome/plugins/knx/__init__.py", line 67, in groupwrite
                    pkt.extend(self.encode(ga, 'ga'))
                  File "/usr/smarthome/plugins/knx/__init__.py", line 143, in encode
                    return dpts.encode[str(dpt)](data)
                  File "/usr/smarthome/plugins/knx/dpts.py", line 308, in enga
                    return [int(ga[0]) << 3 | int(ga[1]), int(ga[2])]
                IndexError: list index out of range
                Aber sieh selbst, mir ist nur dieser Unterschied aufgefallen.
                Angehängte Dateien

                Kommentar


                  #53
                  HI Sven,

                  wie sieht denn die Config für eg.arbeit.audio.status aus?

                  Danke

                  Marcus

                  Kommentar


                    #54
                    Hi Marcus,
                    einen echten Export von eg.arbeit.audio kann ich erst heute abend machen.
                    Aber:
                    In Beitrag #50 ist der von eg.schlafzimmer.audio. Ich arbeite immer mit demselben Template. Lediglich die KNX-Adressen weichen in der letzten Stelle ab. Für Arbeit ist das (meine ich) die 125
                    Grüße
                    Sven

                    Kommentar


                      #55
                      Hi Sven,

                      das Log sieht soweit nicht besonders verdächtig aus. Weshalb die Verbindungsabbrüche zustande kommen müsste man interaktiv debuggen.
                      Das kann wahrscheinlich Niko am besten, wenn er mal wieder Zeit hat, da er Zugriff auf die HW hat.

                      Kann es sein, dass der Russound nur eine TCP-Verbindung gleichzeitig erlaubt? Und sich die App und das Plugin um die Verbindung streiten?

                      Workaround: keine Smartphone-App für den Russound verwenden :-(

                      Bis bald

                      Marcus

                      P.S. ich bin noch an Deiner Konfig wegen dem anderen Problem interessiert.

                      Kommentar


                        #56
                        Hi Marcus,
                        danke für die Log-Prüfung.

                        Verbindungskonflikt App / sh.py
                        Glaube ich zwar nicht (war mit 0.9 ja auch kein Problem) aber probiere ich natürlich am WE gerne aus.
                        Workaround:
                        Wäre aus meiner Sicht gar kein Problem. Ich muss eben nur etwas schneller als geplant alle Funktionen in SV überführen. Dachte ich könnte mir hiermit etwas Zeit lassen.

                        Config:
                        Wie vermutet habe ich auch hier das template angewandt
                        Code:
                        [[[audio]]]
                            name = Audio Arbeit
                            [[[[status]]]]
                                type = bool
                                visu = yes
                                rus_path = 1.4.status
                                knx_dpt = 1
                                knx_cache = 8/1/125
                                knx_send = 8/1/125
                                knx_status = 8/2/125
                                knx_reply = 8/2/125
                            [[[[volume]]]]
                                type = num
                                visu = yes
                                rus_path = 1.4.volume
                             [[[[relativevolume]]]]
                                type = bool
                                visu = yes
                                rus_path = 1.4.relativevolume
                                knx_dpt = 1
                                knx_listen = 8/3/125
                                enforce_updates = true
                             [[[[source]]]]
                                 type = num
                                 visu = yes
                                 rus_path = 1.4.currentsource
                             [[[[mute]]]]
                                 type = bool
                                 visu = yes
                                 rus_path = 1.4.mute
                             [[[[channelup]]]]
                                 type = bool
                                 visu = yes
                                 rus_path = 1.4.channelup
                                 knx_dpt = 1
                                 knx_listen = 8/5/125
                                 enforce_updates = true
                             [[[[partymode]]]]
                                 type = str
                                 visu = yes
                                 rus_path = 1.4.partymode
                             [[[[donotdisturb]]]]
                                 type = str
                                 visu = yes
                                 rus_path = 1.4.donotdisturb
                        Nebeninfo:
                        Ich habe auch ein Problem mit dem CLI Plugin. Kann mit putty eine Verbindung aufbauen. Aber sobald ich <enter> drücke (egal welcher Befehl) wird die Verbindung getrennt. Möglicherweise besteht da ein Zusammenhang.
                        Gleich zur Verteidigung vorab: Log geht erst am WE. Ich will vorher meine Stockwerk basierten item.conf Dateien in Gewerk basierte item.conf Dateien überführen. Ich denke das ist zum Debuggen der glücklichere Ansatz. (Man kann dann Audio schnell komplett ausser Betrieb nehmen, ohne die anderen Gewerke zu berühren).

                        ... Ich werde (inkl. debug log ;-)) berichten
                        Grüße
                        Sven

                        Kommentar


                          #57
                          Hi Sven,

                          danke für die Konfig. Das KNX Problem ist in master und develop gefixt.

                          Wegen dem CLI, probier mal telnet. Wenn es nicht klappt, mach bitte einen neuen Thread auf.

                          Bis bald

                          Marcus

                          Kommentar


                            #58
                            weitere Eingrenzung

                            Ich konnte die Fehlerursache inzwischen sehr weit eingrenzen.
                            Es hat mit den folgenden beiden Dingen:
                            1. Musikquelle = interner Tuner
                            2. dem eingestellten Radiosender (bzw. ob Radiotext übermittelt wird)

                            Symptom:
                            Wenn nur eine der Zonen (auch wenn Sie deaktivert ist) als interne Quelle den Radio angegeben hat und (hier bin ich mir noch nicht sicher) der aktuelle eingestellte Sender übermittelt kein Radiotext. Dann kommt es zu dem beschriebenen Fehler (alle 10 sek Verbindungsabbau.

                            Auf vielfachen Wunsch eines einzelnen Herrn mein Debug Log im Anhang.
                            Am Ende des Logs kann man sehen wie ich zwischen "Bayern 3" (hier gab es das Problem) und "BigFM" umschalte. (hier gab es kein Problem).

                            Ich für meinen Teil habe mit dem Bug kein Problem, jetzt wo ich weiß dass ich es mit der Wahl eines anderen Senders umgehen kann.

                            Grüße
                            Sven
                            Angehängte Dateien

                            Kommentar


                              #59
                              Hi Sven

                              Zitat von valleyman Beitrag anzeigen
                              Ich konnte die Fehlerursache inzwischen sehr weit eingrenzen.
                              Es hat mit den folgenden beiden Dingen:
                              1. Musikquelle = interner Tuner
                              2. dem eingestellten Radiosender (bzw. ob Radiotext übermittelt wird)
                              Ich nutze hier ebenfalls das Plugin - allerdings in einer sehr modifizierten Form - und hatte ebenfalls das Problem, dass ab und zu eine Situation entstand, in welcher die Verbindung in rel. schneller Folge abgebrochen und wieder aufgebaut wurde. Nach ein paar Minuten war wieder Ruhe und das Plugin lief problemlos. Daher ließ sich das Problem auch nur schwer reproduzieren / beheben.

                              Gestern Abend habe ich dann ein paar try-catch-Blöcke und etliche traces zusätzlich eingebaut und konnte letztlich nachvollziehen, dass die Verbindungsabbrüche - zumindest diejenigen bei mir - tatsächlich auf den übertragenen Radiotext zurückführen sind.

                              (Allerdings weiss ich nicht, ob das sh.py-Standard-Russound-Plugin auch wirklich in der Lage ist, Radiotext zu empfangen oder nur meine Version. :-) )

                              Meine aktuelle *Vermutung* ist, dass im Radiotext Zeichen enthalten sind, die in folgendem "decode()" Aufruf zu einer Exception führen:
                              Code:
                                  def found_terminator(self, resp):
                                      resp = resp.decode()
                                      try:
                                          logger.debug("Parse response: {0}".format(resp))
                              Da diese Exception im Plugin nicht gefangen wird, wird diese letztlich nach oben weiter gereicht: Stream._in() fängt ebenfalls keine Exception und vermutlich landet die Exception dann in diesem Umfeld:

                              Code:
                              class Connections(Base):
                              ...    def poll(self):
                              ...
                                              if event & select.EPOLLIN:
                                                  try:
                                                      con = self._connections[fileno]
                                                      con._in()
                                                  except Exception as e:  # noqa
                                                      logger.exception("{}: {}".format(self._name, e))
                                                      con.close()
                                                      continue
                              Du könntest einmal zum Test in plugins/russound/__init__.py in der Funktion found_terminator() den Auruf von decode() in den try-Block hinein verschieben, also etwa so:

                              Code:
                                  def found_terminator(self, resp):
                              
                                      try:
                                          resp = resp.decode()
                                          logger.debug("Parse response: {0}".format(resp))
                              Damit sollten zumindest Exceptions im catch ins Log-File geschrieben, jedoch die Verbindung nicht abgebrochen werden.

                              Das ist auch die Erklärung, warum manchmal stundenlang kein Verbindungsabbruch stattfindet, und dann wieder innerhalb von ein paar Minuten mehrere: Zu diesen Zeitpunkten läuft Musik mit ungültigen Zeichen im Radiotext.

                              Zugebenermassen habe ich die ganzen Zusammenhänge mit den String-Codierungen nicht umfänglich verstanden.

                              Nach meinen Beobachtungen schlägt bei den kritischen RadioText-Informationen ein "resp.decode()" und ein "resp.decode('utf-8')" fehl, wohingegen ein resp.decode('iso-8859-1') zwar keine Exception wirft, jedoch trotzdem im String Zeichen fehlen.

                              Das liegt - nach meinem Verständnis - aber daran, dass der Quell-String (btw. das bytearray) nicht wirklich latin1-codiert ist.

                              Folgende 'fehlerhaften' Texte konnte ich seit gestern Abend beobachten:

                              Code:
                              Quelle: 4e:20:53:5b:31:5d:2e:72:61:64:69:6f:54:65:78:74:3d:22:52:75:6e:6e:69:6e:67:20:74:6f:20:74:68:65:20:73:65:61:20:2f:20:52:6f:65:79:6b:73:6f:70:70:3b:20:53:75:73:61:6e:6e:65:20:20:53:75:6e:64:66:f7:72:22
                              Latin1: 'N S[1].radioText="Running to the sea / Roeyksopp; Susanne  Sundf÷r"'
                              
                              Soll: "...Susanne Sundfør"
                              
                              Invalid: f7 statt ø
                              
                              -------
                              
                              Quelle: 'bytearray(b'N S[1].radioText="We are young / Fun.; Janelle  Mon\x80e"')'
                              Quelle: 4e:20:53:5b:31:5d:2e:72:61:64:69:6f:54:65:78:74:3d:22:57:65:20:61:72:65:20:79:6f:75:6e:67:20:2f:20:46:75:6e:2e:3b:20:4a:61:6e:65:6c:6c:65:20:20:4d:6f:6e:80:65:22
                              Latin1: 'N S[1].radioText="We are young / Fun.; Janelle  Mone"'
                              
                              Soll: "...Janelle Monáe"
                              
                              Invalid: 80 statt á
                              
                              -------
                              
                              Quelle: 'bytearray(b'N S[1].radioText="Free / Ultra Nat\x82"')'
                              Quelle: 4e:20:53:5b:31:5d:2e:72:61:64:69:6f:54:65:78:74:3d:22:46:72:65:65:20:2f:20:55:6c:74:72:61:20:4e:61:74:82:22
                              Latin1: 'N S[1].radioText="Free / Ultra Nat"'
                              
                              Soll:    "...Ultra Naté"
                              
                              Invalid: 82 statt é
                              
                              -------
                              
                              Quelle: 'bytearray(b'N S[1].radioText="Next to me / Emeli Sand\x82"')'
                              Quelle: 4e:20:53:5b:31:5d:2e:72:61:64:69:6f:54:65:78:74:3d:22:4e:65:78:74:20:74:6f:20:6d:65:20:2f:20:45:6d:65:6c:69:20:53:61:6e:64:82:22
                              latin1: 'N S[1].radioText="Next to me / Emeli Sand"'
                              
                              Soll:    "...Emeli Sandé"
                              
                              Invalid: 82 statt é
                              Empfangen von SWR3, die für ihre Moderatoren-Namen und in den Nachrichten keine Umlaute / Sonderzeichen verwenden, jedoch bei Künstlern schon.

                              Ich habe allerdings keine Ahnung, welche Zeichncodierung in dem empfangenen Radiotext das sein soll, bei dem folgende Zuordnung gilt:
                              Code:
                               80 = á
                               82 = é
                               F7 = ø
                              Da meine Erkenntnisse noch recht frisch sind, wage ich keinen Vorschlag zur korrekten Fehlerkorrektur :-)

                              Markus, vielleicht magst Du Dir mal ansehen / durchdenken, ob es so gewünscht ist, dass in den Plugins in found_terminator() (also der Verarbeitung empfangener Telegramme) nicht gefangene Exceptions so weit 'nach oben' durch Stream._in() hindurch nach poll() reichen?

                              Viele Grüße,
                              Alex

                              Kommentar


                                #60
                                Bei mir tritt seit kurzem das Problem mit den Verbindungsabbrüchen aufgrund des Radio Textes auch auf. Zumindest nehme ich das aufgrund des Logfiles an ...

                                Code:
                                2014-05-27 19:24:01,255 DEBUG    Connections  Russound: connected to 192.168.0.40:9621 -- connection.py:connect:386
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH System ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[1] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[3] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[6] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[6] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[5] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[4] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[2] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[3] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[2].Z[4] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[1] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[2] ON
                                 -- __init__.py:_send_cmd:175    Connections  Sending request: WATCH C[1].Z[5] ON
                                2014-05-27 19:24:01,669 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,675 DEBUG    Main         Parse response: N System.status="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,829 DEBUG    Main         knx: 1.2.1 set 5/0/105 to 41.568627450980394 -- __init__.py:parse_telegram:190
                                2014-05-27 19:24:01,851 DEBUG    Main         Parse response: S -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,856 DEBUG    Main         Parse response: N C[2].Z[1].name="Eltern" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,868 ERROR    Main         decoding str is not supported -- __init__.py:found_terminator:222
                                2014-05-27 19:24:01,880 DEBUG    Main         Parse response: N C[2].Z[1].treble="0" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,890 DEBUG    Main         Parse response: N C[2].Z[1].balance="0" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,903 DEBUG    Main         Parse response: N C[2].Z[1].loudness="ON" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,920 DEBUG    Main         Parse response: N C[2].Z[1].turnOnVolume="13" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,925 DEBUG    Main         Parse response: N C[2].Z[1].doNotDisturb="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,937 DEBUG    Main         Parse response: N C[2].Z[1].currentSource="1" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,947 DEBUG    Main         Parse response: N C[2].Z[1].volume="0" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,957 DEBUG    Main         Parse response: N C[2].Z[1].status="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,965 DEBUG    Main         Parse response: N C[2].Z[1].mute="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,976 DEBUG    Main         Parse response: N C[2].Z[1].partyMode="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,988 DEBUG    Main         Parse response: N C[2].Z[1].bass="0" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:01,996 DEBUG    Main         Parse response: N C[2].Z[1].page="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,009 DEBUG    Main         Parse response: N C[2].Z[1].sharedSource="OFF" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,013 DEBUG    Main         Parse response: N C[2].Z[1].sleepTimeRemaining="0" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,022 DEBUG    Main         Parse response: N C[2].Z[1].lastError="" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,033 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,041 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,049 DEBUG    Main         Parse response: N S[1].programServiceName="ENERGY  " -- __init__.py:found_terminator:187
                                2014-05-27 19:24:02,060 DEBUG    Main         Russound: closing socket 192.168.0.40:9621 -- connection.py:close:303
                                Nach ca. 8 Sekunden kommt dann der nächste Versuch, mit dem gleichen Resultat. Wenn ich nun mittels iPad den Sender wechsle, funktioniert es wieder, ohne Neustart von smarthome.py.

                                Code:
                                2014-05-27 19:35:56,594 DEBUG    Main         Parse response: N S[1].name="Radio" -- __init__.py:found_terminator:187
                                2014-05-27 19:35:56,599 DEBUG    Main         Parse response: N S[1].type="RNET AM/FM Tuner (Internal)" -- __init__.py:found_terminator:187
                                2014-05-27 19:35:56,609 DEBUG    Main         Parse response: N S[1].programServiceName="RADIO 24" -- __init__.py:found_terminator:187
                                2014-05-27 19:35:56,621 DEBUG    Main         Parse response: N S[1].radioText=" " -- __init__.py:found_terminator:187
                                2014-05-27 19:35:56,630 DEBUG    Main         Parse response: N S[1].channel="Radio 24" -- __init__.py:found_terminator:187
                                Der erste Sender hat keine Sonderzeichen sondern nur 2 Spaces am Ende. Wenn ich dann wieder auf den ersten Sender wechsle kommt das Problem zurück.

                                Hat jemand das Problem schon behoben? Ich werde mich mal nachher auch den Code ansehen, bin aber kein Python Spezi ...

                                Alex, wie hast Du denn Dein Plugin modifiziert? Ist das was interessantes dabei?

                                Tom

                                Kommentar

                                Lädt...
                                X