2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-12 16:46:35 +00:00

FHEMWEB cleanup, some small additional fixes/additions

git-svn-id: https://svn.fhem.de/fhem/trunk@230 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2008-08-08 10:46:25 +00:00
parent 34a74bc0c0
commit 7f0b72c6b8
13 changed files with 477 additions and 469 deletions

View File

@ -411,7 +411,7 @@
- feature: webpgm2 generates SVG's from logs: no need for gnuplot
- bugfix: examples corrected to work with current syntax
- ==DATE== (4.4)
- 2008-08-04 (4.4)
- feature: RM100-2 battery empty warning (mare 23.07.08)
- feature: optimising the pgm2/SVG memory usage
- feature: autoloading FHEM modules
@ -421,3 +421,6 @@
- feature: HMS100-FIT added (01.01.08 by Peter and 22.01.08 by Juergen)
- feature: 91_watchdog added to handle the HMS100-FIT
- feature: cum_kWh/cum_m3 added to EMWZ/EMGZ (11.01.08 by Peter)
- ==DATE== (4.5)
- feature: further 01_FHEMWEB cleanup

View File

@ -41,7 +41,7 @@ FileLog_Define($@)
my @t = localtime;
my $f = ResolveDateWildcards($a[2], @t);
$fh = new IO::File ">>$f";
return "Can't open $f" if(!defined($fh));
return "Can't open $f: $!" if(!defined($fh));
$hash->{FH} = $fh;
$hash->{REGEXP} = $a[3];
@ -226,6 +226,7 @@ FileLog_Get($@)
}
my %lastdate;
my $d; # Used by eval functions
while(my $l = <$ifh>) {
last if($l gt $to);
my @fld = split("[ \r\n]+", $l); # 40%
@ -263,7 +264,6 @@ FileLog_Get($@)
}
$h->{last2} = $fld[$col];
$lastdate{$hd} = $fld[0];
next if(!$line);
} elsif($t == 3) { # int function
my $val = $fld[$col];
@ -272,6 +272,7 @@ FileLog_Get($@)
} else { # evaluate
$line = "$fld[0] " . eval($h->{fn}) . "\n";
}
next if(!$line);
if($outf eq "-") {
$h->{ret} .= $line;
@ -318,7 +319,7 @@ FileLog_Get($@)
}
if($internal) {
$internal_data = \$ret;
return "OK";
return undef;
}
return ($outf eq "-") ? $ret : join(" ", @fname);

View File

@ -225,6 +225,14 @@
<li>Start httpd with the startssl option (SSL or the like must be set in
one of your system files, look at /etc/init.d/httpd).</li>
</ul>
<br/><br/>
To display "foreign" (non fhem) files as a plot or a just as plain text,
configure a fake logfile with the correct filename and an unused regexp,
e.g.<br><pre>
define messages FileLog /var/log/messages fakelog
</pre>
<br/><br/>
<body>

View File

@ -515,17 +515,25 @@ fs20usr</pre></li>
as an SVG script to the frontend, which will compute
the image: no need for gnuplot on the backend.</li>
</ul>
See also the attribute fixedrange.
</li><br>
<a name="plotsize"></a>
<li>plotsize<br/>
Can be applied to FHEMWEB devices. (webfrontend/pgm2)<br/> Specifies
the defult size of the plot, in pixels, separated by comma:
the default size of the plot, in pixels, separated by comma:
width,height. You can set individual sizes by setting the plotsize of
the weblink.
</li><br>
</li>
</ul>
<a name="fixedrange"></a>
<li>fixedrange<br/>
Can be applied to weblink devices (FHEMWEB).<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 weblinks will be possible. Needed e.g. for
looking at last-years data without scrolling.
</li><br> </li> </ul>
Examples:
<ul>

View File

@ -10,3 +10,6 @@ attr global modpath . # where our FHEM directory is
define WEB FHEMWEB 8083
attr WEB plotmode SVG
# Fake logfile, to access the global log
define Logfile FileLog /tmp/fhem-%Y-%m.log fakelog

View File

@ -143,7 +143,7 @@ my $nextat; # Time when next timer will be triggered.
my $intAtCnt=0;
my $reread_active = 0;
my $AttrList = "room comment";
my $cvsid = '$Id: fhem.pl,v 1.51 2008-08-04 14:34:53 rudolfkoenig Exp $';
my $cvsid = '$Id: fhem.pl,v 1.52 2008-08-08 10:46:25 rudolfkoenig Exp $';
$init_done = 0;
@ -1187,10 +1187,7 @@ CommandXmlList($$)
$lt = $t;
my $a1 = XmlEscape($p->{STATE});
my $a2 = CommandSet(undef, "$d ?");
$a2 =~ s/.*choose one of //;
$a2 = "" if($a2 =~ /^No set implemented for/);
$a2 = XmlEscape($a2);
my $a2 = XmlEscape(getAllSets($d));
my $a3 = XmlEscape(getAllAttr($d));
$str .= "\t\t<$t name=\"$d\" state=\"$a1\" sets=\"$a2\" attrs=\"$a3\">\n";
@ -1308,6 +1305,17 @@ getAllAttr($)
return $list;
}
#####################################
sub
getAllSets($)
{
my $d = shift;
my $a2 = CommandSet(undef, "$d ?");
$a2 =~ s/.*choose one of //;
$a2 = "" if($a2 =~ /^No set implemented for/);
return $a2;
}
sub
GlobalAttr($$)
{
@ -1831,6 +1839,11 @@ CallFn(@)
{
my $d = shift;
my $n = shift;
if(!$defs{$d}{TYPE}) {
Log 0, "Removing $d, has no TYPE";
delete($defs{$d});
return undef;
}
my $fn = $modules{$defs{$d}{TYPE}}{$n};
return "" if(!$fn);
no strict "refs";

File diff suppressed because it is too large Load Diff

View File

@ -117,6 +117,7 @@ SVG_render($$$$$$$)
} else {
($d, $v) = split(" ", $l);
$d = ($tmul ? int((time_to_sec($d)-$fromsec)*$tmul) : $d);
if($ld ne $d || $lv ne $v) { # Saves a lot on year zoomlevel
$ld = $d; $lv = $v;

View File

@ -11,7 +11,7 @@ weblink_Initialize($)
my ($hash) = @_;
$hash->{DefFn} = "weblink_Define";
$hash->{AttrList}= "fixedrange noscroll";
$hash->{AttrList}= "fixedrange plotmode plotsize label";
}

View File

@ -0,0 +1,27 @@
############################
# Display a CPU temperature log of the form
# 2008-02-29_09:48:30 CPU 39.0 SYS 39.0 CORE 57.0 CPU_FAN 1068 CASE_FAN 0 HD_TEMP 46
# We need a fake FileLog definition:
# define cpulog FileLog test2/temperature-history cpufake
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
set title '<TL>'
set grid xtics y2tics
set ylabel "Temperature in C"
#FileLog 3:CPU:0:
#FileLog 5:SYS:0:
#FileLog 7:CORE:0:
#FileLog 13:HD_TEMP:0:
plot "<IN>" using 1:3 title 'CPU' with lines,\
"<IN>" using 1:5 title 'SYS' with lines,\
"<IN>" using 1:7 title 'CORE' with lines,\
"<IN>" using 1:13 title 'HDTEMP' with lines

View File

@ -0,0 +1,35 @@
############################
# Display irrigation times, the log must be of the form
# 2008-04-29_19:00:06 GVent5 365 365 187
# 2008-04-29_19:00:06 Total time is 365
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
set title '<TL>'
set grid xtics y2tics
set ylabel "Minutes"
set y2label "Minutes"
#FileLog 3:GVent1:0:$d=$fld[2];$d/60
#FileLog 3:GVent2:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent3:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent4:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent5:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent6:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent7:0:$d+=$fld[2];$fld[2]?$d/60:0
#FileLog 3:GVent8:0:$d+=$fld[2];$fld[2]?$d/60:0
plot "<IN>" using 1:3 title 'Lb west' with points,\
"<IN>" using 1:3 title 'Rasen Sued' with points,\
"<IN>" using 1:3 title 'Lb ost' with points,\
"<IN>" using 1:3 title 'Rasen Haus' with points,\
"<IN>" using 1:3 title 'Eingang' with points,\
"<IN>" using 1:3 title 'Rasen West' with points,\
"<IN>" using 1:3 title 'Stichstr.' with points,\
"<IN>" using 1:3 title 'Beete' with points

View File

@ -1,4 +1,4 @@
body { color: black; background: #FFFFD7; }
body { color: black; background: #FFFFE7; }
table { -moz-border-radius:8px; }

View File

@ -12,7 +12,7 @@ polyline { stroke:black; stroke-width:1px; fill:none; }
.l1 { stroke:green; } text.l1 { stroke:none; fill:green; }
.l2 { stroke:blue; } text.l2 { stroke:none; fill:blue; }
.l3 { stroke:magenta; } text.l3 { stroke:none; fill:magenta; }
.l4 { stroke:cyan; } text.l4 { stroke:none; fill:cyan; }
.l4 { stroke:brown; } text.l4 { stroke:none; fill:brown; }
.l5 { stroke:black; } text.l5 { stroke:none; fill:black; }
.l6 { stroke:olive; } text.l6 { stroke:none; fill:olive; }
.l7 { stroke:gray; } text.l7 { stroke:none; fill:gray; }