cpuTemperatur() rewrite parsing hwmon (linux)

This commit is contained in:
Sebastian Hildebrandt 2020-11-29 09:33:19 +01:00
parent 430051caaf
commit 9a32761531

View File

@ -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) {