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 .= "
<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).<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).Comment is specified, an internally predefined description is used.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'))}
<ReadingName>[:<Comment>[:<Postfix>]] an.<ReadingName>[:<Comment>[:<Postfix>[:<FormatString>]]] an.ReadingName den anzuzeigenden Reading an, der Wert aus Comment wird als der Anzeigename verwendet
- und Postfix wird nach dem eihentlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden).Postfix wird nach dem eihentlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden). Mit Hilfe von FormatString kann die Ausgabe beeinflusst werden (s. sprintf in PerlDoku).Comment angegeben ist, wird eine intern vordefinierte Beschreibung angegeben.
Bei benutzerdefinierbaren Readings wird ggf. Comment aus der Definition verwendet.