Ankündigung

Einklappen
Keine Ankündigung bisher.

SHNG Stürzt ab "worker threads", "ERROR modules.websocket update_item "

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

    #16
    Onkelandy: danke für den viel besseren Link. Ich bin in der Doku hier gelandet. Dort steht "Diese Strings können Regular Expressions enthalten."

    Offenbar gibt es in der Doku einen Bereich "Referenz" und einen zu "Konfiguration". Dein Link zum Bereich "Konfiguration" ist viel besser (da mit Beispielen) als das, was unter "Referenz" steht. Hier wäre ein Querverweis gut. Ich habe nicht mehr in anderen Kapiteln der Doku gesucht, weil ich dachte, die richtige Stelle gefunden zu haben.



    Cheers
    Art Mooney

    Kommentar


      #17
      Leider funktioniert der Filter so nicht. Ich bekomme folgende Rückmeldung

      Code:
      smarthome@smarthomeNG:~$ systemctl status smarthome.service
      ● smarthome.service - SmartHomeNG daemon
           Loaded: loaded (/lib/systemd/system/smarthome.service; enabled; vendor preset: enabled)
           Active: failed (Result: exit-code) since Sun 2022-10-02 22:20:59 CEST; 24s ago
          Process: 275555 ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py (code=exited, status=1/FAILURE)
              CPU: 5.280s
      
      Oct 02 22:20:59 smarthomeNG python3[275555]: while scanning a double-quoted scalar
      Oct 02 22:20:59 smarthomeNG python3[275555]:   in "<unicode string>", line 7, column 14:
      Oct 02 22:20:59 smarthomeNG python3[275555]:             msg: "(.*)\(TCP_Client_192\.168\.1\.1 ...
      Oct 02 22:20:59 smarthomeNG python3[275555]:                  ^ (line: 7)
      Oct 02 22:20:59 smarthomeNG python3[275555]: found unknown escape character '('
      Oct 02 22:20:59 smarthomeNG python3[275555]:   in "<unicode string>", line 7, column 20:
      Oct 02 22:20:59 smarthomeNG python3[275555]:             msg: "(.*)\(TCP_Client_192\.168\.1\.107\:96 ...
      Oct 02 22:20:59 smarthomeNG python3[275555]:                        ^ (line: 7)
      Oct 02 22:20:59 smarthomeNG python3[275555]: NOTE: Look for the error at the expected <block end>, near the second specified line number
      Oct 02 22:20:59 smarthomeNG python3[275555]: ERROR: Invalid logging configuration in file 'logging.yaml'
      Offenbar ist die Klammer das Problem?


      Cheers
      Art Mooney

      Kommentar


        #18
        Ein Querverweis wäre sicher clever.. Das betrifft aber wohl generell den ganzen Referenz-Teil. Vielleicht hat da Msinn eine Idee, evtl. auch automatisiert?

        Ich hab mal kurz den Filter-Code angesehen und soweit ich das sehe, muss es wohl tatsächlich zwingend eine regex sein, ein einfacher Teil des Strings wird nicht gefunden. Ich hab das in der Doku angepasst und einen PR erstellt.

        Kommentar


          #19
          Update: den Output-Buffer im mpd hochzusetzen hat nichts genützt. Die Meldung im mpd.log, dass der Output-Buffer voll sei kam dennoch und führte zum Neustart von SHNG.

          Ich installiere jetzt mal die develop-Version wie oben angeregt.
          Cheers
          Art Mooney

          Kommentar


            #20
            Sorry, es müssen zwei \\ sein, dann sollte es klappen. Ich versuche es grad mit dem Beispiel von vorhin und aktualisiere den getesteten String in der Doku

            Kommentar


              #21
              Heute habe ich versucht, den develop-Branch der Plugins zu ziehen mit "git pull origin develop". Das scheint auch funktioniert zu haben.

              bmx, es gibt jetzt die Plugin-Funktionen "suspend" und "activate". Mir ist allerdings nicht klar, wie ich diese Funktionen nutzen kann. Muss ich dafür ein Item anlegen? Wie müsste das aussehen?

              Danke!

              Cheers
              Art Mooney

              Kommentar


                #22
                Die Funktionen sollten über eine Logik aufgerufen werden können. Die Logik wird sinnigerweise von einem Item getriggert das den Status der Steckdose für das Russound Gerät darstellt. Also wenn Steckdose aus --> suspend() und wenn Steckdose an --> activate().

                Ich kann es leider auch nicht so wirklich testen weil ich hier kein russound hat aber einen Versuch ist es Wert.

                Kommentar


                  #23
                  OK, mmh. Ich bin mit der Syntax gar nicht vertraut. Also so? Ich probiere es aus.

                  Code:
                  if sh.K4.STECK.SWIT2() == True:
                      activate()
                  elif sh.K4.STECK.SWIT2() == False:
                      suspend()
                  Cheers
                  Art Mooney

                  Kommentar


                    #24
                    Das geht so nicht. Im Log bekomme ich:

                    "Hauptroutine der Logik, Exception: name 'activate' is not defined"

                    Habe hier einen Hinweis gefunden: https://www.smarthomeng.de/user/refe...functions.html

                    Also:

                    Code:
                    if sh.K4.STECK.SWIT2() == True:
                        sh.plugins.return_plugin("russound").activate()
                    elif sh.K4.STECK.SWIT2() == False:
                        sh.plugins.return_plugin("russound").suspend()
                    Cheers
                    Art Mooney

                    Kommentar


                      #25
                      Das scheint zu funktionieren.
                      Cheers
                      Art Mooney

                      Kommentar


                        #26
                        Ich melde mich mal wieder, nachdem ich lange Zeit nicht an dem Problem arbeiten konnte.

                        Oben schrieb ich, dass die Plugin-Funktionen funktionieren. Das war aber leider nicht reproduzierbar. Bisweilen hatte ich den Eindruck, dass es nach einem Neustart von shng einmal funktionierte und danach nicht mehr. Nun habe ich die Plugin-Funktionen erst einmal wieder deaktiviert (Logik per "Pause"-Icon in der Admin-GUI deaktiviert), um zurück zu meinem alten Status zu kommen.

                        Irgendetwas stimmt hier aber nach wie vor nicht. Funktioneren soll das Abspielen von Musik wie folgt.

                        1. Am KNX-Tastsensor wird eine Playliste ausgewählt, die einer Szenen-Nummer entspricht. Per Logik wird dann in mpd die Playliste gestartet und ein 1bit-Telegramm zum Einschalten des Russound erzeugt (RUS.ZONE1.BOOLTOV). Das sieht so aus:

                        Code:
                        #!/usr/bin/env python3
                        # mpdplaylist.py
                        if sh.MPD.SZENE() == 0:
                            sh.MPD.JAZZ(True)
                            sh.RUS.ZONE1.BOOLTOV(True)
                        2. SHNG prüft bei Änderung des 1bit-Telegramms, ob der Russound Strom hat. Wenn nicht, wird die Steckdose eingeschaltet (K4.STECK.SWIT2) und ein Timer gestartet (RUS.ZONE1.ONTIMER), der 70 Sekunden runterzählt:

                        Code:
                        if sh.RUS.ZONE1.BOOLTOV() == True and sh.K4.STECK.SWIT2() == True:
                            sh.RUS.ZONE1.TURNONVOL(7)
                            sh.RUS.ZONE1.SOURCE(2)
                        elif sh.RUS.ZONE1.BOOLTOV() == True and sh.K4.STECK.SWIT2() == False:
                            sh.K4.STECK.SWIT2(True)
                            sh.RUS.ZONE1.ONTIMER(True)
                        elif sh.RUS.ZONE1.BOOLTOV() == False:
                            sh.RUS.ZONE1.POWER(False)
                        3. Der Russound hängt an einem Strommessaktor, der nach 45 Sekunden unter der Last des Russounds ein 1bit-Telegramm schickt (K4.NOTE2). Wenn dieses Telegramm eintrifft, prüft eine Logik, welcher Timer gerade auf "True" steht und sendet noch einmal das Telegramm zum Einschalten der entsprechenden Zone (RUS.ZONE1.BOOLTOV).

                        Code:
                        #!/usr/bin/env python3
                        # k4note2return.py
                        if sh.K4.NOTE2() == True and sh.RUS.ZONE1.ONTIMER() == True:  
                            sh.RUS.ZONE1.BOOLTOV(True)
                        elif sh.K4.NOTE2() == True and sh.RUS.ZONE2.ONTIMER() == True:
                            sh.RUS.ZONE2.BOOLTOV(True)    
                        elif sh.K4.NOTE2() == True and sh.RUS.ZONE4.ONTIMER() == True:
                            sh.RUS.ZONE4.BOOLTOV(True)  
                        elif sh.K4.NOTE2() == True and sh.RUS.ZONE5.ONTIMER() == True:
                            sh.RUS.ZONE5.BOOLTOV(True)    
                        elif sh.K4.NOTE2() == True and sh.RUS.ZONE6.ONTIMER() == True:
                            sh.RUS.ZONE6.BOOLTOV(True)
                        Nun zur Schilderung des Problems:

                        - Das beschriebene Verfahren funktioniert nach einem Neustart von SHNG einmal. Schalte ich dann wieder ab und will später (nachdem der Russound wieder stromlos ist) noch einmal in der Zone Musik hören, funktioniert der erste Schritt: der Strom für den Russound wird eingeschaltet und auch das Telegramm K4.NOTE2 kommt. Die Musik beginnt aber nicht zu spielen. Sie spielt erst, wenn ich diese (oder eine andere) Playliste noch ein zweites und drittes Mal am Tastsensor auswähle.

                        - Im Log bekomme ich hinsichtlich des Russound folgende Meldungen, die mir problematisch erscheinen:

                        Code:
                        TCP_Client_192.168.1.107:9621) receive in terminator mode calling data_received_callback <bound method Russound.found_terminator of <plugins.russound.Russound object at 0x7f6b88223b80>> failed: found_terminator() takes 2 positional arguments but 3 were given -- If stack trace is necessary, enable/check debug log
                        2023-01-14  19:28:09 ERROR    lib.network         lib.network (TCP_Client_192.168.1.107:9621) receive in terminator mode calling data_received_callback <bound method Russound.found_terminator of <plugins.russound.Russound object at 0x7f6b88223b80>> failed: found_terminator() takes 2 positional arguments but 3 were given -- If stack trace is necessary, enable/check debug log
                        2023-01-14  19:52:04 WARNING  plugins.mpd         zentral@: currentsong: no items to refresh
                        2023-01-14  19:52:04 WARNING  plugins.mpd         zentral@: statistic: no items to refresh
                        2023-01-14  19:53:35 ERROR    modules.admin.api_plugins _test_for_blog_articles: OSError HTTPSConnectionPool(host='www.smarthomeng.de', port=443): Max retries exceeded with url: /tag/knx (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f6b44727790>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
                        2023-01-14  20:13:22 ERROR    lib.network         lib.network (TCP_Client_192.168.1.107:9621) receive thread died with unexpected error: [Errno 104] Connection reset by peer. Go tell... -- If stack trace is necessary, enable/check debug log
                        2023-01-14  20:26:28 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) detected disconnect, send failed.
                        2023-01-14  20:26:33 ERROR    lib.network         lib.network (TCP_Client_192.168.1.107:9621) receive in terminator mode calling data_received_callback <bound method Russound.found_terminator of <plugins.russound.Russound object at 0x7f6b88223b80>> failed: found_terminator() takes 2 positional arguments but 3 were given -- If stack trace is necessary, enable/check debug log
                        2023-01-14  20:26:33 ERROR    lib.network         lib.network (TCP_Client_192.168.1.107:9621) receive in terminator mode calling data_received_callback <bound method Russound.found_terminator of <plugins.russound.Russound object at 0x7f6b88223b80>> failed: found_terminator() takes 2 positional arguments but 3 were given -- If stack trace is necessary, enable/check debug log
                        Kann jemand etwas damit anfangen?
                        Cheers
                        Art Mooney

                        Kommentar

                        Lädt...
                        X