NEWS
CPU-Temperatur ohne extra Adapter auslesen
-
Hallo zusammen,
hab mir vom Copilot ein Script basteln lassen, welches die CPU Temperatur zyklisch ausliest und in einen Datenpunkt schreibt.
Dazu ist außer dem Javascript-Adapter kein weiterer nötig.
Zuvor muss den entsprechende Datenpunkt in den Objekten angelegt werden.
Viel Spaß damit:
const schedule = require('node-schedule'); // Funktion zum Auslesen der CPU-Temperatur function readCPUTemperature() { const fs = require('fs'); try { const temp = fs.readFileSync('/sys/class/thermal/thermal_zone0/temp', 'utf8'); return parseFloat(temp) / 1000; // Temperatur in Grad Celsius umrechnen } catch (err) { console.error('Fehler beim Auslesen der CPU-Temperatur:', err); return null; } } // Funktion zur Speicherung der Temperatur in ioBroker function updateTemperature() { const temperature = readCPUTemperature(); if (temperature !== null) { setState('javascript.0.Variablen.Homeserver.CPU_Temperatur', temperature); } } // Zeitplan erstellen: alle 1 Minute const job = schedule.scheduleJob('*/1 * * * *', function() { updateTemperature(); });
-
@loverz Auch hier: Unnötig komplex.
node-schedule
ist nicht nötig. Es gibt ja die internen Funktionen der Sandbox dafür- Man schreibt eigene Datenpunkte immer bestätigt (sonst bleiben die ja rot und viele andere Adapter können damit nicht arbeiten / ignorieren die Werte).
Vorschlag:
const fs = require('node:fs'); // Zeitplan erstellen: jede Minute schedule('* * * * *', () => { try { const temp = fs.readFileSync('/sys/class/thermal/thermal_zone0/temp', 'utf8'); if (temp) { const temperatureC = parseFloat(temp) / 1000; // Temperatur in Grad Celsius umrechnen; setState('javascript.0.Variablen.Homeserver.CPU_Temperatur', temperatureC, true); } } catch (err) { console.error(`Fehler beim Auslesen der CPU-Temperatur: ${err}`); } });