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.
    • S
      silbaer last edited by

      Moin!

      Sehe ich das richtig, das es sowas nicht gibt? Also einen Adapter in dem ich mir Datenpunkte raussuchen kann und diese bekomme ich dann als csv, JSON-Tabellenobjekt, HTML,...
      Die einzige Möglichkeit eine Tabelle in einer Visu dar zu stellen scheint mir ein Datenpunkt mit einem JSON-Tabellen-Objekt zu sein, oder? Und wenn meine Daten noch nicht so vorliegen, muss ich die per Script selbst zusammen bauen? Oder übersehe ich grad was oder habe was nicht verstanden?

      CU,
      silbaer

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

        @silbaer ich weiß nicht was du darstellen willst.
        die Referenz auf flot lässt mich an eventlist denken.

        Aber bitte mehr Infos

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

          @silbaer

          ja
          Die Anforderungen wären da wesentlich umfangreicher.
          Wenn man mal dran denkt, was man mit Excel oder Access machen kann (Inputdaten auswählen, beliebig transformieren und wieder ausgeben)

          Wenn du Skript vermeiden willst, könnte dir evtl. node-red weiterhelfen, aber
          am direktesten ist ein Skript

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

            @homoran 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. Diese beiden Datenpunkte möchte ich als Tabelle darstellen. Ggf. später noch mehr Datenpunkte.

            Schön wäre jetzt ein Adapter wo ich (beliebig viele) Datenpunkte auswählen kann. Dann möchte ich noch ein oder mehrere der Datenpunkte als Trigger wählen und dann werden für jeden Trigger der Zeitstempel und die Werte der ausgewählten Datenpunkte zu diesem Zeitpunkt als Tabellenzeile in ein JSON-Objekt geschrieben bzw. in einen Ausgabepunkt als JSON-Objekt. Maximale Anzahl muss man natürlich auch noch angeben können.

            Wenn man seltene Ereignisse hat ist ein Diagramm nicht immer hilfreich. Mit so einem Adapter könnte man sich leicht Tabellen beliebiger Datenpunkte zusammenklicken.

            eventlist schaut nur auf einen Datenpunkt wie mir scheint. Und wenn ich dann für die Anpassung wieder mit Scripten hantieren muss, kann ich das auch gleich selbst machen. Wenn ich rausfinde wie man die History-Datenpunkte ausliest.... 😄

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

              @silbaer sagte in Tabellen-Adapter analog FLOT?:

              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. Diese beiden Datenpunkte möchte ich als Tabelle darstellen. Ggf. später noch mehr Datenpunkte.

              das riecht genau nach dem vermuteten eventlist Widget

              so mache ich es mit der Poolsteuerung
              Screenshot_20220906-135952_Ecosia.jpg

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

                @homoran Äh, nein, nicht wirklich. Erstens hast du hier einen Datenpunkt für die Eventlist. D.h. mit schon vorhandenen Daten kann ich nicht (so einfach) arbeiten. Zweitens: Du hast zwei Spalten: Timestamp und EventData. Den Inhalt von EventData muss ich mir per Script zusammenbauen. Dann kann ich aber auch gleich ein "richtiges" Tabellen-JSON bauen. Was ich möchte ist für jeden Datenpunkt eine Spalte. Nicht ohne Grund erwähnte ich im Ursprungspost CSV...

                Also egal wie, ich brauche offensichtlich ein Script dass mir die Daten so aufbereitet wie ich das gerne hätte. Mit einem JSON Table Objekt bin ich wohl am flexibelsten.

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

                  @silbaer sagte in Tabellen-Adapter analog FLOT?:

                  Was ich möchte ist für jeden Datenpunkt eine Spalte. Nicht ohne Grund erwähnte ich im Ursprungspost CSV...

                  diese Verknüpfung war nicht ersichtlich!

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

                    @homoran Naja, die Beschreibung des Workflows und der Anforderungen in meinem zweiten Post ist meilenweit vom eventlist Widget entfernt. Wenn ich das mit flot vergleiche will ich eben nicht scripten. Aber egal, geht ja offensichtlich nicht ohne. Am Ende nicht so wild, aber halt nicht so einfach wie gedacht.

                    Homoran 1 Reply Last reply Reply Quote 0
                    • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            778
                                            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