Ankündigung

Einklappen
Keine Ankündigung bisher.

Seite mit nur Plots erhält keine Daten

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

    Seite mit nur Plots erhält keine Daten

    Auf einer Seite, welche ausschliesslich nur Plots enthält, werden keine Daten angefordert, da (scheinbar) io.run nicht aufgerufen wird, wenn sich (sonst) keine Widgets auf der Seite befinden. Es ist auch unwichtig was für ein Widget und welches Item es bedient, es muss nur eins mit auf der Seite sein, damit io.run aufgerufen wird.

    #2
    Der Fehler ist im openHAB Treiber ab Zeile 147. Die Funktionen, welche die Logs und die Plots auf der Seite suchen, werden nur dann aufgerufen, wenn widget.listeners() (die Liste der abonnierten items außer Plots und Logs) nicht leer ist.

    Kannst Du das ändern?

    Gruß
    Wolfram

    Kommentar


      #3
      Hallo Wolfram,

      meine Debugs haben ergeben, dass nur io.init aufgerufen wird. io.run wird doch nicht durch den Treiber, sondern beim Aufrufen/Wechseln einer Seite von smartVISU aufgerufen oder? Und das passiert nicht.
      Oder bekommt bei dir, mit anderem Treiber, und einer Seite mit nur einem Plot, dieser Daten?

      Gruß
      Patrik
      Zuletzt geändert von PatrikG; 05.02.2023, 16:53.

      Kommentar


        #4
        Hallo Patrik,

        io.run wird immer beim Event pagecontainerbeforeshow aufgerufen. Der Eventhandler dafür wird in der root.html definiert. Unmittelbar vorher werden fx.init() und repeater.init() im selben Eventhandler aufgerufen. Die Visu müsste dabei schon auf einen gravierenden Fehler laufen, damit io.run nicht ausgeführt wird.

        Ich habe gerade eine Testseite mit einem Plot ohne weitere Widgets erstellt. Die wird mit dem Offline-Treiber korrekt angezeigt.

        Gruß
        Wolfram

        Kommentar


          #5
          Hallo Wolfram,

          du hast natürlich recht, ich hatte das falsche Consollog offen, da wurde der Debugeintrag von io.run nicht angezeigt. Asche auf mein Haupt, bin schon zulange raus.

          Da io.run doch ausgeführt wird, hast du auch weiter recht, dass es an widget.listeners() liegt. Ich war bisher der Meinung, dass darin alle auf der Seite verwendeten Items stehen. Ok, wieder was dazu gelernt. Aber bevor ich das jetzt anpasse, trotzdem die Frage: Sollte es nicht doch so sein, dass in widget.listeners()alle auf der Seite verwendeten Items stehen, egal in welchen Widget diese verwendet werden?

          Gruß
          Patrik

          Kommentar


            #6
            Hallo Patrik,

            die Bezeichnung widget.listeners() ist wahrscheinlich historisch gewachsen und nicht ganz präzise. Inhaltlich brauchen wir aber die Trennung zwischen Items, Serien, Logdaten und URLs, da sie unterschiedlich angefordert und ausgewertet werden. Deswegen gibt es weitere Funktionen widget.plot, widget.log und widget.urls zum Auflisten der jeweiligen listener.

            Kommentar zur widget.listeners in der base.js:
            Code:
                /**
                 * Returns all unique items from all widgets except plots, logs and url data sources.
                 *
                 * @return    array  unique list of the items
                 */
            ​
            Eine Aufnahme von Serien, Logs und URLs in widget.listeners() bringt daher nichts.

            Gruß
            Wolfram

            Kommentar


              #7
              Mit der neuen Version des openHAB-Treibers von PatrikG , die jetzt im develop branch ist, sollte das Problem behoben sein.

              Gruß
              Wolfram

              Kommentar

              Lädt...
              X