diff --git a/fhem/FHEM/00_MQTT2_CLIENT.pm b/fhem/FHEM/00_MQTT2_CLIENT.pm
index c986829b4..736698d61 100644
--- a/fhem/FHEM/00_MQTT2_CLIENT.pm
+++ b/fhem/FHEM/00_MQTT2_CLIENT.pm
@@ -702,7 +702,7 @@ MQTT2_CLIENT_getStr($$)
Attributes
-
+
- autocreate [no|simple|complex]
if set to simple/complex, at least one MQTT2_DEVICE will be created, and
its readingsList will be expanded upon reception of published messages.
@@ -739,13 +739,13 @@ MQTT2_CLIENT_getStr($$)
disable dispatching of messages.
-
+
- disconnectAfter <seconds>
if set, the connection will be closed after <seconds> of
inactivity, and will be automatically reopened when sending a command.
-
+
- ignoreRegexp
if $topic:$message matches ignoreRegexp, then it will be silently ignored.
diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm
index 846d84988..825f67381 100644
--- a/fhem/FHEM/01_FHEMWEB.pm
+++ b/fhem/FHEM/01_FHEMWEB.pm
@@ -1198,21 +1198,22 @@ sub
FW_dataAttr()
{
sub
- addParam($$)
+ addParam($$$)
{
- my ($p, $default) = @_;
- my $val = AttrVal($FW_wname,$p, $default);
+ my ($dev, $p, $default) = @_;
+ my $val = AttrVal($dev, $p, $default);
$val =~ s/&/&/g;
$val =~ s/'/'/g;
return "data-$p='$val' ";
}
return
- addParam("jsLog", 0).
- addParam("confirmDelete", 1).
- addParam("confirmJSError", 1).
- addParam("addHtmlTitle", 1).
- addParam("styleData", "").
+ addParam($FW_wname, "jsLog", 0).
+ addParam($FW_wname, "confirmDelete", 1).
+ addParam($FW_wname, "confirmJSError", 1).
+ addParam($FW_wname, "addHtmlTitle", 1).
+ addParam($FW_wname, "styleData", "").
+ addParam("global", "language", "EN").
"data-availableJs='$FW_fhemwebjs' ".
"data-webName='$FW_wname '";
}
diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm
index d0644b4c7..a5ecfbd57 100644
--- a/fhem/FHEM/98_SVG.pm
+++ b/fhem/FHEM/98_SVG.pm
@@ -2477,10 +2477,10 @@ plotAsPng(@)
=item summary_DE malt ein SVG-Plot aus FileLog oder DbLog Daten
=begin html
-
+
SVG
-
+
Define
define <name> SVG
@@ -2507,7 +2507,7 @@ plotAsPng(@)
-
+
Set
- copyGplotFile
@@ -2520,22 +2520,33 @@ plotAsPng(@)
-
+
Get
-
+
Attributes
- - endPlotNow
- - endPlotToday
+
+ - endPlotNow
+ If this attribute is set to 1, then day and hour plots will
+ end at current time. Else the whole day, the 6 hour period starting at
+ 0, 6, 12 or 18 hour or the whole hour will be shown. This attribute
+ is not used if the SVG has the attribute startDate defined.
+
-
+
+ - endPlotToday
+ If this attribute is set to 1, then week and month plots will
+ end today. Else the current week or the current month will be shown.
+
+
+
- captionLeft
Show the legend on the left side (deprecated, will be autoconverted to
captionPos)
-
+
- captionPos
right - Show the legend on the right side (default)
left - Show the legend on the left side
@@ -2543,7 +2554,7 @@ plotAsPng(@)
on the axis it belongs to
-
+
- fixedrange [offset]
Contains two time specs in the form YYYY-MM-DD separated by a space.
In plotmode gnuplot-scroll(-svg) or SVG the given time-range will be
@@ -2562,12 +2573,12 @@ plotAsPng(@)
-
+
- fixedoffset <nDays>
Set an fixed offset (in days) for the plot.
-
+
- label
Double-Colon separated list of values. The values will be used to replace
<L#> type of strings in the .gplot file, with # beginning at 1
@@ -2601,9 +2612,16 @@ plotAsPng(@)
Deprecated, see plotReplace.
- - nrAxis
+
+ - nrAxis
+ the number of axis for which space should be reserved on the left and
+ right sides of a plot and optionaly how many axes should realy be used
+ on each side, separated by comma: left,right[,useLeft,useRight]. You
+ can set individual numbers by setting the nrAxis of the SVG. Default is
+ 1,1.
+
-
+
- plotfunction
Space value separated list of values. The value will be used to replace
<SPEC#> type of strings in the .gplot file, with # beginning at 1
@@ -2625,9 +2643,23 @@ plotAsPng(@)
Deprecated, see plotReplace.
- - plotmode
+
+ - plotmode
+ Specifies how to generate the plots:
+
+ - SVG
+ The plots are created with the SVG module.
+ This is the default.
+ - gnuplot-scroll
+ The plots are created with the gnuplot program. The gnuplot
+ output terminal PNG is assumed. Scrolling to historical values
+ is also possible, just like with SVG.
+ - gnuplot-scroll-svg
+ Like gnuplot-scroll, but the output terminal SVG is assumed.
+
+
-
+
- plotReplace
space separated list of key=value pairs. value may contain spaces if
enclosed in "" or {}. value will be evaluated as a perl expression, if it
@@ -2639,15 +2671,27 @@ plotAsPng(@)
%key% will be repaced before the input file is processed, this expression
can be used to replace parameters for the input processing.
- - plotsize
- - plotWeekStartDay
+
+ - plotsize
+ the default size of the plot, in pixels, separated by comma:
+ width,height. You can set individual sizes by setting the plotsize of
+ the SVG. Default is 800,160 for desktop, and 480,160 for
+ smallscreen.
+
-
+
+ - plotWeekStartDay
+ Start the week-zoom of the SVG plots with this day.
+ 0 is Sunday, 1 is Monday, etc.
+
+
+
+
- startDate
Set the start date for the plot. Used for demo installations.
-
+
- title
A special form of label (see above), which replaces the string <TL>
in the .gplot file. It defaults to the filename of the logfile.
@@ -2657,7 +2701,7 @@ plotAsPng(@)
-
+
Plot-Editor
This editor is visible on the detail screen of the SVG instance.
@@ -2682,7 +2726,7 @@ plotAsPng(@)
The visibility of the ploteditor can be configured with the FHEMWEB attribute
- ploteditor.
+ ploteditor.
@@ -2690,10 +2734,10 @@ plotAsPng(@)
=begin html_DE
-
+
SVG
-
+
Define
define <name> SVG <logDevice>:<gplotfile>:<logfile>
@@ -2728,7 +2772,7 @@ plotAsPng(@)
-
+
Set
- copyGplotFile
@@ -2742,19 +2786,19 @@ plotAsPng(@)
-
+
Get
-
+
Attribute
-
+
- captionLeft
Anzeigen der Legende auf der linken Seite. Überholt, wird
automatisch nach captionPos konvertiert.
-
+
- captionPos
right - Anzeigen der Legende auf der rechten Seite (default)
left - Anzeigen der Legende auf der linken Seite
@@ -2762,15 +2806,29 @@ plotAsPng(@)
je nach Achsenzugehörigkeit
- - endPlotNow
- - endPlotToday
+
+ - endPlotNow
+ Wenn Sie dieses Attribut auf 1 setzen, werden Tages und
+ Stunden-Plots zur aktuellen Zeit beendet. (Ähnlich wie
+ endPlotToday, nur eben minütlich).
+ Ansonsten wird der gesamte Tag oder eine 6 Stunden Periode (0, 6, 12,
+ 18 Stunde) gezeigt. Dieses Attribut wird nicht verwendet, wenn das SVG
+ Attribut startDate benutzt wird.
+
-
+
+ - endPlotToday
+ Wird dieses Attribut gesetzt, so enden Wochen- bzw. Monatsplots
+ am aktuellen Tag, sonst wird die aktuelle Woche/Monat angezeigt.
+
+
+
+
- fixedoffset <nTage>
Verschiebt den Plot-Offset um einen festen Wert (in Tagen).
-
+
- fixedrange [offset]
Erste Alternative:
Enthält zwei Zeit-Spezifikationen in der Schreibweise YYYY-MM-DD,
@@ -2791,7 +2849,7 @@ plotAsPng(@)
-
+
- label
Eine Liste, bei der die einzelnen Werte mit einem zweifachen Doppelpunkt
voneinander getrennt werden. Diese Liste wird verwendet um die <L#>
@@ -2832,9 +2890,16 @@ plotAsPng(@)
Überholt, wird durch das plotReplace Attribut abgelöst.
- - nrAxis
+
+ - nrAxis
+ (bei mehrfach-Y-Achsen im SVG-Plot) Die Darstellung der Y Achsen
+ benötigt Platz. Hierdurch geben Sie an wie viele Achsen Sie
+ links,rechts [useLeft,useRight] benötigen. Default ist 1,1 (also 1
+ Achse links, 1 Achse rechts).
+
-
+
+
- plotfunction
Eine Liste, deren Werte durch Leerzeichen voneinander getrennt sind.
Diese Liste wird verwendet um die <SPEC#> Zeichenfolgen in der
@@ -2862,9 +2927,28 @@ plotAsPng(@)
Überholt, wird durch das plotReplace Attribut abgelöst.
- - plotmode
+
+ - plotmode
+ Spezifiziert, wie Plots erzeugt werden sollen:
+
+ - SVG
+ Die Plots werden mit Hilfe des SVG Moduls als SVG
+ Grafik gerendert. Das ist die Standardeinstellung.
-
+ - gnuplot-scroll
+ Die plots werden mit dem Programm gnuplot erstellt. Das output
+ terminal ist PNG. Der einfache Zugriff auf historische Daten
+ ist möglich (analog SVG).
+
+
+ - gnuplot-scroll-svg
+ Wie gnuplot-scroll, aber als output terminal wird SVG angenommen.
+
+
+
+
+
+
- plotReplace
Leerzeichen getrennte Liste von Name=Wert Paaren. Wert kann Leerzeichen
enthalten, falls es in "" oder {} eingeschlossen ist. Wert wird als
@@ -2876,16 +2960,28 @@ plotAsPng(@)
kann, und %Name% davor, damit man die Regeln in der .gplot Datei für
die Extraktion anpassen kann.
- - plotsize
- - plotWeekStartDay
+
+ - plotsize
+ gibt die Standardbildgröße aller erzeugten Plots an als
+ Breite,Höhe an. Um einem individuellen Plot die Größe
+ zu ändern muss dieses Attribut bei der entsprechenden SVG Instanz
+ gesetzt werden. Default sind 800,160 für Desktop und 480,160
+ für Smallscreen
+
-
+
+ - plotWeekStartDay
+ Starte das Plot in der Wochen-Ansicht mit diesem Tag.
+ 0 ist Sonntag, 1 ist Montag, usw.
+
+
+
- startDate
Setzt das Startdatum für den Plot. Wird für Demo-Installationen
verwendet.
-
+
- title
Eine besondere Form der Überschrift (siehe oben), bei der die
Zeichenfolge <TL> in der .gplot-Datei ersetzt wird.
@@ -2897,7 +2993,7 @@ plotAsPng(@)
-
+
Plot-Editor
Dieser Editor ist in der Detailansicht der SVG-Instanz zu sehen. Die
@@ -2927,8 +3023,8 @@ plotAsPng(@)
Expression ausgewertet. Das Ergebnis muss in der Form [min:max] sein.
- Die Sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut ploteditor konfiguriert werden.
+ Die Sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut
+ ploteditor konfiguriert werden.
diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html
index fbf1e2b96..cf520064a 100644
--- a/fhem/docs/commandref_frame.html
+++ b/fhem/docs/commandref_frame.html
@@ -519,7 +519,7 @@ attribute list if you want to know if a device supports these attributes.
-
event-aggregator
+ event-aggregator
The primary uses of this attribute are to calculate (time-weighted) averages of
readings over time periods and to throttle the update rate of readings and thus
the amount of data written to the logs.
@@ -584,7 +584,7 @@ attribute list if you want to know if a device supports these attributes.
-
+ bla
event-min-interval
This attribute takes a comma-separated list of reading:minInterval pairs.
You may use regular expressions for reading. Events will only be
diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html
index 8ed407cef..63df936fe 100644
--- a/fhem/docs/commandref_frame_DE.html
+++ b/fhem/docs/commandref_frame_DE.html
@@ -526,7 +526,7 @@ Gerät dokumentiert.
-
event-aggregator
+ event-aggregator
The primary uses of this attribute are to calculate (time-weighted) averages of
readings over time periods and to throttle the update rate of readings and thus
the amount of data written to the logs.
diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js
index 98f4613ac..6bee70497 100644
--- a/fhem/www/pgm2/fhemweb.js
+++ b/fhem/www/pgm2/fhemweb.js
@@ -308,40 +308,7 @@ FW_jqueryReadyFn()
return;
$("#devSpecHelp").remove();
var sel=this, devName=m[2], selType=m[1];
- FW_getHelp(devName, function(data) { // show either the next or the outer li
- $("#content")
- .append("
");
- $("#content > #workbench").html(data);
-
- var mtype = $("#content > #workbench a[id]").attr("id"), aTag;
- if(!mtype)
- mtype = $("#content > #workbench a[name]").attr("name"), aTag;
-
- if(mtype) { // old style #1 syntax: MODULETYPEattrname
- var mv = (""+mtype+"-"+selType+"-"+val).replace(/[^a-z0-9_-]/ig,'_');
- aTag = $("#content > #workbench").find("a[id="+mv+"]");
- if(!$(aTag).length) {
- mv = (""+mtype+val).replace(/[^a-z0-9_]/ig,'_');
- aTag = $("#content > #workbench").find("a[name="+mv+"]");
- }
- }
- if(!$(aTag).length) { // old style #2 syntax without type
- var v = (val).replace(/[^a-z0-9_]/ig,'_');
- aTag = $("#content > #workbench").find("a[name="+v+"]");
- }
-
- if($(aTag).length) {
- var liTag = $(aTag).next("li");
- if(!$(liTag).length)
- liTag = $(aTag).parent("li");
- if($(liTag).length) {
- $(sel).closest("div[cmd='"+selType+"']")
- .after('')
- $("#devSpecHelp").html($(liTag).html());
- }
- }
- $("#content > #workbench").remove();
- });
+ FW_displayHelp(devName, sel, selType, val, 1);
});
FW_smallScreenCommands();
@@ -365,18 +332,85 @@ FW_jqueryReadyFn()
}
-var FW_helpData;
+function
+FW_displayHelp(devName, sel, selType, val, level)
+{
+ FW_getHelp(devName, function(data) { // show either the next or the outer li
+ $("#content")
+ .append("");
+ $("#content > #workbench").html(data);
+
+ var mtype = $("#content > #workbench a[id]").attr("id"), aTag;
+ if(!mtype)
+ mtype = $("#content > #workbench a[name]").attr("name"), aTag;
+ if(level == 3) // commandref
+ mtype = "";
+
+ if(mtype) { // old style #1 syntax: MODULETYPEattrname
+ var mv = (""+mtype+"-"+selType+"-"+val).replace(/[^a-z0-9_-]/ig,'_');
+ aTag = $("#content > #workbench").find("a[id="+mv+"]");
+ if(!$(aTag).length) {
+ mv = (""+mtype+val).replace(/[^a-z0-9_-]/ig,'_');
+ aTag = $("#content > #workbench").find("a[name="+mv+"]");
+ }
+ }
+ if(!$(aTag).length) { // old style #2 syntax without type
+ var v = (val).replace(/[^a-z0-9_-]/ig,'_');
+ aTag = $("#content > #workbench").find("a[name="+v+"]");
+ }
+
+ if($(aTag).length) {
+ var liTag = $(aTag).next("li");
+ if(!$(liTag).length)
+ liTag = $(aTag).parent("li");
+ if(!$(liTag).length)
+ liTag = $(aTag).parent().next("li");
+ if($(liTag).length) {
+ $(sel).closest("div[cmd='"+selType+"']")
+ .after('')
+ $("#devSpecHelp").html($(liTag).html());
+ }
+ }
+ $("#content > #workbench").remove();
+
+ if(!$(aTag).length) {
+ if(devName != "FHEMWEB" && level == 1)
+ return FW_displayHelp("FHEMWEB", sel, selType, val, 2);
+ if(devName != "commandref" && level < 3)
+ return FW_displayHelp("commandref", sel, selType, val, 3);
+ }
+ });
+}
+
+var FW_helpData={};
function
FW_getHelp(dev, fn)
{
- if(FW_helpData)
- return fn(FW_helpData);
+ if(FW_helpData[dev])
+ return fn(FW_helpData[dev]);
+
+ if(dev == "commandref") {
+ var lang = $("body").attr("data-language");
+ var url = FW_root+"/docs/commandref_frame"+
+ (lang == "EN" ? "" : "_"+lang)+".html";
+log(url);
+ $.ajax({
+ url:url, headers: { "cache-control": "no-cache" },
+ success: function(data, textStatus, req){
+ FW_helpData[dev] = data;
+ return fn(data);
+ },
+ error:function(xhr, status, err) { log("E:"+err+"/"+status); }
+ });
+ return;
+ }
+
FW_cmd(FW_root+"?cmd=help "+dev+"&XHR=1", function(data) {
if(data.match(/^No help found/) &&
!dev.match(" DE")) // for our german only friends
return FW_getHelp(dev+" DE", fn);
- FW_helpData = data;
- return fn(FW_helpData);
+ FW_helpData[dev] = data;
+ return fn(data);
});
}