Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler im Log nach Update

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

    #31
    Das sieht mir danach aus das gar keine Werte vom Websocket kommen. Gehen denn Bool oder num Items?

    Kommentar


      #32
      Ja, mit anderen Items habe ich keine Probleme bemerkt, es werden insbesondere sehr viele Temperaturwerte mit basic.print angezeigt. Auch bool-Items nutze ich in der smartVISU ohne Probleme.

      Im Log sehe ich folgende Fehlermeldungen, wobei die erste Zeile dieser Meldung einmal in der Minute kommt, die anderen Zeilen deutlich seltener:

      Code:
      2021-11-14 21:45:40 ERROR modules.websocket update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
      2021-11-14 21:45:48 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-14 21:00:07 ERROR modules.websocket smartVISU_protocol_v4 exception: received 1005 (no status code [internal]); then sent 1005 (no status code [internal])
      Es ist offensichtlich, dass dies etwas mit dem Zeit- und Datumsitem zu tun hat. Ob das auch ursächlich für den Fehler ist, kann ich nicht beurteilen.
      Cheers
      Art Mooney

      Kommentar


        #33
        MSinn hatte dazu auch schon etwas in Posts #10 und #15 geschrieben.
        Cheers
        Art Mooney

        Kommentar


          #34
          Lass Dir mal die „smarthomeNG“-Seite aus dem Systemmenü von smartVISU anzeigen. Funktionieren da die Anzeigen von der System-Startzeit und Sonnenauf- und -untergang auch nicht? Die verwenden nämlich den gleichen Code, z. B.
          Code:
          {{ basic.print('sunrise', 'env.location.sunrise', 'time') }}
          Ob das item „env.location.sunrise“ einen Wert enthält, solltest Du im shNG Webinterface prüfen.
          Zuletzt geändert von wvhn; 14.11.2021, 22:43.

          Kommentar


            #35
            Übrigens: Das Datum wird nun auf meinem Tablet in der smartVISU angezeigt. Gestern Abend war das noch nicht so. Offenbar wurde der Wert für das Datum "2021-11-15" erst seit heute Nacht angezeigt, als das Datum einen neuen Wert bekommen hat. Wenn ich hier am PC die smartVISU aufrufe, wird das Datum nicht angezeigt.

            Eben habe ich die Seite am Tablet aktualisiert und das Datum ist jetzt auch am Tablet weg.

            Im Systemmenü sehe ich die Fehler aus dem Log auch nochmal aufgelistet. Die von Dir genannten Zeiten werden allerdings angezeigt. Siehe unten:

            smarthomeng.jpg

            Cheers
            Art Mooney

            Kommentar


              #36
              Machen wir an dieser Stelle mal eine Bestandsaufnahme, denn ich habe Dich wohl teilweise falsch verstanden. Wenn Du schreibst, smartVISU zeige die Uhrzeit nicht an, dann meinst Du die Uhrzeit, die Deine items TIME.DATE bzw. TIME.DAYTIME repräsentieren sollen. Die schmeißen aber schon in shNG Fehler.

              Nachdem Du die php-Versionen in Ordnung gebracht hast, funktioniert smartVISU und das Widget basic.print gibt auch items des Typs foo aus, wenn etwas sinnvolles drin steht (siehe z.B. env.location.sunrise und …sunset im obigen Bild).

              Dein Problem beschränkt sich somit noch auf das genannte item und die damit verbundene Fehlermeldung.

              Ist das so richtig zusammengefasst?

              Kommentar


                #37
                Ja, so kann man es zusammenfassen.
                Cheers
                Art Mooney

                Kommentar


                  #38
                  Dann schau Dir am besten im Admin-Interface an, was in den Items tatsächlich drin steht und wie oft dort ein Update kommt. Notfalls müsstest Du eine Logik schreiben, die das Datum und die Uhrzeit in Strings umsetzt, oder in einen Standard-Zeitstempel - also Inhalte, die das Websocket-Modul verarbeiten kann. Siehe hierzu die Posts von Msinn.

                  Kommentar


                    #39
                    Msinn , die Frage in #10 woher datetime.time kommt, kann ich beantworten: aus der Decode-Methode des knx-Plugins für den DPT 10. Übrigens gibt DPT 11 dann datetime.date zurück.

                    Wenn das Websocket-Modul beide nicht unterstützt, dann kann man per se gültige items nicht direkt in smartVISU abfragen. Wie gehen wir damit um?

                    Gruß
                    Wolfram

                    Kommentar


                      #40
                      Die Json Konvertierung in Python unterstützt beide Datentypen per se nicht. Man kann über eine extra Funktion der json Konvertierung jedoch zusätzliche Datentypen beibringen. Ich nehme das für das nächste Release mal ins Backlog.
                      Viele Grüße
                      Martin

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

                      Kommentar


                        #41
                        Alles klar. Das Update kommt minütlich. Offenbar löst dann jede Aktualisierung eine Fehlermeldung im Log aus. Ich schaue mir die Möglichkeit an, den Inhalt in einen String zu konvertieren.

                        Danke für den stetigen Einsatz bis hierhin!
                        Cheers
                        Art Mooney

                        Kommentar


                          #42
                          Art Mooney Wenn Du statt eines datetime.time Wertes einen datetime.datetime Wert speichern solltest, sollte das auch funktionieren. Dann musst Du nicht die Formatierung im String Anzeige konform vornehmen, sondern kannst das der Visu überlassen.

                          wvhn datetime.date sollte bereits funktionieren. Im Websocket Modul sind bereits folgende Konvertierungen implementiert, die die Python eigenen json Konvertierung erweitern:

                          Code:
                              def json_serial(self, obj):
                                  """JSON serializer for objects not serializable by default json code"""
                          
                                  if isinstance(obj, decimal.Decimal):
                                      return float(obj)
                                  if isinstance(obj, (datetime, date)):
                                      return obj.isoformat()
                          
                                  raise TypeError("Type %s not serializable" % type(obj))
                          Die Datentypen decimal.Decimal, datetime und date werden dort bereits konvertiert.
                          Viele Grüße
                          Martin

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

                          Kommentar


                            #43
                            Ich kann bestätigen, dass das Datum auch angegeben wird. Wie schon gesagt mit dem Nachteil, dass es sehr lange dauert, bis der Wert in der VISU angezeigt wird.

                            Leider bekomme ich das Item TIME.DATE und TIME.DAYTIME einzeln vom KNX-Bus geliefert. Damit habe ich nicht in der Hand, wie der Wert TIME.DAYTIME geliefert wird. Die Wetterstation, von der die Zeit kommt, bietet auch nicht an, ein kombiniertes Objekt aus Datum und Uhrzeit auszugeben. Vor dem Hintergrund ist es wohl einfacher, foo in str umzuwandeln.

                            Ich versuche mich in der Umwandlung in einen String.
                            Cheers
                            Art Mooney

                            Kommentar


                              #44
                              Ich habe die Umwandlung in einen String mit folgender Logik gemacht:

                              Code:
                              now = sh.TIME.DAYTIME()
                              time = now.strftime("%H:%M")
                              sh.TIME.STRINGTIME(time)
                              In den smartVISU-Seiten habe ich nun die Zeit-Items durch entsprechende Stringitems ersetzt. Ich dachte, dass ich damit die Fehlermeldungen im Log auch loswerde. Dort heißt es aber weiter jede Minute:

                              Code:
                              2021-11-20  23:08:22 ERROR    modules.websocket   update_visu: Error in 'await self.update_item(...)': Type <class 'datetime.time'> not serializable
                              Leider wird der Wert auch nicht in der smartVISU gezeigt. Der Template-Checker zeigt alles grün und das nun verwendete Item "TIME.STRINGTIME" hat im Admin-Interface auch den richtigen Wert.

                              Ich nehme an, dass die Zeit nun auch - nach einer gewissen Wartezeit - auf der VISU-Seite auftauchen wird. Im Augenblick warte ich noch darauf.
                              Cheers
                              Art Mooney

                              Kommentar


                                #45
                                Offenbar fordert smartVISU immer noch ein item vom Typ datetime.time bei shNG an. Wenn Du alle Vorkommen des items durch das Stringitem ersetzt hast und der Fehler immer noch auftritt, dann hast Du wahrscheinlich vergessen, den smartVISU-Cache zu löschen. Je nach Browser und Gerät muss man auch den Browsercache oder die Websitedaten für die betreffende URL löschen.

                                Die Wartezeit bis zum Anzeigen des Datums in smartVISU kann ich mir noch nicht erklären. Hier wäre ein Vergleich sinnvoll, ab wann ein brauchbarer Wert im item steht (shNG Admin Interface) und wie lange es dann dauert, bis smartVISU ihn übernimmt.

                                Kommentar

                                Lädt...
                                X