Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler im Log nach Update

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

    Fehler im Log nach Update

    Hallo zusammen,

    eben habe ich mein Debian auf 10.11 upgedated, danach smarthomeNG und Plugins auf Version 1.8.2, zuletzt smartVISU auf 3.10.

    Im Großen und Ganzen hat das Update funktioniert. Es gibt aber ein paar kleinere Probleme und Meldungen im Log, bei denen ich Hilfe benötige.

    Ein erstes Problem betrifft ein Item, das über eval Uhrzeiten vergleichen soll. Z.B. diese hier:

    Code:
        DAYO: #Tagobjekt
            type: bool
            knx_dpt: 1
            knx_send: 0/0/222
            eval: 1 if sh.TIME.DAYTIME() > datetime.time(7, 0) and sh.TIME.DAYTIME() < datetime.time(19, 30) else 0
            cycle: 5m
            enforce_updates: True
            cache: yes
            visu_acl: rw
    Im Log bekomme ich folgende Meldung:

    Code:
    2021-11-04  23:16:06 WARNING  lib.item.item       Item TIME.DAYO: problem evaluating '1 if sh.TIME.DAYTIME() > datetime.time(7, 0) and sh.TIME.DAYTIME() < datetime.time(19, 30) else 0': '>' not supported between instances of 'NoneType' and 'datetime.time'
    Ganzt offenbar kann hier der Zeitwert nicht mit "<" verglichen werden.

    Das Item TIME.DAYTIME sieht so aus:

    Code:
        DAYTIME: #Uhrzeit
            type: foo
            knx_dpt: 10
            knx_listen: 7/0/211
            visu_acl: rw
    Wie man sieht, kommt der Wert vom KNX-Bus.

    Danke für einen Hinweis dazu.
    Cheers
    Art Mooney

    #2
    Beim Einschalten von SHNG wird das DAYTIME Item mit None vorbelegt. Du versuchst dann einen Vergleich zwischen einer Zeit und einem None und das schlägt fehl.

    Du kannst mal folgendes versuchen:

    Code:
    eval: 1 if datetime.time(7, 0) < sh.shtime.now().time() < datetime.time(19, 30) else 0

    Kommentar


      #3
      bmx : Vielen Dank. Das Problem hat sich erledigt, offenbar wie Du schreibst nachdem SHNG einen Wert für das Zeit-Item bekommen hat. Da ich nicht so oft neu starte und nun den Hintergrund verstehe, muss ich wohl nichts ändern.
      Cheers
      Art Mooney

      Kommentar


        #4
        Hallo nochmal,

        jetzt gibt es noch ein Problem mit der smartvisu.

        Zunächst hatte ich folgende Log-Meldung:

        Code:
        2021-11-05  20:37:16 WARNING  lib.smarthome.main  --------------------   Init SmartHomeNG 1.8.2.master (0f462a1e)   --------------------
        2021-11-05  20:37:16 WARNING  lib.smarthome.main  Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
        2021-11-05  20:37:16 WARNING  lib.smarthome.main   - on Linux-4.19.0-18-amd64-x86_64-with-debian-10.11 (pid=8734)
        2021-11-05  20:37:17 WARNING  lib.smarthome.main   - Nutze Feiertage für Land 'DE', Provinz 'None', 1 benutzerdefinierte(r) Feiertag(e) definiert
        2021-11-05  20:37:24 WARNING  lib.plugin          Plugin 'visu_websocket' (section 'visu') is deprecated. Consider to use a replacement instead
        2021-11-05  20:37:24 WARNING  plugins.visu_websocket The new websocket module is not configured/loaded.
        2021-11-05  20:37:24 WARNING  plugins.visu_websocket You should configure the websocket module and disable this plugin (visu_websocket)
        2021-11-05  20:37:24 WARNING  lib.plugin          Plugin 'visu_smartvisu' (section 'smartvisu') is deprecated. Consider to use a replacement instead
        2021-11-05  20:37:41 WARNING  lib.smarthome.main  --------------------   SmartHomeNG initialization finished   --------------------
        Ganz offensichtlich ist also das Plugin visu_websocket veraltet. Man soll das websocket module nutzen. Also habe ich nachgelesen und in der module.yaml folgendes eingetragen:

        Code:
        websocket:
            module_name: websocket
            # tls_key: myprivate.key
            # use_tls: true
            # tls_cert: myprivate.pem
            # port: 2424
            # tls_port: 2425
        Zudem habe ich in der plugin.yaml folgendes auskommentiert:

        Code:
        # Bereitstellung eines Websockets zur Kommunikation zwischen SmartVISU und SmartHomeNG
        #visu:
        #    class_name: WebSocket
        #    class_path: plugins.visu_websocket
        #    # ip: 0.0.0.0
        #    # port: 2424
        #    # tls: no
        #    wsproto: 4
        #    acl: rw
        Mein smartvisu-Plugin in der plugin.yaml ist folgendermaßen konfiguriert:

        Code:
        # Autogenerierung von Webseiten für SmartVISU
        smartvisu:
            class_name: SmartVisu
            class_path: plugins.visu_smartvisu
            # '"neue" Linux Versionen (z.B. Debian > 8.x, Ubuntu > 14.x)'
            smartvisu_dir: /var/www/html/smartvisu31
        #
        #    # nur \"alte\" Linux-Variationen
        #    # smartvisu_dir: /var/www/smartVISU
        #    # generate_pages: True
        #    # handle_widgets: True
        #    # overwrite_templates: Yes
        #    # visu_style: blk
        Nach einem Neustart bekomme ich im Log sehr viele der folgenden Meldungen:

        Code:
        2021-11-05  21:40:47 WARNING  lib.metadata        Item 'E3.TEMP.WAND', attribute 'visu_acl': Attribute is undefined and has value 'rw' (defined in messwerte_EG.yaml)
        Offenbar fehlt SHNG nun das Verständnis für das visu_acl-Attribut rw in den Item-Definitionen.

        Zu guter Letzt bekomme ich noch folgende Meldung zur smartvisu im Log:

        Code:
        2021-11-05  21:40:33 WARNING  lib.plugin          Plugin 'visu_smartvisu' (section 'smartvisu') is deprecated. Consider to use a replacement instead
        Offenbar muss ich auch das smartvisu-Plugin ersetzen. Aber womit? Ich habe ja gerade die neueste Version installliert.

        Kann mir jemand sagen, was ich nun machen sollte, damit die Fehlermeldungen verschwinden und die VISU funktioniert?
        Cheers
        Art Mooney

        Kommentar


          #5
          Anstatt des Plugins „visu_smartvisu“ benötigst Du das Plugin „smartvisu“. Das ist der zentrale Baustein für die Zusammenarbeit mit der Visu und erledigt mehr als nur die Autogenerierung von Visu-Seiten.

          Für den Websocket ist das Websocket-Modul zu empfehlen. Alternativ geht das alte “visu_websocket“ Plugin noch.

          Gruß
          Wolfram

          Kommentar


            #6
            Danke. OK, verstehe.

            Ich habe nun in der plugin.yaml folgendes eingetragen:

            Code:
            # SmartVISU
            smartvisu:
                class_name: SmartVisu
                class_path: plugins.smartvisu
                smartvisu_dir: /var/www/html/smartvisu31
            Den Eintrag in der module.yaml habe ich wie oben dargestellt belassen.

            Damit bekomme ich jetzt folgendes im Log:

            Code:
            2021-11-05  23:18:34 ERROR    modules.websocket   smartVISU_protocol_v4 exception: received 1005 (no status code [internal]); then sent 1005 (no status code [internal])
            Ist da noch etwas mit dem Websocket-Modul falsch?
            Cheers
            Art Mooney

            Kommentar


              #7
              So, nun habe ich noch einige Fehler entdeckt.

              1. Im Log bekomme ich neben dem oben beschriebenen Fehler nun auch folgendes zum Websocket, dahinter stehen noch sehr viele Zahlen, die ich wegen der Länge nicht einkopiert habe:
              Code:
              2021-11-05  23:35:11 WARNING  modules.websocket   smartVISU_protocol_v4: Exception in 'await websocket.send(reply)': received 1005 (no status code [internal]); then sent 1005 (no status code [internal]) - reply = {"cmd": "series", "series":
              2. In der SmartVISU sagt mir der Template-Checker, dass das php module "dom" nicht erreichbar sein. Installiert ist es aber.
              Cheers
              Art Mooney

              Kommentar


                #8
                So sieht der Abschnitt der module.yaml bei mir aus:
                Code:
                 # frontend communication support
                websocket:
                    module_name: websocket
                    enabled: true
                #    ip: 0.0.0.0
                    port: 2424
                    tls_port: 2425
                    use_tls: True
                    tls_cert: shng.cer
                    tls_key: shng.key
                Die Kommentarzeichen ab dem Parameter „Port“ kannst Du drin lassen. Das sind eh die Defaults. Den tls_Port kannst Du nur nutzen, wenn Du gültige Zertifikate und Schlüssel anlegst. Dazu gibt es im smartVISU-Forum einen Thread von mir. Fürs erste musst Du in smartVISU den Port 2424 konfigurieren und kannst dann die Visu nicht per https:// aufrufen. ShNG musst Du nach der Änderung der yaml neu starten.

                Beim smartvisu-Plugin habe ich den class_name klein geschrieben: „smartvisu“.

                Gruß Wolfram

                P.S: die Zusatzpakete für php hast Du installiert und Apache neu gestartet?
                https://www.smarthomeng.de/user/inst...smartvisu.html
                Zuletzt geändert von wvhn; 06.11.2021, 00:44.

                Kommentar


                  #9
                  Danke, ich habe nun das websocket-Modul aktiviert, allerdings ohne tls. Die Attribute "enabled: true" und "port: 2424" habe ich weggelassen, weil das mE die Defaults sind. Die smartvisu funktioniert jetzt auch weitgehend und im Log sind die meisten Meldungen verschwunden. Dafür sind ein paar neue hinzugekommen.

                  Code:
                  2021-11-06  20:21:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:22:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:23:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:24:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:25:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:26:22 ERROR    modules.websocket   visu_protocol Exception Type <class 'datetime.time'> not serializable
                  > Traceback (most recent call last):
                  >   File "/usr/local/smarthome/modules/websocket/__init__.py", line 563, in smartVISU_protocol_v4
                  >     reply = json.dumps(answer, default=self.json_serial)
                  >   File "/usr/lib/python3.7/json/__init__.py", line 238, in dumps
                  >     **kw).encode(obj)
                  >   File "/usr/lib/python3.7/json/encoder.py", line 199, in encode
                  >     chunks = self.iterencode(o, _one_shot=True)
                  >   File "/usr/lib/python3.7/json/encoder.py", line 257, in iterencode
                  >     return _iterencode(o, 0)
                  >   File "/usr/local/smarthome/modules/websocket/__init__.py", line 436, in json_serial
                  >     raise TypeError("Type %s not serializable" % type(obj))
                  > TypeError: Type <class 'datetime.time'> not serializable
                  2021-11-06  20:26:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  2021-11-06  20:27:38 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                  Ganz offenbar gibt es ein Problem mit Uhrzeit und Datum, was ja auch im Eingangspost schon Ursache eines anderen Problems war. Die Uhrzeit wird mir in der Visu auch nicht angezeigt.

                  Auch der Fehler, dass php dom nicht zur Verfügung steht ist immer noch da. Die php-Zusatzpakete sind bei mir alle installiert, apache2 vorsichtshalber neu gestartet. Keine Verbesserung, eventuell aber auch nicht problematisch(?).
                  Cheers
                  Art Mooney

                  Kommentar


                    #10
                    Wo kommt bei Dir denn ein reiner Zeitstempel (datetime.time) ins Spiel? Unterstützt in der Json Serialisierung ist nur ein Datum/Zeitstempel (datetime.datetime)
                    Viele Grüße
                    Martin

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

                    Kommentar


                      #11
                      Der Templatechecker prüft keine php Module, außer "mbstring". Der php Fehler muss also woanders her kommen. Wie lautet die Fehlermeldung genau? Gibt es im Apache Error Log weitere Informationen?
                      Hast Du in der smartVISU Konfiguration die Zeitquelle auf "Client" oder auf "Server" eingestellt?

                      Wann treten die Meldungen aus dem Websocket-Modul auf:
                      • immer nach dem Neustart?
                      • Nur wenn ein Client aktiv ist (Admin Interface oder smartVISU)
                      • nur bei Aufruf einer bestimmten Seite oder eines bestimmten items?

                      Kommentar


                        #12
                        Msinn, ich verstehe die Frage nicht recht. Ich benutze in einigen Items, die mit bestimmten tageszeitabhängigen Funktionen zu tun haben, folgendes:

                        Code:
                        eval: 1 if sh.TIME.DAYTIME() > datetime.time(7, 0) and sh.TIME.DAYTIME() < datetime.time(19, 30) else 0
                        Ich benutze das Item TIME.DAYTIME für die Tageszeit, weil der Server, auf dem SHNG läuft, nicht mit dem Internet verbunden ist und daher keinen Zeitserver erreicht. TIME.DAYTIME ist die Zeit, die von meiner Wetterstation über KNX gesendet wird. SHNG scheint damit auch klarzukommen, also das EVAL-Attribut oben funktioniert. Kann ich das gleiche mit datetime.datetime machen? Also einfach "datetime.time" ersetzen durch "datetime.datetime"?
                        Cheers
                        Art Mooney

                        Kommentar


                          #13
                          wvhn: Folgender Log-Eintrag wird jede Minute geschrieben:

                          Code:
                          2021-11-07  20:23:31 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                          Folgender Log-Eintrag erscheint nur, wenn ich am System arbeite, vermutlich wenn ich auf das Admin-Interface zugreife.

                          Code:
                          2021-11-07  20:25:46 ERROR    modules.websocket   smartVISU_protocol_v4 exception: received 1005 (no status code [internal]); then sent 1005 (no status code [internal])
                          Die wesentlichste Fehlfunktion, die ich in der smartvisu bemerke, ist dass jede Seite, die ich öffne, erst sehr langsam mit den Werten der Items "befüllt" wird, z.B. Temperaturen oder Statuswerte. Das war vorher nicht so. Dort rief ich eine Seite auf und die Werte waren sofort da.

                          Die Fehlermeldung im Templatechecker sieht so aus:

                          templatechecker.jpg

                          Zuletzt geändert von Art Mooney; 07.11.2021, 20:41.
                          Cheers
                          Art Mooney

                          Kommentar


                            #14
                            Leider kenne ich mich mit apache nicht gut aus, ich habe folgende Log-Datei gefunden:

                            Code:
                            smarthome@smarthomeNG:/var/log$ sudo nano /var/log/apache2/error.log
                              GNU nano 3.2                                                                                                                                     /var/log/apache2/error.log
                            
                            [Sun Nov 07 00:00:49.543124 2021] [mpm_prefork:notice] [pid 6264] AH00163: Apache/2.4.38 (Debian) configured -- resuming normal operations
                            [Sun Nov 07 00:00:49.543290 2021] [core:notice] [pid 6264] AH00094: Command line: '/usr/sbin/apache2'
                            Das sieht nicht sehr aufschlussreich aus. Gibt es noch ein Log?
                            Cheers
                            Art Mooney

                            Kommentar


                              #15
                              Ich meinte nicht Dein Item, sondern bezog mich auf den Log Eintrag des websocket Moduls. In der Kommunikation zwischen smartVISU und SmartHomeNG gibt es normalerweise nur Datum/Zeitstempel. Das Websocket Modul kann zur Kommunikation diese Zeitstempel in Json und zurück wandeln. Reine Zeitstempel (ohne Datum) werden bisher nicht unterstützt. Daher meine Frage, wo bei Dir einsolcher Zeitstempel (datetime.time) ins Spiel kommt.
                              Viele Grüße
                              Martin

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

                              Kommentar

                              Lädt...
                              X