feature: Freq. for 8 CPU Cores

git-svn-id: https://svn.fhem.de/fhem/trunk@8269 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
hexenmeister 2015-03-22 20:31:25 +00:00
parent 2aface849d
commit d04a090aed

View File

@ -37,7 +37,7 @@ use Data::Dumper;
my $missingModulRemote; my $missingModulRemote;
eval "use Net::Telnet;1" or $missingModulRemote .= "Net::Telnet "; eval "use Net::Telnet;1" or $missingModulRemote .= "Net::Telnet ";
my $VERSION = "2.1.3"; my $VERSION = "2.1.4";
use constant { use constant {
PERL_VERSION => "perl_version", PERL_VERSION => "perl_version",
@ -53,6 +53,12 @@ use constant {
use constant { use constant {
CPU_FREQ => "cpu_freq", CPU_FREQ => "cpu_freq",
CPU1_FREQ => "cpu1_freq", CPU1_FREQ => "cpu1_freq",
CPU2_FREQ => "cpu2_freq",
CPU3_FREQ => "cpu3_freq",
CPU4_FREQ => "cpu4_freq",
CPU5_FREQ => "cpu5_freq",
CPU6_FREQ => "cpu6_freq",
CPU7_FREQ => "cpu7_freq",
CPU_BOGOMIPS => "cpu_bogomips", CPU_BOGOMIPS => "cpu_bogomips",
CPU_TEMP => "cpu_temp", CPU_TEMP => "cpu_temp",
CPU_TEMP_AVG => "cpu_temp_avg", CPU_TEMP_AVG => "cpu_temp_avg",
@ -225,6 +231,12 @@ SYSMON_updateCurrentReadingsMap($) {
#$rMap->{"cpu_freq"} = "CPU Frequenz"; #$rMap->{"cpu_freq"} = "CPU Frequenz";
$rMap->{"cpu_freq"} = "CPU frequency"; $rMap->{"cpu_freq"} = "CPU frequency";
$rMap->{"cpu1_freq"} = "CPU frequency (second core)"; $rMap->{"cpu1_freq"} = "CPU frequency (second core)";
$rMap->{"cpu2_freq"} = "CPU frequency (core 3)";
$rMap->{"cpu3_freq"} = "CPU frequency (core 4)";
$rMap->{"cpu4_freq"} = "CPU frequency (core 5)";
$rMap->{"cpu5_freq"} = "CPU frequency (core 6)";
$rMap->{"cpu6_freq"} = "CPU frequency (core 7)";
$rMap->{"cpu7_freq"} = "CPU frequency (core 8)";
} }
if(SYSMON_isCPUTempRPi($hash) || SYSMON_isCPUTempBBB($hash) || SYSMON_isCPUTempFB($hash)) { if(SYSMON_isCPUTempRPi($hash) || SYSMON_isCPUTempBBB($hash) || SYSMON_isCPUTempFB($hash)) {
#$rMap->{+CPU_TEMP} = "CPU Temperatur"; #$rMap->{+CPU_TEMP} = "CPU Temperatur";
@ -1073,10 +1085,12 @@ SYSMON_obtainParameters_intern($$)
$map = SYSMON_getCPUTemp_FB($hash, $map); $map = SYSMON_getCPUTemp_FB($hash, $map);
} }
if(SYSMON_isCPUFreqRPiBBB($hash)) { if(SYSMON_isCPUFreqRPiBBB($hash)) {
$map = SYSMON_getCPUFreq($hash, $map); $map = SYSMON_getCPUFreq($hash, $map, 0);
} }
if(SYSMON_isCPU1Freq($hash)) { foreach my $li (1..7) {
$map = SYSMON_getCPU1Freq($hash, $map); if(SYSMON_isCPUXFreq($hash, $li)) {
$map = SYSMON_getCPUFreq($hash, $map, $li);
}
} }
if(SYSMON_isProcFS($hash)) { if(SYSMON_isProcFS($hash)) {
$map = SYSMON_getLoadAvg($hash, $map); $map = SYSMON_getLoadAvg($hash, $map);
@ -1590,29 +1604,34 @@ SYSMON_getCPUTemp_FB($$)
# leifert CPU Frequenz (Raspberry Pi, BeagleBone Black, Cubietruck, etc.) # leifert CPU Frequenz (Raspberry Pi, BeagleBone Black, Cubietruck, etc.)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
sub sub
SYSMON_getCPUFreq($$) SYSMON_getCPUFreq($$;$)
{ {
my ($hash, $map) = @_; my ($hash, $map, $cpuNum) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>&1"); $cpuNum = 0 unless defined $cpuNum;
my $val = SYSMON_execute($hash, "cat /sys/devices/system/cpu/cpu".$cpuNum."/cpufreq/scaling_cur_freq 2>&1");
$val = int($val); $val = int($val);
my $val_txt = sprintf("%d", $val/1000); my $val_txt = sprintf("%d", $val/1000);
$map->{+CPU_FREQ}="$val_txt"; if($cpuNum == 0) {
$map->{+CPU_FREQ}="$val_txt";
} else {
$map->{"cpu".$cpuNum."_freq"}="$val_txt";
}
return $map; return $map;
} }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# leifert CPU Frequenz fuer 2te CPU (Cubietruck, etc.) # leifert CPU Frequenz fuer 2te CPU (Cubietruck, etc.)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
sub #sub
SYSMON_getCPU1Freq($$) #SYSMON_getCPU1Freq($$)
{ #{
my ($hash, $map) = @_; # my ($hash, $map) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq 2>&1"); # my $val = SYSMON_execute($hash, "cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq 2>&1");
$val = int($val); # $val = int($val);
my $val_txt = sprintf("%d", $val/1000); # my $val_txt = sprintf("%d", $val/1000);
$map->{+CPU1_FREQ}="$val_txt"; # $map->{+CPU1_FREQ}="$val_txt";
return $map; # return $map;
} #}
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# leifert CPU Speed in BogoMIPS # leifert CPU Speed in BogoMIPS
@ -3107,18 +3126,17 @@ sub SYSMON_isCPUTempFB($) {
return SYSMON_isFB($hash); return SYSMON_isFB($hash);
} }
#my $sys_cpu1_freq = undef;
sub sub
SYSMON_isCPU1Freq($) { SYSMON_isCPUXFreq($$) {
my ($hash) = @_; my ($hash, $cpuNum) = @_;
if(!defined $hash->{helper}{sys_cpu1_freq}) { if(!defined $hash->{helper}{"sys_cpu".$cpuNum."_freq"}) {
#$hash->{helper}{sys_cpu1_freq} = int(SYSMON_execute($hash, "[ -f /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq ] && echo 1 || echo 0")); #$hash->{helper}{"sys_cpu".$cpuNum."_freq"} = int(SYSMON_execute($hash, "[ -f /sys/devices/system/cpu/cpu".$cpuNum."/cpufreq/scaling_cur_freq ] && echo 1 || echo 0"));
# s. o. # s. o.
my @t = SYSMON_execute($hash, "[ -f /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq ] && echo 1 || echo 0"); my @t = SYSMON_execute($hash, "[ -f /sys/devices/system/cpu/cpu".$cpuNum."/cpufreq/scaling_cur_freq ] && echo 1 || echo 0");
$hash->{helper}{sys_cpu1_freq} = int($t[-1]); $hash->{helper}{"sys_cpu".$cpuNum."_freq"} = int($t[-1]);
} }
return $hash->{helper}{sys_cpu1_freq}; return $hash->{helper}{"sys_cpu".$cpuNum."_freq"};
} }
#my $sys_fb = undef; #my $sys_fb = undef;