Der Akku bekommt ein Gedächtnis

Verlauf über 24 Stunden, sieben Tage und dreißig Tage, aufgezeichnet alle fünf
Minuten. Als Säulen und nicht als Linie: eine Linie verbindet auch dort, wo
nichts gemessen wurde, und ein zugeklappter Rechner hatte keinen Ladestand —
eine Linie darüber behauptet einen.

Dazu Segelmodus und Hitzeschutz als reine Regeln im Helfer. Beide haben zwei
Schwellen, eine zum Anhalten und eine zum Weitermachen. Ohne diesen Abstand
hinge der Akku am Limit und würde bei jedem verlorenen Prozent nachgeladen —
hunderte winzige Ladevorgänge am Tag, und genau die altern ihn.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-05 21:06:06 +02:00
co-authored by Claude Opus 5
parent edb327cabe
commit f289d02c37
9 changed files with 1357 additions and 690 deletions
@@ -49,6 +49,14 @@ public final class MetricsModel {
}
public private(set) var snapshot = MetricsSnapshot()
/// Der Akkuverlauf.
///
/// Gehört hierher und nicht in den Programmstart: die Messwerte entstehen
/// hier, und ein zweiter Beobachter für dieselben Zahlen wäre ein zweiter
/// Weg zu ihnen. Wie oft wirklich aufgezeichnet wird, entscheidet der
/// Speicher selbst — hier wird nur jede Messung angeboten.
public let batteryHistory = BatteryHistoryStore()
/// Verlauf für die Graphen, jüngster Wert zuletzt.
public private(set) var history: [MetricsSnapshot] = []
@@ -132,6 +140,7 @@ public final class MetricsModel {
private func sample() {
let value = source.sample()
snapshot = value
if let battery = value.battery { batteryHistory.record(battery) }
history.append(value)
if history.count > Self.historyLength { history.removeFirst(history.count - Self.historyLength) }
}