Ankündigung

Einklappen
Keine Ankündigung bisher.

Database Plugin 1.6.9 Backend Webif: Oops, Error 500

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

    Database Plugin 1.6.9 Backend Webif: Oops, Error 500

    Ich verwende SmartHomeNG 1.9.5 master und u.a. das Plugin Database. Das Plugin ist mit einer MariaDB auf dem gleichen Raspberry verbunden. Das System funktioniert und die Daten werden in der Datenbank gespeichert. Ich kann mit HeidiSQL von extern auf die Datenbank zugreifen.

    Wenn ich aber im Backend das Webif des Database Plugin öffnen will, kommt nach ein paar Sekunden die Fehlermeldung "Oops, Error 500". Im Log von SmartHomeNG finde ich keinerlei Einträge zu diesem Fehler.

    Vor ein paar Tagen konnte ich noch normal das Webif öffnen. Andere Webif (z.Bsp. MQTT) funktionieren einwandfrei.

    Was muss ich machen, damit das Webif wieder funktioniert ? Gibt es irgendwo einen Cache, den ich löschen muss ?

    #2
    Was steht denn im SmartHomeNG Log?
    Viele Grüße
    Martin

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

    Kommentar


      #3
      Im Log steht nichts im Zusammenhang mit diesem Plugin.

      Kommentar


        #4
        Habe heute morgen den Raspberry Pi neu gestartet und die Log-Dateien gelöscht. Dann habe ich nochmals versucht das Plugin zu öffnen. Jetzt finde ich in smarthome-warnings.log diesen Eintrag:

        HTML-Code:
        2024-01-08  07:15:04 ERROR    cherrypy.error.548145478672 [08/Jan/2024:07:15:04] HTTP
        Traceback (most recent call last):
          File "/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cprequest.py", line 638, in respond
            self._do_respond(path_info)
          File "/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cprequest.py", line 697, in _do_respond
            response.body = self.handler()
          File "/home/pi/.local/lib/python3.9/site-packages/cherrypy/lib/encoding.py", line 223, in __call__
            self.body = self.oldhandler(*args, **kwargs)
          File "/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
            return self.callable(*self.args, **self.kwargs)
          File "/usr/local/smarthome/plugins/database/webif/__init__.py", line 127, in index
            return tmpl.render(p=self.plugin,
          File "/usr/local/lib/python3.9/dist-packages/jinja2/environment.py", line 1301, in render
            self.environment.handle_exception()
          File "/usr/local/lib/python3.9/dist-packages/jinja2/environment.py", line 936, in handle_exception
            raise rewrite_traceback_stack(source=source)
          File "/usr/local/smarthome/plugins/database/webif/templates/index.html", line 159, in top-level template code
            {% set tab3title = _('Verwaiste Items') %}
          File "/usr/local/smarthome/plugins/database/webif/templates/base_database.html", line 174, in top-level template code
            {% set tab2title = _('Plugin-API') %}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 271, in top-level template code
            {% if scroll_heading is not defined %}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 1, in top-level template code
            {% block doc -%}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 4, in block 'doc'
            {%- block html %}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 96, in block 'html'
            {% block body -%}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 99, in block 'body'
            {% block content -%}
          File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 248, in block 'content'
            {% block bodytab3 %}
          File "/usr/local/smarthome/plugins/database/webif/templates/index.html", line 187, in block 'bodytab3'
            <td id="{{ item }}_orphan_time">{% if language == 'en' %}{{ p.db_lastchange(item).strftime('%m/%d/%Y %H:%M:%S') }}{% else %}{{ p.db_lastchange(item).strftime('%d.%m.%Y %H:%M:%S') }}{% endif %}</td>
          File "/usr/local/smarthome/plugins/database/__init__.py", line 515, in db_lastchange
            return self._datetime(last_change)
          File "/usr/local/smarthome/plugins/database/__init__.py", line 1793, in _datetime
            return datetime.datetime.fromtimestamp(ts / 1000, self.shtime.tzinfo())
        TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
        
        ​

        Kommentar


          #5
          Das sieht so aus, als wenn für einen Datensatz aus der Datenbank kein Timestamp geliefert wird (warum auch immer). Welcher Datensatz in der Datenbank das verursacht, kann ich aus dem Log leider nicht sehen.

          Darüber stolpert das Webinterface, beim Versuch die Daten für das 3. Tab (Verwaiste Items) zusammenzustellen.

          Als schnelle Möglichkeit fällt mir nur ein, in plugins/database/webif/templates/index.html die Zeile 187 so anzupassen, dass keine Datumsanzeige erfolgt:

          statt
          Code:
             <td id="{{ item }}_orphan_time">{% if language == 'en' %}{{ p.db_lastchange(item).strftime('%m/%d/%Y %H:%M:%S') }}{% else %}{{ p.db_lastchange(item).strftime('%d.%m.%Y %H:%M:%S') }}{% endif %}</td>
          nur
          Code:
            <td></td>

          Das Problem eines fehlerhaften/fehlenden Datums sauber abzufangen muss bis zum kommenden Release warten.

          Viele Grüße
          Martin

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

          Kommentar


            #6
            Fehler gefunden. In der Tabelle "item" fand ich diese Einträge:

            shng_error1.png

            Ich habe hier nun "Dummy"-Einträge gemacht und das Webif konnte wieder ohne Fehler geöffnet werden.

            Wenn ich mich richtig erinnere, habe ich diese 2 Items eingerichtet, nie benutzt und wieder entfernt. Daher waren da vermutlich auch keine Daten hinterlegt.

            Kommentar


              #7
              manhartm, schön, dass Du die Ursache gefunden hast. Ich habe das Plugin entsprechend angepasst, damit dieser Fehler zukünftig sauber abgefangen wird. Anpassung ist im Develop und geht in kommendes Release mit ein.

              Kommentar

              Lädt...
              X