Autor Thema: Balkendarstellung in cards  (Gelesen 770 mal)

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Balkendarstellung in cards
« am: 08 Januar 2023, 21:57:43 »
Ich bin in der letzten Programmierphase der neuen Funktion.

Meine bisherigen Features sind:

Syntax:

[<Device>:<Reading>:bars<nr><Periode>]

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.

Beispiel:

bars5year würde bedeuten: es werden 12 Monate dargestellt Januar bis Dezember, für jeden Monat werden bis zu fünf Balken nebeneinander mit den Werten der vergangen Jahre dargestellt.

Auf diese Weise sieht man den Verlauf z. B. des Verbrauchs des aktuellen Jahres als auch der Jahre davor als Vergleich. Als Beispiel siehe Anhang mit Wochen-Darstellung für zwei Wochen: bar2week

Weiterhin können Werte durch einen Funktionsaufruf aus einem Log (über Filelog) oder einer Liste "Zeitstempel Wert,..." übernommen werden.

Die Sammlung der Werte funktioniert schon mal, jetzt muss noch die Visualisierung programmiert werden. Die Werte werden wie bei col-Diagrammen in verstecken Readings gespeichert.

Weitere Ideen/Anregungen können hier gepostet werden.
« Letzte Änderung: 12 Januar 2023, 19:13:19 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3574
Antw:Balkendarstellung in cards
« Antwort #1 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.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #2 am: 13 Januar 2023, 16:15:58 »
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

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #3 am: 15 Januar 2023, 15:08:15 »
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
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #4 am: 15 Januar 2023, 17:39:58 »
im Anhang Darstellung bars2month
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #5 am: 15 Januar 2023, 19:09:38 »
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.
« Letzte Änderung: 15 Januar 2023, 19:14:26 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #6 am: 15 Januar 2023, 22:41:03 »
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
« Letzte Änderung: 15 Januar 2023, 22:50:50 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #7 am: 24 Januar 2023, 18:03:02 »
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.

{set_bars([bla:day:bars4week],-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:bars4week],"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

« Letzte Änderung: 24 Januar 2023, 18:28:53 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #8 am: 27 Januar 2023, 17:12:44 »
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.
« Letzte Änderung: 28 Januar 2023, 13:59:17 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 10121
Antw:Balkendarstellung in cards
« Antwort #9 am: 28 Januar 2023, 22:52:16 »
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 zwei monatige Darstellung bars2month (zweites Bild), um einen Vergleich zum Vormonat zu haben
« Letzte Änderung: 29 Januar 2023, 10:08:07 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

 

decade-submarginal