fix(gui): "CPU-Temperatur" statt Zonenname in Klammern

Die Zeile zeigt nur noch den Wert in Grad. Damit die neue Beschriftung
stimmt, filtert sysstat.js die Zonen enger: nur soc-thermal, bigcore0/1
und littlecore. GPU-, NPU- und Center-Zone konnten vorher den Hoechstwert
stellen, obwohl "CPU" daran steht.

Doku: Kapitel 07 + Changelog.
This commit is contained in:
Claude
2026-08-17 22:29:02 +02:00
parent 6973b46d75
commit c562586216
4 changed files with 20 additions and 8 deletions
+5 -3
View File
@@ -34,8 +34,10 @@ sampleCpu();
setInterval(sampleCpu, 2000).unref();
// ---- Temperatur ---------------------------------------------------------
// Interessant sind die SoC-/Kern-Zonen; WLAN-Karte & Co. bleiben draußen, sonst
// zeigt die Anzeige eine Temperatur, die nichts mit der Rechenlast zu tun hat.
// Gemeldet wird die CPU-Temperatur: wärmste der Kern-Zonen (bigcore0/1,
// littlecore) plus soc-thermal. GPU, NPU und die WLAN-Karte bleiben draußen —
// die GUI beschriftet den Wert als „CPU-Temperatur“, also darf auch nur CPU
// drinstecken.
const TEMP_ZONES = (() => {
try {
return fs.readdirSync('/sys/class/thermal')
@@ -46,7 +48,7 @@ const TEMP_ZONES = (() => {
try { type = fs.readFileSync(`${dir}/type`, 'utf8').trim(); } catch { }
return { type, file: `${dir}/temp` };
})
.filter(z => /soc|core|center|npu|gpu/i.test(z.type));
.filter(z => /^(soc|bigcore\d*|littlecore)-thermal$/i.test(z.type));
} catch { return []; }
})();
+2 -2
View File
@@ -118,7 +118,7 @@ function sysmonMarkup() {
<div class="sys-bar"><i data-cpu-bar style="width:0%"></i></div>
<div class="sys-row"><span>RAM</span><b data-ram-pct>–</b></div>
<div class="sys-bar"><i data-ram-bar style="width:0%"></i></div>
<div class="sys-row"><span>Temperatur</span><b data-temp>–</b></div>
<div class="sys-row"><span>CPU-Temperatur</span><b data-temp>–</b></div>
</div>
</div>
</div>`;
@@ -171,7 +171,7 @@ function paintSysmon(s) {
load.title = `CPU ${Math.round(cpu)} % · RAM ${Math.round(ram)} %${tc == null ? '' : ` · ${tc.toFixed(0)} °C`}`;
set('[data-cpu-pct]', `${cpu.toFixed(0)} %${s.cpu && s.cpu.cores ? ` (${s.cpu.cores} Kerne)` : ''}`);
set('[data-ram-pct]', s.ram ? `${ram.toFixed(0)} % — ${sysGb(s.ram.usedBytes)} von ${sysGb(s.ram.totalBytes)}` : '–');
set('[data-temp]', tc == null ? '–' : `${tc.toFixed(1)} °C${s.temp.zone ? ` (${s.temp.zone})` : ''}`);
set('[data-temp]', tc == null ? '–' : `${tc.toFixed(1)} °C`);
const cb = document.querySelector('[data-cpu-bar]'); if (cb) cb.style.width = Math.min(100, cpu) + '%';
const rb = document.querySelector('[data-ram-bar]'); if (rb) rb.style.width = Math.min(100, ram) + '%';
const tb = document.querySelector('[data-turbine]');
+4 -3
View File
@@ -89,7 +89,7 @@ Boards ohne SSH zeigen:
| Symbol | Zeigt an | Klappkarte bei Mauskontakt |
|---|---|---|
| Ring + Prozentzahl | Anteil des **Aufnahme-Vorrats**, den die Aufnahmen schon belegen | Aufnahmen (GB + Dateizahl) mit Balken, Noch frei, Gesamt für Aufnahmen |
| Ventilator | CPU-Last — je höher, desto schneller die Drehung | CPU % (+ Kernzahl), RAM % mit GB, Temperatur mit Zone |
| Ventilator | CPU-Last — je höher, desto schneller die Drehung | CPU % (+ Kernzahl), RAM % mit GB, CPU-Temperatur |
**Bezugsgröße der Prozentzahl** (Wunsch des Nutzers, 2026-08-17): nicht die Partition, sondern der Platz,
den ein *frisch aufgesetztes System dieser Ausbaustufe* für Aufnahmen übrig hätte:
@@ -120,8 +120,9 @@ Einheit allein in die nächste Zeile und sah aus wie ein fehlender Wert.
- CPU-% aus der Differenz zweier `/proc/stat`-Messpunkte. `sysstat.js` misst dafür **selbst** alle 2 s
(`setInterval(...).unref()`); ohne diesen eigenen Ticker wäre die erste Antwort nach jedem Start 0 %.
- RAM rechnet mit `MemAvailable`, nicht `MemFree` — sonst stünde das Board wegen Cache dauernd bei 95 %.
- Temperatur = wärmste der SoC-/Core-/Center-/GPU-/NPU-Zonen; `iwlwifi_1` (WLAN-Karte) fliegt raus, weil
ihr Wert nichts über die Rechenlast sagt.
- Temperatur = wärmste der **CPU-Zonen** (`soc-thermal`, `bigcore0/1-thermal`, `littlecore-thermal`).
GPU-, NPU-, Center- und WLAN-Zone (`iwlwifi_1`) bleiben draußen: die Karte beschriftet den Wert als
„CPU-Temperatur“, also darf auch nur CPU darin stecken. Die Zone selbst wird nicht mehr angezeigt.
- Frontend: `sysmonMarkup()` / `paintSysmon()` / `tickSysmon()` in `web/src/main.js`, Poll alle 5 s, im
Hintergrund-Tab (`document.hidden`) ausgesetzt. Ein einziger Ticker für alle `render()`-Durchläufe;
nach jedem `render()` werden die zuletzt geholten Werte sofort zurückgemalt, weil `render()` die
+9
View File
@@ -3,6 +3,15 @@
Chronik der Entwicklungsschritte. **Regel: jede zukünftige Änderung bekommt hier einen Eintrag** (Datum,
Was, Warum, betroffene Dateien/Backups).
## 2026-08-17 (Nachtrag 5) — „CPU-Temperatur“ statt Zonenname in Klammern
Die Zeile heißt jetzt „CPU-Temperatur“ und zeigt nur noch `46,2 °C`; der Zonenname in Klammern
(`littlecore-thermal` o. ä.) ist weg. Damit die Beschriftung auch stimmt, filtert `sysstat.js` die
Zonen enger: nur `soc-thermal`, `bigcore0/1-thermal`, `littlecore-thermal` — GPU-, NPU- und
Center-Zone fielen vorher unter „wärmste Zone“ und hätten den Wert stellen können, obwohl daran
„CPU“ steht. Feld `temp.zone` bleibt in der API (fürs Debuggen), die GUI zeigt es nicht mehr.
Backend geändert ⇒ Neustart nach Prüfung `pending=0`.
## 2026-08-17 (Nachtrag 4) — Erklärtext und Partitionszeile aus der Speicherkarte
Endstand der Klappkarte: Titel, „Aufnahmen“ (GB + Dateizahl) mit Balken, „Noch frei“, „Gesamt für