Hallo Rudolf,
um z.B. auch Vorhahreswerte ausgeben zu können habe ich fixedrange mit Offset in 98_SVG bei mir eingebaut.
Vielleicht ist das ja auch für die Community interessant.
Gruß
Klaus
Beispiel:
#Plot aktuelle Jahreswerte
define wl_AW4 SVG Log_Wetter_avg:kpb_ks300_4:CURRENT
attr wl_AW4 fixedrange year
#Plot Vorjahreswerte
define wl_AW41 SVG Log_Wetter_avg:kpb_ks300_4:CURRENT
attr wl_AW41 fixedrange year -1
Hierzu müssen in 98_SVG folgende kleine Änderungen gemacht werden:
#klaus fixed range day, week, month or year
562> if($fr =~ "day" || $fr =~ "week" || $fr =~ "month" || $fr =~ "year" ) { #kpb2013
$zoom = $frx if ($frx); #for fixedrange {day|week|...} klaus
590> my @zrange = split(" ", $zoom); #kpb2014 offset für fixedrange
591> if(defined($zrange[1])) { $off += $zrange[1]; $zoom=$zrange[0]; } #kpb2014 offset angegeben
- bitte einen Diff zum aktuellen 98_SVG.pm posten, ich will nicht raten.
- die Pruefung der Parameter ist viel zu schwammig
- Doku fuer das neue Feature fehlt
Hallo Rudolf,
hier der diff zur aktuellen (19.1., 11:00h) 98_SVG.pm. Doku hab ich am Ende des Files gemacht, richtig? Kannst ja mal überlegen ob Du es so in FHEM einbauen magst.
Gruß
Klaus
--- 98_SVG_orig.pm
+++ 98_SVG.pm
@@ -575,12 +575,13 @@
return if($pm eq "gnuplot");
my ($fr, $fo);
+ my $frx; #fixedrange with offset
if($defs{$wl}) {
$fr = AttrVal($wl, "fixedrange", undef);
if($fr) {
- if($fr eq "day" || $fr eq "week" || $fr eq "month" || $fr eq "year" ||
- $fr =~ m/^\d+days$/ ) {
-
+ if($fr =~ "^day" || $fr =~ "^week" || $fr =~ "^month" || $fr =~ "^year" ||
+ $fr =~ m/^\d+days$/ ) { #fixedrange with offset
+ $frx=$fr; #fixedrange with offset
} else {
my @range = split(" ", $fr);
my @t = localtime;
@@ -609,8 +610,10 @@
my $zoom = $FW_pos{zoom};
$zoom = "day" if(!$zoom);
$zoom = $fr if(defined($fr));
+ $zoom = $frx if ($frx); #fixedrange with offset
+ my @zrange = split(" ", $zoom); #fixedrange with offset
+ if(defined($zrange[1])) { $off += $zrange[1]; $zoom=$zrange[0]; } #fixedrange with offset
-
my $endPlotNow = (AttrVal($FW_wname, "endPlotNow", undef) && !$st);
if($zoom eq "hour") {
if($endPlotNow) {
@@ -1639,7 +1642,7 @@
<b>Attributes</b>
<ul>
<a name="fixedrange"></a>
- <li>fixedrange<br>
+ <li>fixedrange [offset]<br>
Contains two time specs in the form YYYY-MM-DD separated by a space.
In plotmode gnuplot-scroll or SVG the given time-range will be used,
and no scrolling for this SVG will be possible. Needed e.g. for
@@ -1649,6 +1652,8 @@
zoom-level. This is useful for pages with multiple plots: one of the
plots is best viewed in with the default (day) zoom, the other one with
a week zoom.
+ If given, the optional integer parameter offset refers to a different period
+ (e.g. last year: fixedrange year -1, 2 days ago: fixedrange day -2).
</li><br>
Habs ohne Aenderungen eingecheckt.
Bitte das naechste mal den Diff als Anhang hinzufuegen, damit keine Whitespace-Unfaelle passieren.
Habs ausgecheckt. Läuft. Danke.