Ankündigung

Einklappen
Keine Ankündigung bisher.

Plot lädt bei Page Reload nicht

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

    Plot lädt bei Page Reload nicht

    Hallo Wolfram,

    ich habe die develop plot.js ausprobiert: Mit Erfolg.
    Ich habe noch ein anderes Problem, das hatte ich aber zuvor (mit dem Workaround, vielleicht schon vorher) ebenfalls: Der plot wird nach (erneutem) Laden der Seite nicht aufgebaut, er bleibt leer. Wechselt man die Seite und geht wieder zurück, ist er sofort da.

    Viele Grüße,
    Jürgen

    EDIT wvhn: kopiert aus https://knx-user-forum.de/forum/supp...-zoom-advanced
    Zuletzt geändert von wvhn; 12.01.2023, 15:57.

    #2
    klotzek Hallo Jürgen,

    mit welchem Browser tritt das Problem auf? Ich kann das mit Firefox und Edge auf dem PC, Safari auf iPadOS und Chrome auf Android nicht nachstellen.
    Seiten habe ich mit F5, Ctrl-F5, dem Reload-Button in der Browserzeile und mit Click auf das smartVISU-Logo neu geladen. Das Füllen des Plots klappt immer.

    Gibt es Meldungen in der Browser-Konsole oder Einträge im Log von smarthomeNG? Oder im error.log des Webservers?
    Ist ein Proxy / Reverse Proxy aktiv, der die Websocket-Daten beim Reload blockieren könnte?

    Gruß
    Wolfram

    Kommentar


      #3
      Hallo Wolfram,

      ich habe den Chrome am Start.
      Eine der letzten Meldungen der Konsole ist:
      Code:
      [io.smarthomeng] sending data:  {"cmd":"series","item":"EG.Oekonomie.Temp_Scheune.ist","series":"avg","start":"9y","end":"now","count":"36500"}
      Nach wechseln der Seite und zurück ist dann der Receive enthalten:
      Code:
      [io.smarthomeng] receiving data:  {"cmd":"series","series":[[1389701081353,null],[1389704400000,3.9],[1389711600000,3.47],[1389722400000,2.95],[1389729600000,3.15],[1389736800000,3.15],[1389744000000,2.55],[1389751200000,1.65],[1389758400000,0.95],[1389765600000,0.83],[1389776400000,4.7],[1389783600000,5.55],[1389790800000,4.5],[.....
      Im smarthomeNG log ist Nichts diesbezüglich.
      nginx: In error.log und access.log Nichts diesbezüglich.
      Es ist weder ein Proxy, noch ein Reverse Proxy im Einsatz.

      Viele Grüße,
      Jürgen

      Kommentar


        #4
        Hallo Jürgen,

        kannst Du mal testweise die Anzahl der Datensätze (count-Parameter) verringern? Wenn wir davon ausgehen, dass ein Datensatz rund 20 Byte hat, dann sind 36500 Datensätze rund 712 kiB allein für die Serie - 11 mal die Größe des Sendepuffers von 64kiB.

        Ein Reload bricht die aktuelle Websocket-Verbindung einfach ab, während ein Seitenwechsel die aktuelle Serie beim Backend abbestellt und erst bei erneutem Aufruf wieder anfordert. Es kann sein, dass das shNG-Websocketmodul beim Reload aus dem Tritt kommt.

        Wenn der Aufbau des Plots mit kleineren Datenmengen funktioniert, müssen wir das Thema im shNG-Forum weiter untersuchen.

        Gruß
        Wolfram

        Kommentar


          #5
          Hallo Wolfram,

          das isses. Interessant ist, ich hab 2 dieser "Klopper" auf einer Seite. Das Verringern des Counts bei einem Diagramm genügt bereits, um beide Diagramme sofort anzuzeigen.

          Viele Grüße,
          Jürgen

          Kommentar


            #6
            Welche Datenbank ist im Einsatz? Ich kämpfe gerade mit einem anderen Problem, welches bei mysql auftritt, da pymysql nur einen cursor je Session unterstützt.

            Ich denke daran, weil zwei große Abfragen dazu führen könnten, dass sie incht sequentiell abgearbeitet werden können, sondern die beiden Anfragen sich am Thema Datenbank Cursor verhakeln.
            Viele Grüße
            Martin

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

            Kommentar


              #7
              Hallo Martin,

              bedaure, aber ich verwende SQLite.

              Viele Grüße,
              Jürgen

              Kommentar


                #8
                Hi klotzek,

                ich in im Moment gemeinsam mit wvhn an der Ursachenforschung für dieses Verhalten. Könntest Du bitte mit folgendem Code im Executor-Plugin
                die Laufzeit Deiner Datenbankabfrage ermitteln (ich hoffe ich habe keinen Typo drin). Am besten diese Laufzeitmessung auch für das zweite "Klopper"-Item durchführen.

                Es wäre schön wenn Du uns die Ergebnisse mitteilen könntest, besten Dank.

                Code:
                from datetime import datetime
                result = ""
                myItem = sh.return_item('EG.Oekonomie.Temp_Scheune.ist')
                print ("Start der DB-Abfrage :" + datetime.now().strftime("%m/%d/%Y, %H:%M:%S"))
                result= myItem.series("avg",start="9y", end="now",count=36500)
                print ("Ende der DB-Abfrage  :" + datetime.now().strftime("%m/%d/%Y, %H:%M:%S"))
                print(result)

                Besten Dank

                Viele Grüsse
                Andre

                Kommentar


                  #9
                  Hallo Andre,

                  sorry for late. Ich hab noch nicht ganz verstanden, wo das snippet rein soll. In die __init__.py des database plugings? Und: Würde eine Ausgabe ins log nicht mehr Sinn machen?

                  Viele Grüße,
                  Jürgen

                  Kommentar


                    #10
                    Er meint das Executor Plugin, dort kannst Du Python Code im Kontext von SHNG laufen lassen.

                    Kommentar


                      #11
                      Hier das Ergebnis:
                      image.png
                      Viele Grüße,
                      Jürgen

                      Kommentar


                        #12
                        2ter Klopper:
                        image.png
                        Viele Grüße,
                        Jürgen​

                        Kommentar


                          #13
                          Hallo bmx. Danke für den Hinweis. Das Plugin kannte ich gar nicht.....

                          Kommentar


                            #14
                            Hallo klotzek,

                            eine Antwortzeit von 1 Sekunde und weniger ist super, das kann ich fast nicht glauben. Auf was für einer Hardware läuft Deine shNG-Instanz ?
                            Bei mir

                            Kannst Du am Ende des Code-Snippets mal noch folgendes hinzufügen :

                            Code:
                            print ("Anzahl Einträge : " + str(len(result['series'])))
                            Das liefert die Anzahl der zurückgegeben Einträge

                            Bei mir liefert eine Abfrage auf ein Item welches erst seit 3 Monaten befüllt wird folgendes Ergebnis - dauert also ca. 4-5 Sekunden

                            Code:
                            Start der DB-Abfrage :01/24/2023, 15:12:47
                            Ende der DB-Abfrage  :01/24/2023, 15:12:51​
                            {'cmd': 'series', 'series': [(1668769455438, 0.0), (1668959859140, 0.01..........................
                            Anzahl Einträge : 718
                            VG
                            Andre

                            Kommentar


                              #15
                              Hallo Andre,

                              hier meine erweiterten Ausgaben:
                              image.png​ ;-))
                              image.png

                              Das ganze läuft bei mir auf einem Raspi4

                              Viele Grüße,
                              Jürgen

                              Kommentar

                              Lädt...
                              X