From f26d882624b465bae6712d2160d424d614574757 Mon Sep 17 00:00:00 2001 From: hexenmeister Date: Sat, 1 Mar 2014 23:22:09 +0000 Subject: [PATCH] New method: SYSMON_ShowValuesText git-svn-id: https://svn.fhem.de/fhem/trunk@5090 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/42_SYSMON.pm | 113 ++++++++++++++++++++++++++++------------- 1 file changed, 79 insertions(+), 34 deletions(-) diff --git a/fhem/FHEM/42_SYSMON.pm b/fhem/FHEM/42_SYSMON.pm index 462a150e6..1b0ecb346 100644 --- a/fhem/FHEM/42_SYSMON.pm +++ b/fhem/FHEM/42_SYSMON.pm @@ -30,7 +30,7 @@ package main; use strict; use warnings; -my $VERSION = "1.3.7"; +my $VERSION = "1.3.8"; use constant { DATE => "date", @@ -1185,19 +1185,53 @@ sub SYSMON_getNetworkInfo ($$$) #------------------------------------------------------------------------------ sub SYSMON_ShowValuesHTML ($;@) { - my ($name, @data) = @_; + my ($name, @data) = @_; + return SYSMON_ShowValuesFmt($name, 1, @data); +} + +#------------------------------------------------------------------------------ +# Systemparameter im Textformat ausgeben +# Parameter: Name des SYSMON-Geraetes (muss existieren), dessen Daten zur Anzeige gebracht werden sollen. +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +# Beispiel: define sysv weblink htmlCode {SYSMON_ShowValuesText('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))} +#------------------------------------------------------------------------------ +sub SYSMON_ShowValuesText ($;@) +{ + my ($name, @data) = @_; + return SYSMON_ShowValuesFmt($name, 0, @data); +} + +#------------------------------------------------------------------------------ +# Systemparameter formatiert ausgeben +# Parameter: +# Format: 0 = Text, 1 = HTML +# Name des SYSMON-Geraetes (muss existieren), dessen Daten zur Anzeige gebracht werden sollen. +# (optional) Liste der anzuzeigenden Werte (ReadingName[:Comment:[Postfix]],...) +#------------------------------------------------------------------------------ +sub SYSMON_ShowValuesFmt ($$;@) +{ + my ($name, $format, @data) = @_; + + if($format != 0 && $format != 1) { + return "unknown output format\r\n"; + } + my $hash = $main::defs{$name}; SYSMON_updateCurrentReadingsMap($hash); #Log 3, "SYSMON $>name, @data<"; my @dataDescription = @data; if(scalar(@data)<=0) { # Array mit anzuzeigenden Parametern (Prefix, Name (in Map), Postfix) + my $deg = "°"; + if($format == 1) { + $deg = "°"; + } @dataDescription = (DATE, - CPU_TEMP.":".$cur_readings_map->{+CPU_TEMP}.":"." °C", - CPU_FREQ.":".$cur_readings_map->{+CPU_FREQ}.":"." MHz", + CPU_TEMP.":".$cur_readings_map->{+CPU_TEMP}.": ".$deg."C", + CPU_FREQ.":".$cur_readings_map->{+CPU_FREQ}.": "."MHz", CPU_BOGOMIPS, UPTIME_TEXT, FHEMUPTIME_TEXT, LOADAVG, RAM, SWAP); - + # network-interfaces my $networks = AttrVal($name, "network-interfaces", undef); if(defined $networks) { @@ -1234,8 +1268,15 @@ sub SYSMON_ShowValuesHTML ($;@) my $div_class=""; - my $htmlcode = "
"; - + my $htmlcode; + if($format == 1) { + $htmlcode = "
"; + } else { + if($format == 0) { + $htmlcode = ""; + } + } + # oben definierte Werte anzeigen foreach (@dataDescription) { my($rName, $rComment, $rPostfix) = split(/:/, $_); @@ -1250,47 +1291,41 @@ sub SYSMON_ShowValuesHTML ($;@) } if(!defined $rPostfix) { $rPostfix = ""; } if(defined $rVal) { - $htmlcode .= ""; + if($format == 1) { + $htmlcode .= ""; + } else { + if($format == 0) { + $htmlcode .= sprintf("%-24s: %s%s\r\n", $rComment, $rVal,$rPostfix); + } + } } } } # nur Default (also alles anzeigen) if(scalar(@data)<=0) { - ## network-interfaces - #my $networks = AttrVal($name, "network-interfaces", undef); - #if(defined $networks) { - # my @networks_list = split(/,\s*/, trim($networks)); - # foreach (@networks_list) { - # my($nName, $nDef, $nComment) = split(/:/, $_); - # my $nComment = $cur_readings_map->{$nName}; - # my $nVal = $map->{$nName}; - # $htmlcode .= ""; - # } - #} - # File systems foreach my $aName (sort keys %{$map}) { if(defined ($aName) && index($aName, FS_PREFIX) == 0) { $aName =~ /^~ (.+)/; - $htmlcode .= ""; + if($format == 1) { + $htmlcode .= ""; + } else { + if($format == 0) { + $htmlcode .= sprintf("%-24s: %s\r\n", "File System: ".$1,$map->{$aName}); + } + } } } - - ## named filesystems - #my $filesystems = AttrVal($name, "filesystems", undef); - #if(defined $filesystems) { - # my @filesystem_list = split(/,\s*/, trim($filesystems)); - # foreach (@filesystem_list) { - # my($fName, $fDef, $fComment) = split(/:/, $_); - # my $fComment = $cur_readings_map->{$fName}; - # my $fVal = $map->{$fName}; - # $htmlcode .= ""; - # } - #} } - $htmlcode .= "
".$rComment.": ".$rVal.$rPostfix."
".$rComment.": ".$rVal.$rPostfix."
".$nComment.": ".$nVal."
File System: ".$1." ".$map->{$aName}."
File System: ".$1." ".$map->{$aName}."
".$fComment.": ".$fVal."

"; + if($format == 1) { + $htmlcode .= "
"; + } else { + if($format == 0) { + $htmlcode .= ""; + } + } return $htmlcode; } @@ -1721,6 +1756,11 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is 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'))}
+ + Text output method (see Weblink): SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])

+
Examples:


+ + Text output method (see Weblink): SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])

+
Beispiele: