cpuTemperatur() rewrite parsing hwmon (linux)
This commit is contained in:
parent
430051caaf
commit
9a32761531
61
lib/cpu.js
61
lib/cpu.js
@ -17,6 +17,7 @@ const os = require('os');
|
||||
const exec = require('child_process').exec;
|
||||
const fs = require('fs');
|
||||
const util = require('./util');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
let _platform = process.platform;
|
||||
|
||||
@ -772,49 +773,35 @@ function cpuTemperature(callback) {
|
||||
max: -1.0
|
||||
};
|
||||
if (_linux) {
|
||||
const cmd = 'cat /sys/class/hwmon/hwmon0/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon0/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon1/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon1/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon2/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon2/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon3/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon3/temp*_i* 2>/dev/null;';
|
||||
const cmd = 'for mon in /sys/class/hwmon/hwmon*; do for label in "$mon"/temp*_label; do if [ -f $label ]; then value=$(echo $label | rev | cut -c 7- | rev)_input; if [ -f "$value" ]; then echo $(cat "$label")___$(cat "$value"); fi; fi; done; done;';
|
||||
try {
|
||||
exec(cmd, function (error, stdout) {
|
||||
// if (!error) {
|
||||
let sections = stdout.toString().split('######\n');
|
||||
let bestSection = -1
|
||||
let lineCount = 0
|
||||
for (let i = 0; i < sections.length; i++) {
|
||||
const lines = sections[i].split('\n');
|
||||
if (lineCount < lines.length) {
|
||||
lineCount = lines.length;
|
||||
bestSection = i;
|
||||
let lines = stdout.toString().split('\n');
|
||||
lines.forEach(line => {
|
||||
const parts = line.split('___');
|
||||
const label = parts[0];
|
||||
const value = parts.length > 1 && parts[1] ? parts[1] : '0';
|
||||
if (value && (label === undefined || (label && label.toLowerCase().startsWith('core')))) {
|
||||
result.cores.push(Math.round(parseInt(value, 10) / 100) / 10);
|
||||
} else if (value && label && result.main === -1) {
|
||||
result.main = Math.round(parseInt(value, 10) / 100) / 10;
|
||||
}
|
||||
};
|
||||
})
|
||||
|
||||
if (bestSection >= 0 && lineCount > 2) {
|
||||
let parts = sections[bestSection].split('---');
|
||||
// let parts = stdout.toString().split('---');
|
||||
let labels = parts[0].split('\n');
|
||||
let temps = parts[1].split('\n');
|
||||
temps.shift();
|
||||
for (let i = 0; i < temps.length; i++) {
|
||||
if (temps[i] && (labels[i] === undefined || (labels[i] && labels[i].toLowerCase().startsWith('core')))) {
|
||||
result.cores.push(Math.round(parseInt(temps[i], 10) / 100) / 10);
|
||||
} else if (temps[i] && labels[i] && result.main === -1) {
|
||||
result.main = Math.round(parseInt(temps[i], 10) / 100) / 10;
|
||||
}
|
||||
if (result.cores.length > 0) {
|
||||
if (result.main === -1) {
|
||||
result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
|
||||
}
|
||||
if (result.cores.length > 0) {
|
||||
if (result.main === -1) {
|
||||
result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
|
||||
}
|
||||
let maxtmp = Math.max.apply(Math, result.cores);
|
||||
result.max = (maxtmp > result.main) ? maxtmp : result.main;
|
||||
}
|
||||
if (result.main !== -1) {
|
||||
if (result.max === -1) {
|
||||
result.max = result.main;
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
return;
|
||||
let maxtmp = Math.max.apply(Math, result.cores);
|
||||
result.max = (maxtmp > result.main) ? maxtmp : result.main;
|
||||
}
|
||||
if (result.main !== -1) {
|
||||
if (result.max === -1) {
|
||||
result.max = result.main;
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
return;
|
||||
}
|
||||
// }
|
||||
exec('sensors', function (error, stdout) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user