diff --git a/FHEM/42_SYSMON.pm b/FHEM/42_SYSMON.pm index 83aa24dfb..9fd43007d 100644 --- a/FHEM/42_SYSMON.pm +++ b/FHEM/42_SYSMON.pm @@ -37,7 +37,7 @@ use Data::Dumper; my $missingModulRemote; eval "use Net::Telnet;1" or $missingModulRemote .= "Net::Telnet "; -my $VERSION = "2.1.9"; +my $VERSION = "2.2.0"; use constant { PERL_VERSION => "perl_version", @@ -331,12 +331,14 @@ SYSMON_updateCurrentReadingsMap($) { $rMap->{"loadavg_15"} = "Load average 15"; $rMap->{"ram"} = "RAM"; + $rMap->{"ram_used_stat"} = "RAM used stat"; $rMap->{"ram_total"} = "RAM total"; $rMap->{"ram_used"} = "RAM used"; $rMap->{"ram_free"} = "RAM free"; $rMap->{"ram_free_percent"}= "RAM free %"; $rMap->{"swap"} = "swap"; + $rMap->{"swap_used_stat"} = "swap used stat"; $rMap->{"swap_total"} = "swap total"; $rMap->{"swap_used"} = "swap used"; $rMap->{"swap_free"} = "swap free"; @@ -2150,6 +2152,8 @@ sub SYSMON_getRamAndSwap($$) { #my $percentage_ram; #my $percentage_swap; + my $used_clean; + if(defined($total) && $total > 0) { $total = $total / 1024; @@ -2162,8 +2166,8 @@ sub SYSMON_getRamAndSwap($$) { # Bei FritzBox wird dieser Wert nicht ausgageben $cached = 0; } - - $ram = sprintf("Total: %.2f MB, Used: %.2f MB, %.2f %%, Free: %.2f MB", $total, ($used - $buffers - $cached), (($used - $buffers - $cached) / $total * 100), ($free + $buffers + $cached)); + $used_clean = $used - $buffers - $cached; + $ram = sprintf("Total: %.2f MB, Used: %.2f MB, %.2f %%, Free: %.2f MB", $total, $used_clean, ($used_clean / $total * 100), ($free + $buffers + $cached)); } else { @@ -2171,6 +2175,8 @@ sub SYSMON_getRamAndSwap($$) { } $map->{+RAM} = $ram; + $map = SYSMON_getComputeStat($hash, $map, $used_clean, "ram_used_stat"); + # wenn kein swap definiert ist, ist die Groesse (total2) gleich Null. Dies wuerde eine Exception (division by zero) ausloesen if(defined($total2) && $total2 > 0 && defined($used2) && defined($free2)) { $total2 = $total2 / 1024; @@ -2183,6 +2189,7 @@ sub SYSMON_getRamAndSwap($$) { } $map->{+SWAP} = $swap; + $map = SYSMON_getComputeStat($hash, $map, $used2, "swap_used_stat"); return $map; } @@ -2281,6 +2288,7 @@ sub SYSMON_getRamAndSwapOSX($$) { my $ram = sprintf("Total: %.2f MB, Used: %.2f MB, %.2f %%, Free: %.2f MB", $total, $used , ($used / $total * 100), $free); #Log 3, "SYSMON >>>>>>>>>>>>>>>>>>>>>>>>> OSX: RAM: ".$ram; $map->{+RAM} = $ram; + $map = SYSMON_getComputeStat($hash, $map, $used, "ram_used_stat"); my @avm = SYSMON_execute($hash, "sysctl vm.swapusage"); if($debug) { @@ -2378,6 +2386,7 @@ sub SYSMON_getRamAndSwapOSX($$) { my $free2 = SYSMON_fmtStorageAmount_($3); my $swap = sprintf("Total: %.2f MB, Used: %.2f MB, %.2f %%, Free: %.2f MB", $total2, $used2, ($used2 / $total2 * 100), $free2); $map->{+SWAP} = $swap; + $map = SYSMON_getComputeStat($hash, $map, $used2, "swap_used_stat"); #Log 3, "SYSMON >>>>>>>>>>>>>>>>>>>>>>>>> OSX: SWAP: ".$swap; } } @@ -4280,22 +4289,34 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is
  • cpuX_freq_stat
    - Frequency statistics for CPU X: minimum, maximum und average values
    + Frequency statistics for CPU X: minimum, maximum and average values
    Example:
    cpu0_freq_stat: 100 1000 900

  • cpuX_idle_stat
    - Idle statistik for CPU X: minimum, maximum und average values
    + Idle statistik for CPU X: minimum, maximum and average values
    Example:
    cpu0_freq_stat: 23.76 94.74 90.75

  • -
  • cpu_temp_stat
    - Temperature statistik for CPU: minimum, maximum und average values
    +
  • cpu[X]_temp_stat
    + Temperature statistik for CPU: minimum, maximum and average values
    Example:
    cpu_temp_stat: 41.00 42.50 42.00
  • +
    +
  • ram_used_stat
    + RAM usage statistics: minimum, maximum and average values
    + Example:
    + ram_used_stat: 267.55 1267.75 855.00
    +
  • +
    +
  • swap_used_stat
    + SWAP usage statistics: minimum, maximum and average values
    + Example:
    + swap_used_stat: 0 1024.00 250.00
    +


  • @@ -4929,22 +4950,34 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is
  • cpuX_freq_stat
    - Frequenz-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
    + Frequenz-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
    Beispiel:
    cpu0_freq_stat: 100 1000 900

  • cpuX_idle_stat
    - Leerlaufzeit-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
    + Leerlaufzeit-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
    Beispiel:
    cpu0_freq_stat: 23.76 94.74 90.75

  • cpu[X]_temp_stat
    - Temperatur-Statistik für CPU: minimum, maximum und average values
    + Temperatur-Statistik für CPU: Minimum, Maximum und Durchschnittswert
    Beispiel:
    cpu_temp_stat: 41.00 42.50 42.00
  • +
    +
  • ram_used_stat
    + Statistik der RAM-Nutzung: Minimum, Maximum und Durchschnittswert
    + Example:
    + ram_used_stat: 267.55 1267.75 855.00
    +
  • +
    +
  • swap_used_stat
    + Statistik der SWAP-Nutzung: Minimum, Maximum und Durchschnittswert
    + Example:
    + swap_used_stat: 0 1024.00 250.00
    +