From c73850038dcc91272c7ab18f5083359063f357bc Mon Sep 17 00:00:00 2001 From: hexenmeister Date: Sun, 11 Oct 2015 17:46:08 +0000 Subject: [PATCH] feature: FormatString for SYSMON_ShowValues. git-svn-id: https://svn.fhem.de/fhem/trunk@9437 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/42_SYSMON.pm | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/fhem/FHEM/42_SYSMON.pm b/fhem/FHEM/42_SYSMON.pm index 0b583c40b..6b5685eb5 100644 --- a/fhem/FHEM/42_SYSMON.pm +++ b/fhem/FHEM/42_SYSMON.pm @@ -38,7 +38,7 @@ use Data::Dumper; my $missingModulRemote; eval "use Net::Telnet;1" or $missingModulRemote .= "Net::Telnet "; -my $VERSION = "2.2.6"; +my $VERSION = "2.2.7"; use constant { PERL_VERSION => "perl_version", @@ -3181,7 +3181,7 @@ sub SYSMON_getFBCRCFEC($$) { #------------------------------------------------------------------------------ # Systemparameter als HTML-Tabelle ausgeben # Parameter: Name des SYSMON-Geraetes (muss existieren, kann auch anderer Modul genutzt werden), dessen Daten zur Anzeige gebracht werden sollen. -# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix[:FormatString]]],...) # Beispiel: define sysv weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} #------------------------------------------------------------------------------ sub SYSMON_ShowValuesHTML ($;@) @@ -3194,7 +3194,7 @@ sub SYSMON_ShowValuesHTML ($;@) # Systemparameter als HTML-Tabelle ausgeben. Zusaetzlich wird eine Ueberschrift ausgegeben. # Parameter: Name des SYSMON-Geraetes (muss existieren, kann auch anderer Modul genutzt werden), dessen Daten zur Anzeige gebracht werden sollen. # Title: Ueberschrift (Text) -# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix[:FormatString]]],...) # Beispiel: define sysv weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} #------------------------------------------------------------------------------ sub SYSMON_ShowValuesHTMLTitled ($;$@) @@ -3208,7 +3208,7 @@ sub SYSMON_ShowValuesHTMLTitled ($;$@) #------------------------------------------------------------------------------ # Systemparameter im Textformat ausgeben # Parameter: Name des SYSMON-Geraetes (muss existieren, kann auch anderer Modul genutzt werden), dessen Daten zur Anzeige gebracht werden sollen. -# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix[:FormatString]]],...) # Beispiel: define sysv weblink htmlCode {SYSMON_ShowValuesText('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} #------------------------------------------------------------------------------ sub SYSMON_ShowValuesText ($;@) @@ -3221,7 +3221,7 @@ sub SYSMON_ShowValuesText ($;@) # Systemparameter im Textformat ausgeben # Parameter: Name des SYSMON-Geraetes (muss existieren, kann auch anderer Modul genutzt werden), dessen Daten zur Anzeige gebracht werden sollen. # Title: Ueberschrift (Text) -# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix[:FormatString]]],...) # Beispiel: define sysv weblink htmlCode {SYSMON_ShowValuesText('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} #------------------------------------------------------------------------------ sub SYSMON_ShowValuesTextTitled ($;$@) @@ -3238,7 +3238,7 @@ sub SYSMON_ShowValuesTextTitled ($;$@) # Name des SYSMON-Geraetes (muss existieren), dessen Daten zur Anzeige gebracht werden sollen. # Title: Ueberschrift # Format: 0 = Text, 1 = HTML -# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix[:FormatString]]],...) #------------------------------------------------------------------------------ sub SYSMON_ShowValuesFmt ($$$;@) { @@ -3265,7 +3265,7 @@ sub SYSMON_ShowValuesFmt ($$$;@) # bei der Benutzung mit CloneDummies ist $cur_readings_map nicht unbedingt definiert @dataDescription = (DATE, #CPU_TEMP.":".$hash->{helper}{cur_readings_map}->{+CPU_TEMP}.": ".$deg."C", - CPU_TEMP.":"."CPU temperature".": ".$deg."C", + CPU_TEMP.":"."CPU temperature".": ".$deg."C".":%.1f", #CPU_FREQ.":".$hash->{helper}{cur_readings_map}->{+CPU_FREQ}.": "."MHz", CPU_FREQ.":"."CPU frequency".": "."MHz", CPU_MODEL_NAME, CPU_BOGOMIPS, @@ -3341,7 +3341,7 @@ sub SYSMON_ShowValuesFmt ($$$;@) # oben definierte Werte anzeigen foreach (@dataDescription) { - my($rName, $rComment, $rPostfix) = split(/:/, $_); + my($rName, $rComment, $rPostfix, $fmtStr) = split(/:/, $_); if(defined $rName) { if(!defined $rComment) { $rComment = $hash->{helper}{cur_readings_map}->{$rName}; @@ -3357,6 +3357,9 @@ sub SYSMON_ShowValuesFmt ($$$;@) } if(!defined $rPostfix) { $rPostfix = ""; } if(defined $rVal) { + if(defined($fmtStr)) { + $rVal = sprintf($fmtStr,$rVal); + } if($format == 1) { $htmlcode .= "".$rComment.": ".$rVal.$rPostfix.""; } else { @@ -5216,12 +5219,13 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is The module provides a function that returns selected Readings as HTML.
As a parameter the name of the defined SYSMON device is expected.
It can also Reading Group, Clone dummy or other modules be used. Their readings are simple used for display.
- The second parameter is optional and specifies a list of readings to be displayed in the format <ReadingName>[:<Comment>[:<Postfix>]].
- ReadingName is the Name of desired Reading, Comment is used as the display name and postfix is displayed after eihentlichen value (such as units or as MHz can be displayed).
+ The second parameter is optional and specifies a list of readings to be displayed in the format <ReadingName>[:<Comment>[:<Postfix>[:<FormatString>]]].
+ ReadingName is the Name of desired Reading, Comment is used as the display name and postfix is displayed after the value (such as units or as MHz can be displayed). + If FormatString is specified, the output is formatted with sprintf (s. sprintf in Perl documentation).
If no Comment is specified, an internally predefined description is used.
If no list specified, a predefined selection is used (all values are displayed).

define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
- define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} + define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C:%.1f'', 'cpu_freq:CPU Frequenz: MHz'))}
Text output method (see Weblink): SYSMON_ShowValuesHTMLTitled(<SYSMON-Instance>[,<Title>,<Liste>])