NEWS
objekt-Werte in tabelle darstellen
-
Ich habe heute versucht Daten unter vis-2 in einer Tabelle darzustellen. Leider schlugen meine Versuche mit basic-tabelle, basic-valuelisttext und inventwo-tabelle fehl.
Am liebsten wäre mir was in der Art:{ "name": "Produktion", // 1. Spalte "power": "0_userdata.0.PV.rPV_Power_Total", // 2. Spalte "day": "0_userdata.0.PV.rPV_Energy_Day" // 3. Spalte .... }, // 2. Zeile { "name": "Direktverbrauch", "power": "0_userdata.0.PV.rLoad_Power", "day": "0_userdata.0.PV.rUsed_Energy_Day" }d.h. ich definiere für jede Zeile die Objekte (9 Spalten, 36 Zeilen)
In der Tabelle erfolgt dann die Werte-Ermittlung mit so was wie{{getState(power).val}}und die Formatierung (Dezimalstelle) pro Spalte
Kann mir jemand sagen, wie bzw. mit was das funktioniert?
-
Ich habe heute versucht Daten unter vis-2 in einer Tabelle darzustellen. Leider schlugen meine Versuche mit basic-tabelle, basic-valuelisttext und inventwo-tabelle fehl.
Am liebsten wäre mir was in der Art:{ "name": "Produktion", // 1. Spalte "power": "0_userdata.0.PV.rPV_Power_Total", // 2. Spalte "day": "0_userdata.0.PV.rPV_Energy_Day" // 3. Spalte .... }, // 2. Zeile { "name": "Direktverbrauch", "power": "0_userdata.0.PV.rLoad_Power", "day": "0_userdata.0.PV.rUsed_Energy_Day" }d.h. ich definiere für jede Zeile die Objekte (9 Spalten, 36 Zeilen)
In der Tabelle erfolgt dann die Werte-Ermittlung mit so was wie{{getState(power).val}}und die Formatierung (Dezimalstelle) pro Spalte
Kann mir jemand sagen, wie bzw. mit was das funktioniert?
@Norwegen60 sagte in objekt-Werte in tabelle darstellen:
So direkt klappt das nicht.
vis1 und vis2 basiert darauf, das es states/datenpunkte beim server abonniert.
Ab da wird dann vis über jede Änderung informiert, welche dann in widgets angezeigt werden.Bei vis-start (also wenn die webseite geladen wird), geht vis einmal durch alle views des projekts, sammelt alle datenpunkte aus den widgets und dem binding ein, abonniert diese.
eine spätere Änderung der Anzahl der Datenpunkte geht dann nicht mehr. Erst nach ändern der Definition und Neuladen.Ein Befehl getState steht unter Vis nicht zur Verfügung.
Man könnte ihn zwar umsetzen, aber den Wert regelmäßig pollen ist nicht sehr effizient.Du hast nun folgende Möglichkeiten:
- Mit dem html widget eine html tabelle definieren. Diese datenpunkte werden von iobroker erkannt und abonniert. (max 50 bindings pro widget)
<table> <tr> <td>Produktion</td> <td>{0_userdata.0.PV.rPV_Power_Total}</td> <td>{0_userdata.0.PV.rPV_Energy_Day}</td> </tr> </table>- Du sammelst die Daten auf dem Server mit einem javascript ein (da kannst du die Daten direkt aus den Datenpunkten ablesen.
Dann erstellst du daraus dann
a) entweder direkt html, was du mit dem html-widget+binding dan anzeigen lassen kannst
b) ein json, was du in einem der bekannten json tabellen widgets dann ebenfalls anzeigen lassen kannst
c) json auf dem server erstellen + etwas mehr Kontrolle, auch über meinen Adapter jsontemplate. da kannst du dann mit der ejs templatesprache selbst das html dynamisch erzeugen lassen.
-
OK, dann waren die infos die ich so gesammelt hatte, komplett falsch.
In dem Fall bleib ich bei meiner Tabelle, die aus lauter basic-string - Feldern besteht. Die sind drekt mit dem Objekt verknüpft. Ist nur etwas mühsam 324 Felder schön zu platzieren. Aber macht man ja nicht so oft. So hatte ich es in vis-1.Obiger Vorschlag, den ich mit ChatGPT recht lange verfolgt habe, sah eigentlich recht elegant aus. Nur funktioniert hat er nie.
-
Ich habe heute versucht Daten unter vis-2 in einer Tabelle darzustellen. Leider schlugen meine Versuche mit basic-tabelle, basic-valuelisttext und inventwo-tabelle fehl.
Am liebsten wäre mir was in der Art:{ "name": "Produktion", // 1. Spalte "power": "0_userdata.0.PV.rPV_Power_Total", // 2. Spalte "day": "0_userdata.0.PV.rPV_Energy_Day" // 3. Spalte .... }, // 2. Zeile { "name": "Direktverbrauch", "power": "0_userdata.0.PV.rLoad_Power", "day": "0_userdata.0.PV.rUsed_Energy_Day" }d.h. ich definiere für jede Zeile die Objekte (9 Spalten, 36 Zeilen)
In der Tabelle erfolgt dann die Werte-Ermittlung mit so was wie{{getState(power).val}}und die Formatierung (Dezimalstelle) pro Spalte
Kann mir jemand sagen, wie bzw. mit was das funktioniert?
@Norwegen60 sagte in objekt-Werte in tabelle darstellen:
Kann mir jemand sagen, wie bzw. mit was das funktioniert?
Kannst du auch mit Javascript und mysql-Datenbank ein bisschen umgehen? Da gibt es weitere elegante Möglichkeiten zur Automatisierung deiner Tabellen-Darstellung. Ich habe etwa dies (noch im Test mit der Befüllung):

-
SQL ist kein Problem auch wenn ich MsSql hinten dran hängen habe. Java krieg ich mit viel Nachschlagen meist hin. Problem bei deiner Lösung sehe ich darin, dass ich, um aktuelle Werte anzuzeigen, die DB immer wieder abfragen müsste und das ist resourcenaufwändig. Ich glaub ich belass es deshalb bei Text-Feldern. Da wird immer nur das upgedatet, das auch sich auch tatsächlich ändert. Danke trotzdem.
Meins sieht mit vis-1 so aus und Ubuntu läuft mit 2% Auslastung in Hyper-V

Natürlich nur für jemand der Tabellen mag und sich nicht gleich überfrachtet fühlt :-) -
SQL ist kein Problem auch wenn ich MsSql hinten dran hängen habe. Java krieg ich mit viel Nachschlagen meist hin. Problem bei deiner Lösung sehe ich darin, dass ich, um aktuelle Werte anzuzeigen, die DB immer wieder abfragen müsste und das ist resourcenaufwändig. Ich glaub ich belass es deshalb bei Text-Feldern. Da wird immer nur das upgedatet, das auch sich auch tatsächlich ändert. Danke trotzdem.
Meins sieht mit vis-1 so aus und Ubuntu läuft mit 2% Auslastung in Hyper-V

Natürlich nur für jemand der Tabellen mag und sich nicht gleich überfrachtet fühlt :-)@Norwegen60 sagte in objekt-Werte in tabelle darstellen:
um aktuelle Werte anzuzeigen, die DB immer wieder abfragen müsste und das ist resourcenaufwändig
Wenn du mit MS SQL gut umgehen kannst, geht es auch anders. Ich habe ein Javascript, das kurz vor Mitternacht automatisch läuft und die Daten tageweise verdichtet. Dabei werden sie mit einer Stored Procedure direkt in der Datenbank
in separate Tabellen geschrieben, die wenig Platz brauchen. Die Stored Procedure:
Die sehr detaillierten Ursprungsdaten werden dann gelöscht. Dieses Skript schreibt dann die gewünschten Analysedaten als JSON in Datenpunkte. Ein Auszug daraus:[Nachtrag1]
Ich habe als Selbständiger 30 Jahre lang MS SQL-Datenbanken entwickelt und bin heute noch begeistert vom Automatisierungsgrad, der Datenkonsistenz, der Ressourcenschonung, etc.[Nachtrag2]
Zur Darstellung im VIS-2 verwende ich das Widget "Basic Table".