Hauptmenü

Balkendarstellung in cards

Begonnen von Damian, 08 Januar 2023, 21:57:43

Vorheriges Thema - Nächstes Thema

Damian

Syntax:

[<Device>:<Reading>:bar<nr><Periode><TimeOffset]

mit
nr: Anzahl der Perioden
Periode: day, week, month, year, decade

Bei day werden 24 Stunden als Balken dargestellt,
bei week werden 7 Tage (Mo bis So) der Woche dargestellt,
bei month werden bis 31 Tage des Monats dargestellt,
bei year werden 12 Monate des Jahres dargestellt,
bei decade werden 10 Jahre eines Jahrzehnts (Dekade) dargestellt.

TimeOffset Zeitliche Verschiebung von Werten

Dokumentation, hier speziell die Beschreibung von <collect type> mit bar: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card

und https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Darstellung_fortlaufender_Daten_als_S.C3.A4ulen

Datenimport: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Import.2C_.C3.84nderung_und_L.C3.B6schung_von_Diagrammdaten

Anwendung: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Edit: Version wurde eingecheckt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KernSani

Das sieht spannend aus... Vielleicht wäre es gut, die Möglichkeit zu haben eine Legende mit einzufügen oder ggf. unterschiedliche Farbschattierungen - Im Beispielbild erkenne ich jetzt auf die Schnelle z.B. nicht wie die Balken Fr.-So einzuordnen sind. Sind das die Vergangeheitswerte (und es gibt noch keine Werte für die aktuelle Woche? Oder gab es keine Vergangenheitswerte und das sind die aktuellen Werte? Zum Teil ergibt sich das wahrscheinlich aus dem Kontext (sprich dem Tag an dem ich drauf schaue) aber vermutlich ist das nicht immer eindeutig.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

Zitat von: KernSani am 13 Januar 2023, 15:52:49
Das sieht spannend aus... Vielleicht wäre es gut, die Möglichkeit zu haben eine Legende mit einzufügen oder ggf. unterschiedliche Farbschattierungen - Im Beispielbild erkenne ich jetzt auf die Schnelle z.B. nicht wie die Balken Fr.-So einzuordnen sind. Sind das die Vergangeheitswerte (und es gibt noch keine Werte für die aktuelle Woche? Oder gab es keine Vergangenheitswerte und das sind die aktuellen Werte? Zum Teil ergibt sich das wahrscheinlich aus dem Kontext (sprich dem Tag an dem ich drauf schaue) aber vermutlich ist das nicht immer eindeutig.

Ja, es wird noch Orientierungslinien geben, der aktuelle Wert bzw. Periode soll gekennzeichnet werden, die Vorgängerperioden sollen ebenfalls farblich unterschieden werden können. Es ist noch genug zu programmieren, vielleicht schaffe ich am Wochenende den ersten Prototypen fertigzustellen.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Nächste Stufe:

So sehen die letzten vier Wochen aus (bar4week) - siehe Anhang.

Die aktuelle Woche wird heller dargestellt, die vorherigen dunkler. Damit sollte man sich besser zurechtfinden. Die Woche beginnt immer mit Montag. Der aktuelle Sonntagswert fehlt noch, da er erst am Ende des Tages berechnet wird.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

im Anhang Darstellung bars2month
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#5
Und nun endlich eine Jahresübersicht.

Im Anhang bars2year

Abgebildet sind die gesammelten Echtdaten ab April im letzten Jahr, daher dunkel abgebildet, die Daten (helle Balken) des aktuellen Jahres kommen ja erst noch.

Es lassen sich beliebig viel Jahre darstellen. Die Monatsbalken werden entsprechend schmaler skaliert. Die automatische Skalierung der Balken abhängig von der Anzahl der Perioden gilt für alle bars-Darstellungen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#6
Als letztes die Darstellung von Jahresverbräuchen in Dekaden bars2decade.

Im Anhang Echtdaten der aktuellen Dekade (2020-2029) und der vorherigen (2010-2019).

Die Visualisierung bis zu sechs Dekaden (6 x 10 = 60 Jahre) sollte mit 60 Balken noch darstellbar sein.

Edit: bar6decade mit gleichen Daten anhängt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#7
Ich habe etwas weiter programmiert, jetzt mit Kennzeichnung des aktuellen Tages, mit Beginn der Periode (hier Woche), mit dem Durchschnittswert mit Linie sowie Maximum und Minimum mit Kennzeichnung im Diagramm.

Die Übernahme alter Werte kann einfach per Funktion vorgenommen werden. Hier z. B.

{DOIF_set_card_data("di","bla","day","bar4week",-300,fhem("get log.counter.MQTT2_DVES_C58DCB.total_gas ./log/counter.MQTT2_DVES_C58DCB.total_gas.log - 2022-01-01 2023-24-01 4:last_day"))}

Dabei ist -300 ein Sekundenoffset. Das Reading last_day wurde jeweils erst kurz nach Mitternacht ermittelt, mit -300 wird er zeitlich um 300 Sekunden zurückverschoben, um im richtigen Tag zu landen.

Es wird nur ein Wert (Reading) pro Diagramm dargestellt, sonst wird es zu unübersichtlich.

Die card-Syntax ist gleich geblieben.

Mit

card([bla:day:bar4week],"Gasverbrauch pro Tag in m³",undef,0,10,undef,undef,"m³",undef,"1",",fixedscaling,,,")

sieht das Ergebnis wie im Anhang aus.

Jetzt muss ich die neue Funktionalität im Live-System testen. Wenn die Tests erfolgreich verlaufen, werde ich die neue Version veröffentlichen

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#8
So sehen die letzten zwei Monate von PV-Ertrag und Bezug in einem Diagramm aus. Wenn es zu unübersichtlich wird, kann man Wochendarstellung mit weniger Balken nehmen. Ich habe jetzt doch mehrere Readings in der Darstellung erlaubt. Sinn macht es aber nur, wenn sich die Werte nicht überschneiden, so wie hier: PV positiv, Bezug negativ - es sind meine Echtdaten.


Edit: Bilder für einen Monat und für zwei Monate in der Darstellung angepasst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#9
Die neue Version läuft inzwischen im produktiven System. Im Anhang befindet sich eine Gegenüberstellung der bisherigen vier wöchigen col4w und der neuen bars1month Darstellung.

Da der Tagesverbrauch kurz nach Mitternacht bestimmt wurde, ist er in der bisherigen col4w-Darstellung immer um einen Tag verschoben gewesen. Bei der bars-Darstellung lässt sich ein Timeoffset angeben, hier bars1month-300, so dass der Tagesverbrauch nun im korrekten Tagesbalken landet. Die restlichen dunklen Balken sind die Werte des Vormonats.

Informativer ist natürlich eine zweimonatige Darstellung bars2month (zweites Bild), um einen Vergleich zum Vormonat zu haben
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#11
Neue DOIF-Version mit bar-Features wurde eingecheckt.

Siehe auch: https://forum.fhem.de/index.php/topic,120088.msg1262277.html#msg1262277

Übrigens: bar-Angaben kommen mit weniger Daten aus (pro Balken ein Wert) als col-Angaben - es werden keine Zeitangaben gespeichert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF