Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Tabellen-Adapter analog FLOT?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Tabellen-Adapter analog FLOT?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @silbaer last edited by Homoran

      @silbaer ich habe immer noch nicht verstanden wie es ohne jedes Skript gehen soll.
      bei mir schreibt ein x-beliebiges Skript das sowieso läuft statt debug oututs diese in einen Datenpunkt.
      in diesen Datenpunkt könnten auch weitere Skripte schreiben.

      Deine "Anforderung"

      @silbaer sagte in Tabellen-Adapter analog FLOT?:

      Also einen Adapter in dem ich mir Datenpunkte raussuchen kann und diese bekomme ich dann als csv, JSON-Tabellenobjekt, HTML,...

      verstehe ich auch beim wiederholten Lesen nicht als Wunsch einer vielspaltigen Tabelle.
      Im Prinzip kann man daraus alles oder nichts ableiten, was mich zu der Nachfrage veranlasste.

      Selbst wenn du mehrere Spalten (je [historisiertem??] Datenpunkt) erzeugen könntest, wäre es eben nicht analog Flot, wenn da eine sinnvolle mehrspaltige Tabelle bei herauskommt.

      Bei einer Flot Chart mit mehreren Datenreihen werden die jeweiligen Linien anhand der Timestamps und des dazugehörigen Wertes gezeichnet.

      Diese Timestamps sind aber in den Linien unterschiedlich, auch wenn es nur Millisekunden sein sollten.
      Das würde bei "analog Flot" in einer Tabelle zu jeweils einer neuen Zeile führen.

      Was also willst du als Ergebnis haben?

      in deinem zweiten Post

      Ich habe mir ein Script erstellt das mit für mein go-e Charger ein Ladelog erstellt. Das schreibt am Ladeende (genauer: Wenn das Kabel abgezogen wird) die geladenen kWh und die RFID-Karte mit der freigeschaltet wurde in einen Datenpunkt.

      beschreibst du genau das von mir (beim Pumpenlog) verwendete Szenario: Ein Skript erzeugt ein Log. Das willst du darstellen.

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Homoran last edited by OliverIO

        @homoran
        Hm ich denke das ich aus dem ersten Post schon verstanden habe was er wollte.
        Er will eine Tabelle ausgeben
        Er will die reihenfolge der Spalten aus den datenpunkten selbst bestimmen
        Ggfs. will er je Spalte auch eine Transformation, also eine Formel wie bspw eine Multiplikation zur einheitenumrechnung
        Er will je Spalte die Formatierung und ggfs. irgendwelche einheitennamen anhängen
        Er will Spaltenüberschriften vorgeben können
        Er will eine maximale Anzahl von anzuzeigenden Zeilen angeben können.

        Mehr oder weniger das gleiche wie flot
        Nur das die Daten nicht grafisch sondern als
        Tabelle ausgegeben wird

        Homoran 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active last edited by mickym

          gelöscht

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @OliverIO last edited by

            @oliverio sagte in Tabellen-Adapter analog FLOT?:

            Hm ich denke das ich aus dem ersten Post schon verstanden habe was er wollte.

            Wow, dann muss deine Glaskugel um Längen besser sein als meine 😂

            @oliverio sagte in Tabellen-Adapter analog FLOT?:

            Er will eine Tabelle ausgeben

            Das ist das einzige was ich daraus lesen kann. Den Rest den du aufzählst sehe ich auch jetzt beim besten Willen nicht in dem Post.
            Deshalb bat ich ja um zusätzliche Infos.

            Aber wenn wir deine Annahmen als Basis nehmen habe ich keine Ahnung wie ein noch zu entwickelnder Adapter diese Anforderungen mit historisierten Daten diverser Datenpunkte halbwegs sinnvoll synchronisiert bekommt.

            Lasse mich aber gerne eines besseren belehren.

            1 Reply Last reply Reply Quote 0
            • S
              silbaer last edited by

              @homoran Eigentlich dachte ich spätestens im zweiten Post hätte ich alles klar genug erklärt, aber nochmal anders/ausführlicher:

              Fangen wir mal mit FLOT an: Dort suche ich mir per Dialog einen History Datenpunkt (DP1) aus und einen Zeitraum der Dargestellt werden soll. Jetzt habe ich eine Reiche von Werten und Flot stellt die in einem Diagramm dar. Statt eines Diagramms hätte ich jetzt aber gerne eine Tabelle: 1. Spalte "Timestamp", 2. Spalte"DP1" (wobei die Tabellenheader natürlich angepasst werden müssen aber erstmal irrelevant)

              Jetzt wähle ich einen zweiten Datenpunkt (DP2) aus. Wie du schon richtig erkannt hast, werden die Datenpunkte nicht den selben Timestamp haben. Deswegen soll ja ein DP als "Trigger" fungieren, so dass für jeden Wert dieses Datenpunktes eine Zeile in der Tabelle erzeugt wird. Die Werte von DP2 (und allen weiteren DPs) sollen für den Zeitpunkt des Trigger-DPs errechnet werden. Das mach Flot ja auch je nach Chart Type unterschiedlich (wobei in meine Fall der einfachste Fall "Schritte" der richtige wäre).

              Beispiel:
              Datenpunkt 1

              Timestamp | Value
              10:00 Uhr | V1
              10:10 Uhr | V2
              10:20 Uhr | V3
              10:30 Uhr | V4
              

              Datenpunkt 2

              Timestamp | Value
               9:00 Uhr | W1
              10:15 Uhr | W2
              10:18 Uhr | W3
              10:22 Uhr | W4
              

              Daraus soll folgende Tabelle werden

              Timestamp | DP2 | DP1
              10:00 Uhr |  W1 |  V1
              10:10 Uhr |  W1 |  V2
              10:20 Uhr |  W3 |  V3
              10:30 Uhr |  W4 |  V4
              

              Das dazugehörige JSON müsste dann so aussehen

              [
                {
                  Timestamp: "10:00 Uhr",
              	DP2: "W1",
              	DP1: "V1"
                },
                {
                  Timestamp: "10:10 Uhr",
              	DP2: "W1",
              	DP1: "V2"
                },
                {
                  Timestamp: "10:20 Uhr",
              	DP2: "W3",
              	DP1: "V3"
                },
                {
                  Timestamp: "10:30 Uhr",
              	DP2: "W4",
              	DP1: "V4"
                }
              ]
              


              Ja, mir ist klar, das der Timestamp in echt ganz anderes aussieht... 😉

              Das ganze kann man jetzt natürlich auch mit drei, vier,... Datenpunkten machen.

              Im Grunde ist in Flot alles schon da: Auswahl der Datenpunkte, Berechnung/Interpolieren der Werte zwischen den Werten eines Datenpunktes. Nur die Ausgabe müsste halt in einer anderen Form passieren.

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @silbaer last edited by

                @silbaer sagte in Tabellen-Adapter analog FLOT?:

                Im Grunde ist in Flot alles schon da: Auswahl der Datenpunkte, Berechnung/Interpolieren der Werte zwischen den Werten eines Datenpunktes

                Jein!
                Mit Interpolation meinst du wahrscheinlich die Aggregation.
                Ob das auch bei Tabellen einsetzbar ist weiß ich schlicht unf ergreifend nicht.

                aber ich sehe hier noch ein "Problem":

                @silbaer sagte in Tabellen-Adapter analog FLOT?:

                Wie du schon richtig erkannt hast, werden die Datenpunkte nicht den selben Timestamp haben. Deswegen soll ja ein DP als "Trigger" fungieren, so dass für jeden Wert dieses Datenpunktes eine Zeile in der Tabelle erzeugt wird.

                klingt einfach, aber ob es das ist weiß ich auch nicht.
                in Flot wird jede Kurve durch ihre Messpunkte gezogen, egal ob die Timestamps übereinpassen oder nicht. Ist ha auch egal, da die Punkte durch Linien (egal welcher Art) verbunden werden.

                gibt es jetzt Datenreihen bei denen die Daten wesentlich seltener aufgezeichnet werden muss in history eingestellt werden, wie oft der selbe Wert wiederholt gespeichert werden soll, damit die Linie noch sichtbar bleibt. Liegen nämlich im Bereich des Grafen nicht mindestens zwei historisierte Punkte ist es aus mit der Kurve.

                Wie soll jetzt in einer Tabelle mit solchen seltenen Werten umgegangen werden?
                extrapoliert hieße es wird in einer Zeile der Wert eingetragen. Die Vervielfältigung analog Flot für "alle" Zeilen müsste passend zum kürzesten Intervall in History geschehen.

                1 Reply Last reply Reply Quote 0
                • S
                  silbaer last edited by

                  @homoran said in Tabellen-Adapter analog FLOT?:

                  @silbaer sagte in Tabellen-Adapter analog FLOT?:

                  Im Grunde ist in Flot alles schon da: Auswahl der Datenpunkte, Berechnung/Interpolieren der Werte zwischen den Werten eines Datenpunktes

                  Jein!
                  Mit Interpolation meinst du wahrscheinlich die Aggregation.

                  Nein. Ich meine schlicht und ergreifend wie die einzelnen Messpunkte im Grafen verbunden werden. Das wird mit Chart Type eingestellt. Lies mal hier https://www.iobroker.net/docu/index-195.htm?page_id=198&lang=de#Datenpunktparameter

                  Linie: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als Gerade miteinander verbunden.
                  Bar: Jeder einzelne Messpunkt der Daten wird als vertikaler Balken dargestellt. Diese Darstellung empfiehlt sich nur bei wenigen Messpunkten.
                  Scatter plot: Die Daten werden als isolierte Punkte dargestellt. Die einzelnen Punkte werden nicht miteinander verbunden.
                  Schritte: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden bis zur nächsten Änderung horizontal als Gerade miteinander verbunden. Zum Zeitpunkt der Änderung wird eine Stufe eingelegt.
                  Spline: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als gebogene Kurve miteinander verbunden.

                  @homoran said in Tabellen-Adapter analog FLOT?:

                  Ob das auch bei Tabellen einsetzbar ist weiß ich schlicht unf ergreifend nicht.

                  aber ich sehe hier noch ein "Problem":

                  @silbaer sagte in Tabellen-Adapter analog FLOT?:

                  Wie du schon richtig erkannt hast, werden die Datenpunkte nicht den selben Timestamp haben. Deswegen soll ja ein DP als "Trigger" fungieren, so dass für jeden Wert dieses Datenpunktes eine Zeile in der Tabelle erzeugt wird.

                  klingt einfach, aber ob es das ist weiß ich auch nicht.

                  Doch ist es. Du hast doch geschlossene Kurven in Flot, oder? Was meinst du wie die Punkte dazwischen gezeichnet werden?

                  in Flot wird jede Kurve durch ihre Messpunkte gezogen, egal ob die Timestamps übereinpassen oder nicht. Ist ha auch egal, da die Punkte durch Linien (egal welcher Art) verbunden werden.

                  Richtig. P1(x,y) und P2(x,y) repräsentieren zwei Punkte im Grafen. Für jeden diskreten Wert P'(x) zwischen P1(x) und P2(x) wird je nach Chart Type ein P'(y) berechnet. Ob x und y nun Pixel oder Timestamp/Wert Paare sind ist egal. Die Berechnung ist die selbe nur mit anderen Zahlenwerten. Und genau das mach Flot ja.

                  gibt es jetzt Datenreihen bei denen die Daten wesentlich seltener aufgezeichnet werden muss in history eingestellt werden, wie oft der selbe Wert wiederholt gespeichert werden soll, damit die Linie noch sichtbar bleibt. Liegen nämlich im Bereich des Grafen nicht mindestens zwei historisierte Punkte ist es aus mit der Kurve.

                  Wie soll jetzt in einer Tabelle mit solchen seltenen Werten umgegangen werden?

                  Richtig. Da gäbe es verschiedene Strategien. Von "Kein Wert" bis hin zu "gehe zeitlich so weit zurück (oder vor) bis du einen Wert findest". Beides geht ohne das in history irgendwelche Einstellungen geändert werden müssen, wobei die letzte Option die sinnvollere ist. Letzteres müsste in history auch eine billige Aktion sein wenn ich das richtig verstanden habe wie da die Datenhaltung funktioniert. In SQL auch (mit Index auf timestamp), und in InFlux sowieso.

                  extrapoliert hieße es wird in einer Zeile der Wert eingetragen. Die Vervielfältigung analog Flot für "alle" Zeilen müsste passend zum kürzesten Intervall in History geschehen.

                  Nein. Wenn du mit "Intervall" ein regelmäßiges zeitliches Intervall meinst: Das ist nicht nötig. Siehe oben. Für jede Zeile müsste für jeden zusätzlichen Datenpunkt genau ein Wert interpoliert werden. Nimmt man Chart Type "Schritte" aka "letzter Wert" ist das ein einfaches Nachschlagen in der Werteliste, nimmt man Chart Type "Linie" ist das ein einfacher Dreisatz: P'(y) = ( (P'(x)-P1(x)) / (P2(x)-P1(x)) * (P2(y)-P1(y)) + P1(y)

                  Aber wie gesagt: Die ganze Funktionalität ist schon in Flot enthalten.

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    @silbaer sagte in Tabellen-Adapter analog FLOT?:

                    Lies mal hier

                    das kenne ich. Hab ich ja vor 7 Jahren geschrieben.

                    @silbaer sagte in Tabellen-Adapter analog FLOT?:

                    Die ganze Funktionalität ist schon in Flot enthalten.

                    nur ist flot ein 3rd Party Programm. Der Adapter adaptiert dieses in ioBroker.
                    diese gesamten Berechnungen werden aus flot https://www.flotcharts.org/ übernommen.

                    das gleiche gilt für eCharts. https://echarts.apache.org/en/index.html

                    Da bin ich mal gespannt ob ein Entwickler das mit Tabellen umsetzen kann (und will)

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Homoran last edited by

                      @homoran
                      Hm man könnte einfach den Adapter nehmen und anstatt malen die Werte in eine HTML Tabelle ausgeben.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @OliverIO last edited by

                        @oliverio sagte in Tabellen-Adapter analog FLOT?:

                        @homoran
                        Hm man könnte einfach den Adapter nehmen und anstatt malen die Werte in eine HTML Tabelle ausgeben.

                        wie gesagt. ich bin gespannt.
                        finde die Idee interessant.

                        Interpolation von bool oder string wird bestimmt lustig 😂

                        1 Reply Last reply Reply Quote 0
                        • S
                          silbaer last edited by

                          @homoran said in Tabellen-Adapter analog FLOT?:

                          Interpolation von bool oder string wird bestimmt lustig 😂

                          Kannst du dir in Flot ja jetzt schon anschauen 😉
                          Davon abgesehen geht "Schritte" aka "letzter Wert" in einer Tabelle immer 😜

                          OliverIO Homoran 2 Replies Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @silbaer last edited by

                            @silbaer

                            Also der beste Weg um überhaupt an die richtigen Daten zu kommen, wäre, das über eine DAtenbank wie bspw influxdb zu steuern. influx kann aggregation und sogar interpolation von daten.
                            diese daten können dann per sql abgerufen werden und per skript in ein beliebiges zielformat (html,csv,json) geschrieben werden

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @silbaer last edited by

                              @silbaer Erst mal vorweg: ich finde den Ansatz weiterhin "akademisch" interessant.

                              aber:
                              du bist der erste User der danach fragt. Und das bei 65.000 Usern und über 8+ Jahre.
                              da frage ich mich wie das denn bisher umgesetzt wurde.

                              Das bringt mich -hartnäckig (oder doch starrsinnig weil ich es nicht verstehe?) wie ich bin- zu der bereits früher gestellten Frage:
                              wenn du doch sowieso über ein Skript die Daten in einen Datenpunkt schreibst, warum formatierst du sie dabei nicht direkt in ein dir genehmes Format (z.B. Text, JSON oder HTML), so dass du es ähnlich wie ich nach deinem Gusto darstellen kannst.

                              Ich gebe zu, dass meine Anwendung viel Text enthält, bei dem es nichts zu extrapolieren gibt, allerdings auch Messwerte.

                              So wie ich dich verstanden habe wären das bei dir zum Ende des Ladevorgangs die entsprechenden Ladedaten, die dann per csv, JSON oder HTML als Tabellenzeile in den DP geschrieben würden.

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                silbaer @Homoran last edited by

                                @homoran said in Tabellen-Adapter analog FLOT?:

                                @silbaer Erst mal vorweg: ich finde den Ansatz weiterhin "akademisch" interessant.

                                aber:
                                du bist der erste User der danach fragt. Und das bei 65.000 Usern und über 8+ Jahre.
                                da frage ich mich wie das denn bisher umgesetzt wurde.

                                Das frage ich mich auch. Bzw. das werden alle per Script gelöst haben. Das sind zumindest die Ansätze die ich so gefunden habe. Ist ja nicht so, dass ich nicht vorher gesucht hätte...

                                Brauchen tut man so was nicht, aber für rapid prototyping ist so eine zusammenklick-Lösung natürlich nett. Und vielleicht für Leute die keine Zeit/Lust haben sich näher mit Scripten zu befassen. Rein mit Blockly wird eine Lösung schwierig (wenn überhaupt möglich), also muss man wieder javascript können...

                                Das bringt mich -hartnäckig (oder doch starrsinnig weil ich es nicht verstehe?) wie ich bin- zu der bereits früher gestellten Frage:
                                wenn du doch sowieso über ein Skript die Daten in einen Datenpunkt schreibst, warum formatierst du sie dabei nicht direkt in ein dir genehmes Format (z.B. Text, JSON oder HTML), so dass du es ähnlich wie ich nach deinem Gusto darstellen kannst.

                                Das werde ich jetzt auch so machen. Ein Script das die von mir gewünschte Tabelle als JSON-Objekt enthält. Das skinning kann ich dann in der Visu machen. So jedenfalls der Plan.

                                Ich gebe zu, dass meine Anwendung viel Text enthält, bei dem es nichts zu extrapolieren gibt, allerdings auch Messwerte.

                                So wie ich dich verstanden habe wären das bei dir zum Ende des Ladevorgangs die entsprechenden Ladedaten, die dann per csv, JSON oder HTML als Tabellenzeile in den DP geschrieben würden.

                                Genau. Für die Visu als JSON-Objekt. Vielleicht will ich später noch was mit den Daten machen, da muss ich mal schauen ob man da sowas wie ein Exportscript machen kann. Oder wie @OliverIO vorgeschlagen hat eine "richtige" Datenbank. Dafür ist allerdings mein aktuell eingesetzter Raspi 2B mit 1MB ein kleines bisschen schwach denke ich... Ich bin am überlegen über kurz oder lang auf einen richtigen Rechner um zu steigen, aber momentan fehlt mir dazu noch so ein bisschen der Elan und Hardwareempfehlungen...

                                F 1 Reply Last reply Reply Quote 0
                                • F
                                  final @silbaer last edited by

                                  Moin Zusammen.

                                  Ich habe die Diskussion hier mit Interesse verfolgt, und würde gerne mal eine Frage dazu stellen, da die Thematik sich (zumindest in meinen Augen) gleicht:

                                  Ich würde gerne meine im history adapter gesammelten Daten der Energiemessung in Excel am PC aufbereiten (als Pivot, mit Durchschnittswerten über wählbare Zeiträume, Max Werten etc). Jetzt speichert ja anscheinend history die Daten als json Datei? Kann ich die jetzt einfach regelmäßig am Raspi abgreifen und irgendwohin kopieren im laufenden Betrieb und dann am PC in Excel importieren, um so die Rohdatentabelle zu erzeugen?

                                  Gruß

                                  OliverIO 1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @final last edited by

                                    @final

                                    wenn für ein datenpunkt die history aktiviert wurde,
                                    kann, dort wo die verlaufsdaten angezeigt werden die daten als csv exportiert werden (knopf oben rechts)
                                    als skript regelmäßig exportieren hat hier sicherlich jemand schon eine vorlage als javascript oder blockly

                                    F 1 Reply Last reply Reply Quote 0
                                    • F
                                      final @OliverIO last edited by

                                      @oliverio

                                      Moin.
                                      Das habe ich schon mal versucht, hat nicht funktioniert bzw. nicht alle Daten exportiert im gewählten Zeitraum.
                                      Ich habe leider auch keine Zeit, mich in Skripte einzuarbeiten, deshalb hätte ich eben versucht, die json Datei zu kopieren und auf meinen PC zu bekommen.

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @final last edited by

                                        @final
                                        evtl hat jemand anderes hier bereits eine lösung dafür

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        536
                                        Online

                                        31.8k
                                        Users

                                        80.0k
                                        Topics

                                        1.3m
                                        Posts

                                        5
                                        26
                                        1512
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo