Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler websocket, Log läuft voll

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

    #31
    Das Widget ist auf der Seite „smarthomeNG“ im Systemmenü standardmäßig in Anwendung:
    Code:
    {{ status.log('log1', 'env.core.log', 10) }}
    Es sollte zum Test also ausreichen, diese Seite aufzurufen und über längere Zeit stehen zu lassen.

    Was steht denn in dem item „memory_warn“?

    Wenn das Widget der Auslöser ist, dann sicherlich der Mechanismus, dass das item „memory_warn“ bei shNG abonniert wird, so dass shNG jedes Update aktiv auf dem Websocket sendet. Die Frage ist dann, wodurch sich die Daten des Logs von den Daten aller anderen items oder der Plot-Serien unterscheiden…

    ich bin gespannt
    Gruß
    Wolfram

    Kommentar


      #32
      Das hab ich in logging.yaml so deklariert. Kann gut sein, dass es am "Memory Log Handler" liegt..?
      Code:
      handlers:
          memory_warn:
              (): lib.log.ShngMemLogHandler
              logname: memory_warn
              maxlen: 60
              level: WARNING
              filters: [stateengine, roborock, roborock_2]

      Kommentar


        #33
        Die von wvhn erwähnte standardmäßige Nutzung des Widgets nutzt auch einen Memory Log Handler, der von SmartHomeNG standardmäßig angelegt wird. Der einzige unterschied ist, dass die maxlen dort 20 ist und auf WARNING, ERROR und CRITICAL gefiltert wird.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #34
          Sooo, nachdem's jetzt tatsächlich nur noch ganz sporadisch Fehlerchen mit dem websocket gab, hab ich gestern Abend das status Log Widget wieder eingebaut. Und siehe da, Log läuft komplett voll mit diesen Meldungen:
          Code:
          Nov 22 07:07:07 ERROR    modules.websocket update_log - Error in 'await websocket.send(data)': received 1001 (going away); then sent 1001 (going away)
          Traceback (most recent call last):
            File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
              await websocket.send(msg)
            File "/home/smarthome/.local/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 619, in send
              await self.ensure_open()
            File "/home/smarthome/.local/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
              raise self.connection_closed_exc()
          websockets.exceptions.ConnectionClosedOK: received 1001 (going away); then sent 1001 (going away)
          Nov 22 07:07:07 ERROR    modules.websocket update_log - Error in 'await websocket.send(data)': received 1001 (going away); then sent 1001 (going away)
          Traceback (most recent call last):
            File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
              await websocket.send(msg)
            File "/home/smarthome/.local/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 619, in send
              await self.ensure_open()
            File "/home/smarthome/.local/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
              raise self.connection_closed_exc()
          websockets.exceptions.ConnectionClosedOK: received 1001 (going away); then sent 1001 (going away)
          Vielleicht kann's ja jemand noch bestätigen und im Idealfall fixen.. ?

          Kommentar


            #35
            Sorry, ich hab das Thema aus Zeitmangel länger nicht verfolgt.
            Ich nutze auch das Log-Widget und hab es jetzt testweise mal rausgenommen.
            Wäre ja gut, wenn man damit die Ursache gefunden hätte. Ich könnte vorerst auch ohne leben, bei mir wird dort nur angezeigt, wann die Türklingel und die äußeren Bewegungsmelder getriggert wurden.

            Kommentar


              #36
              Ja bitte gerne beobachten und testen. Bin mir inzwischen ganz sicher, dass es an dem Widget liegt, woran genau weiß ich nicht.
              Klingel und BWM Triggers kannst du auch anders darstellen, zB über Items. Ich habe dieses struct hier am Start, das mir über Widgets gut darstellt, wie lange das letzte Triggern her ist (in gewissen Zeitabschnitten)
              Code:
              bewegung_general:
                  type: bool
                  visu_acl: ro
              
                  zeitstatus:
                      visu_acl: ro
                      type: num
                      eval: 5 if sh...fuenf() == 1 else (15 if sh...fuenfzehn() == 1 else (30 if sh...dreissig() == 1 else 0))
                      eval_trigger:
                        - ..fuenf
                        - ..fuenfzehn
                        - ..dreissig
              
                  fuenf:
                      type: bool
                      visu_acl: ro
                      database: yes
                      influxdb: yes
                      eval_trigger: .calc
                      eval: 1 if sh..calc() == 1 else 0
              
                      calc:
                          autotimer: 5m = 2
                          value: 2
                          eval: int(sh....()) if int(value) > 1 else 1
                          eval_trigger: ...
                          type: num
              
                  fuenfzehn:
                      type: bool
                      visu_acl: ro
                      database: yes
                      influxdb: yes
                      eval_trigger: .calc
                      eval: 1 if sh..calc() == 1 else 0
              
                      calc:
                          autotimer: 15m = 2
                          value: 2
                          eval: int(sh....()) if int(value) > 1 else 1
                          eval_trigger: ...
                          type: num
              
                  dreissig:
                      type: bool
                      visu_acl: ro
                      database: yes
                      influxdb: yes
                      eval_trigger: .calc
                      eval: 1 if sh..calc() == 1 else 0
              
                      calc:
                          autotimer: 30m = 2
                          value: 2
                          eval: int(sh....()) if int(value) > 1 else 1
                          eval_trigger: ...
                          type: num

              Kommentar

              Lädt...
              X