SVG mit Wochengraphen

Begonnen von o.l.i, 15 August 2023, 16:57:58

Vorheriges Thema - Nächstes Thema

o.l.i

Hallo Leute,

ich möchte ein SVG erstellen welches mir Den Stromverbrauch pro Woche als Graph anzeigt. Sprich ein Graphen für eine Woche. Es soll die letzten 8 Wochen bzw. dann 8 Graphen im Plot ausgeben.
Ich habe mal mit Fixedrange rumgespielt, es aber nicht hinbekommen.

Hat jemand einen Hnweis dazu?

Danke,
Oliver


rudolfkoenig

fixedoffset setzen und passend zoomen. Letzteres dann per URL "verewigt"
Oder fixedrange einmal die Woche per Skript aendern.

o.l.i

Danke Rudi für deine Rückmeldung.
Ich habe mal mit fixedrange rumgespielt und beide Möglichkeiten getestet. Sprich mit einem festen Datum range oder mit eine Angabe wie weit in die Vergangeheit gegangen werden soll.

Ich habe eine Tagessicht, Monatssicht und Jahressicht hinbekommen aber leider keine Wochengraphen. Wird dies von FHEM nicht unterstützt? Z.b. Kalenderwocheangabe etc.

Oliver

o.l.i

Konkret scheint folgendes nicht zu funktionieren: fixedrange = 8weeks
Mit dieser Art und Weise hat es für Tage (8days) und Jahre (8years) geplappt. Aber für Wochen (8weeks) und Monate (8months) nicht funktioniert.


frank

Zitat von: o.l.i am 17 August 2023, 11:43:56Konkret scheint folgendes nicht zu funktionieren: fixedrange = 8weeks
Mit dieser Art und Weise hat es für Tage (8days) und Jahre (8years) geplappt. Aber für Wochen (8weeks) und Monate (8months) nicht funktioniert.

so wird es ja auch in der commandref beschrieben. "8hours" sollte auch funktionieren.
siehst du den text nicht beim eingeben des attributes wie im anhang?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

rudolfkoenig

ZitatIch habe eine Tagessicht, Monatssicht und Jahressicht hinbekommen aber leider keine Wochengraphen. Wird dies von FHEM nicht unterstützt? Z.b. Kalenderwocheangabe etc.
Kalenderwochenangabe gibts nicht, nur Anzahl der Wochen vor der aktuellen Woche.
In der Wochenansicht wird auf die Woche gerundet, und wann die Woche anfaengt, kann man mit plotWeekStartDay aendern.

ZitatKonkret scheint folgendes nicht zu funktionieren: fixedrange = 8weeks
Stimmt, mit Zahl ist nur hour, day und year implementiert.
Ohne Zahl gibts fuer hour, qday, day, week, month, year.

gichtl

#6
Ich hänge mich gerade mal an den Thread ran, weil ich ein gleich gelagertes Problem habe:

Ich möchte in der Tagesansicht neben dem aktuellen Stromverbrauch in weiteren Plots den Verbrauch der letzten sieben Tage davor einsehen. Das funktionier mit fixedoffset -1 bis -7. Geht man jedoch ein paar Tage zurück so bleiben die letzten sieben Tage aufgrund "fixedoffset" zeitlich kleben.

Zitat von: rudolfkoenig am 02 Januar 2020, 22:19:55fixedoffset must be an integer ($fo =~ m/^[+-]?\d+$/), and it simply replaces the off value from the URL.
That means days for the default zoom.

Gäbe es hier die Möglichkeit für ein "reloffset" oder bekommt man mit einem perl Ausdruck irgendwie die off value in das Attribut? Über logproxy den Plot zu verschieben ist leider keine Lösung da das sieben weitere gplots erfordert und auch nicht dynamisch auf die Zoomstufe (Tag/woche/Monat) skaliert.

betateilchen

fixedrange kann auch perl Code auswerten.

Das nutze ich in einigen SVG plots dazu, immer die Werte von Montag-Freitag der laufenden Woche darzustellen, egal an welchem Tag in der Woche ich den plot anschaue.

attr SVG_12345 fixedrange {mo2fr($wday)}
und in mo2fr() wird der Zeitraum berechnet und als Attributwert zurückgeliefert

sub mo2fr {
  my $wday = shift;
     $wday = 7 unless $wday;
  my @a    = localtime(time - ($wday-1)*DAYSECONDS);
  my $from = strftime "%Y-%m-%d",@a;
     @a    = localtime(time - ($wday-6)*DAYSECONDS);
  my $to   = strftime "%Y-%m-%d",@a;
  return "$from $to";
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gichtl

Daß fixedrange inzwischen auch einen perl Ausdruck verarbeitet ist mir bereits aus [Wunsch] 98_SVG.pm - fixedrange mittels perl code dynamisch erzeugen bekannt.

Man könnte durchaus von fixedoffset auf fixedrange umstellen, aber auch dafür ist mir nicht bekannt wie man an den aktuellen off-Wert aus der URL kommt. Zudem bräuchte man auch die Zoomstufe (Tag, Woche, Monat) um mit dem Offset das passende absolute Intervall zu ermitteln.




betateilchen

Meiner Meinung nach denkst Du viel zu kompliziert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gichtl

#10
Zitat von: betateilchen am 05 August 2024, 18:18:58Meiner Meinung nach denkst Du viel zu kompliziert.

Dann verrate mir doch wie man einfach mit fixedrange (oder fixedoffset) zu einem beliebigen (älteren) Tagesdiagramm ein weiteres Tagesdiagramm vom jeweiligen Tag davor bekommt.

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gichtl

#12
Das habe ich auf einer Seite für das heutige Datum ohne fixedoffset sowie für die Tage davor mit fixedoffset: -1, -2, -3 usw. bereits eingerichtet.

Und jetzt klicke auf den Scroll-Pfeil 4x nach links so daß im obersten Diagramm der 1.August und darunter die Vortage 31. 30. und 29.Juli erscheinen.

betateilchen

*achselzuck*

Vermutlich habe ich aus Deinen Texten immer noch nicht verstanden, was Du eigentlich haben möchtest.

Egal. Schönen Abend.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gichtl

#14
Gerne mit Beispiel: Ich möchte daß wenn man ausgehend von dem letzten Screenshot vier Tage zurück geht "im obersten Diagramm der 1.August und darunter die Vortage 31. 30. und 29. .Juli erscheinen.", also genau so wie im angehängten Beispiel

Zitat von: betateilchen am 05 August 2024, 18:18:58Meiner Meinung nach denkst Du viel zu kompliziert.
Gerne freue ich mich über einen einfachen und unkomplizierten Lösungsvorschlag wenn DU meinst daß ich viel zu kompliziert denke.



rudolfkoenig

fixedoffset kann ab sofort als Perl-Ausdruck angegeben werden, analog zu fixedrange.
Die ergaenzte Doku ist:
ZitatSet a fixed offset for the plot. The resolution is the currently chosen zoom-level.
Is evaluated as a perl expression, if enclosed in {}.
If the current resolution is day, fixedoffset with {$FW_pos{off}-1} will show the data from the day before the current selection.