From 45df8475d035089f9dc2e5c505264335d5205506 Mon Sep 17 00:00:00 2001 From: Bob Wen Date: Mon, 8 Mar 2021 13:18:42 +0800 Subject: [PATCH] =?UTF-8?q?get=20temperature=20by=20spawn=20"sensors|grep?= =?UTF-8?q?=20=C2=B0C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- temperature.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/temperature.js b/temperature.js index c7dbeba..3715494 100644 --- a/temperature.js +++ b/temperature.js @@ -1,31 +1,26 @@ window.onload = function () { - resize_canvas() - - var chart = new SmoothieChart({millisPerPixel: 200, maxValueScale: 1.1, minValueScale: 1.1, scaleSmoothing: 0.1, grid: { fillStyle: '#ffffff', millisPerLine: 5000, verticalSections: 8 }, labels: { fillStyle: '#0000ff', fontSize: 18, precision: 1 }, timestampFormatter: SmoothieChart.timeFormatter }), + resize_canvas(); + var chart = new SmoothieChart({ millisPerPixel: 200, maxValueScale: 1.1, minValueScale: 1.1, scaleSmoothing: 0.1, grid: { fillStyle: '#ffffff', millisPerLine: 5000, verticalSections: 8 }, labels: { fillStyle: '#0000ff', fontSize: 18, precision: 1 }, timestampFormatter: SmoothieChart.timeFormatter }), canvas = document.getElementById('smoothie-chart'), series = new TimeSeries(); - average_array = [] + average_array = [] chart.addTimeSeries(series, { lineWidth: 3.5, strokeStyle: '#ff0000' }); chart.streamTo(canvas, 500); - function run_proc(series,average_array) { - var proc = cockpit.spawn(["vcgencmd","measure_temp"]); - proc.done(function(data){ - pt = parseFloat(data.match(/([0-9\.]+)/)[1]); + function run_proc(series, average_array) { + cockpit.spawn(['sh', '-c', 'sensors|grep °C']).then(function (data) { + pt = parseFloat(("" + data).trim().split(/[\r\n]+/)[0].split(/:\s*/)[1].trim()); series.append(new Date().getTime(), pt); document.getElementById("cur_temp").innerHTML = pt; average_array.push(pt); - if(average_array.length > 5*60){ + if (average_array.length > 5 * 60) { average_array.shift(); } document.getElementById("avg_temp").innerHTML = average(average_array); - console.log(average_array); }); }; - - //run_proc(series) - setInterval(function () { run_proc(series,average_array) }, 1000); + setInterval(function () { run_proc(series, average_array) }, 2000); } function resize_canvas() { @@ -36,7 +31,7 @@ function average(array) { var sum = 0; var count = array.length; for (var i = 0; i < count; i++) { - sum = sum + array[i]; + sum = sum + array[i]; } - return sum / count; - } + return Math.round(sum * 10 / count) / 10; +}