Fahrten, Statistik, Trip-Timer (2026.8.31.3)
Der 15-Minuten-Timer war doppelt: der FMM003 wartet laut Konfiguration (Trip \ Odometer, Ignition OFF Timeout) selbst 900 s, die App noch einmal 15 Minuten. Zusammen eine halbe Stunde. Die Pausenregel ist damit entfallen - in der Live-Erkennung, im Historienimport und in beiden Oberflaechen. Der Schwellwert "ab wann ist es ein Parkplatz" hing an derselben Einstellung, hat damit aber nichts zu tun und steht jetzt als eigene Zahl. Hoechst- und Durchschnittsgeschwindigkeit je Fahrt. Der Durchschnitt folgt aus Strecke und Dauer, vmax aus der neuen Rolle GESCHWINDIGKEIT_SENSOR - laut Konfiguration liest das Geraet die Geschwindigkeit vom OBD/CAN. Es ist der groesste gemeldete Wert, nicht die tatsaechliche Spitze: alle zehn Sekunden ein Datensatz. So ist es auch beschriftet. Der Langzeitverbrauch war um einen ganzen Tankinhalt zu hoch. Gemessen wird die Strecke ZWISCHEN erstem und letztem Tankstop; verbraucht wurde darauf, was ab dem ZWEITEN hineinkam - der erste fuellte die Strecke davor. Bei 13 Tankvorgaengen rund 8 Prozent, im Testfall 16,7 statt 8,3 l/100 km. Der Test hatte die falsche Rechnung festgeschrieben und ist mitkorrigiert. Eine negative Strecke (falscher Kilometerstand an einem Tankvorgang) gilt jetzt als unplausibel statt als Null ohne Erklaerung. Verbrauch je Fahrt bekommt Grenzen: am Sensor nachgemessen loest can_fuel_volume 0,1 l auf, ein Schritt entspricht also 10/Strecke l/100 km Fehler. Unter 3 km sagt die Differenz nichts mehr, ueber 60 l/100 km ist es kein Verbrauch. Statistik: zusaetzlich "Absolut", und die Einheit steht jetzt in eckigen Klammern an der Rubrik statt vier Mal am Zeitraum. Fuenf Spalten passen auf einem Telefon nicht nebeneinander, das Raster bricht um. Radfoto in Reifen war ein reines <Bild> - Ersetzen und Loeschen von dort aus gar nicht erreichbar. Jetzt BildMitMenue wie im Panel. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6223,3 +6223,69 @@ Was zwangslaeufig manuell bleibt: die App-Gruppe und die App-ID `app.datametric3
|
||||
Apple-Portal (einmalig), das Keychain-„Immer erlauben" beim ersten Signieren (einmalig pro
|
||||
Schluesselbund; der nicht-interaktive Weg verlangt das Anmeldepasswort auf der Kommandozeile und
|
||||
scheidet damit aus), und `git push` der fertigen `.ipa`, weil das Telefon sie aus dem Repo laedt.
|
||||
|
||||
## AS. Fahrten, Statistik und der Trip-Timer des FMM003 (2026.8.31.3)
|
||||
|
||||
### Der 15-Minuten-Timer war doppelt
|
||||
|
||||
Die App wartete nach „Zündung aus" 15 Minuten, bevor sie eine Fahrt beendete — und der FMM003 tut
|
||||
dasselbe: in seiner Konfiguration steht unter **Trip \ Odometer** ein **Ignition OFF Timeout von
|
||||
900 s**. Zusammen eine halbe Stunde. Entfallen sind deshalb `pausenzeit_sekunden()`, die abbrechbare
|
||||
Wartezeit in `zuendung_geaendert()`, `_ende_bestaetigen()`, die Verschmelzung in
|
||||
`historienimport._fahrtfenster()` und die Einstellung in beiden Oberflächen.
|
||||
|
||||
**Zurückholen**, falls die Erkennung je wieder ohne das Gerät auskommen muss: eine abbrechbare
|
||||
Wartezeit vor `fahrt_beenden()` legen (`k.warte_ende_ab` / `k.warte_ende_ab_abbrechen` sind dafür
|
||||
noch da) und `fahrten_pausenzeit_min` wieder anbieten. Der Schwellwert „ab wann ist es ein
|
||||
Parkplatz" hing an derselben Einstellung, hat damit aber nichts zu tun und steht jetzt als eigene
|
||||
Zahl (`PARKPLATZ_AB_MIN = 15`) in beiden Codebasen.
|
||||
|
||||
### Höchst- und Durchschnittsgeschwindigkeit
|
||||
|
||||
- **Durchschnitt** braucht keinen Sensor: Strecke ÷ Dauer, `durchschnitt_kmh()` gab es schon.
|
||||
`avg_speed_kmh` war seit jeher im Schema und wurde nie gefüllt — jetzt in `screening.durchfuehren()`
|
||||
für jede Fahrt mit Strecke und Dauer.
|
||||
- **vmax** braucht einen: neue Rolle `GESCHWINDIGKEIT_SENSOR`. Laut Konfiguration liest der FMM003
|
||||
die Geschwindigkeit vom **OBD/CAN**, nicht aus GPS (System → Speed Source) — Beispielname im
|
||||
Katalog entsprechend `vehicle_speed_read_from_can`.
|
||||
- Es ist der **größte gemeldete** Wert, nicht die tatsächliche Spitze: das Gerät schreibt während
|
||||
der Fahrt alle zehn Sekunden einen Datensatz (Data Acquisition → Moving → Min Period = 10 s). So
|
||||
ist es auch beschriftet.
|
||||
|
||||
### Der Langzeitverbrauch war um einen ganzen Tankinhalt zu hoch
|
||||
|
||||
Gerechnet wurde `alle Liter ÷ (odo_letzter − odo_erster)`. Die Strecke liegt aber **zwischen**
|
||||
erstem und letztem Tankstop, und verbraucht wurde darauf genau das, was ab dem **zweiten** Tankstop
|
||||
hineinkam — der erste füllte die Strecke davor. Bei 13 Tankvorgängen sind das rund 8 % zu viel; im
|
||||
Testfall 16,7 statt 8,3 l/100 km. Korrigiert in beiden Codebasen, der Test hatte die falsche
|
||||
Rechnung festgeschrieben und ist mitkorrigiert (plus zwei neue Fälle).
|
||||
|
||||
Dazu zwei Absicherungen: eine **negative Strecke** (falscher Kilometerstand an einem Tankvorgang,
|
||||
in diesem Projekt schon vorgekommen — Abschnitt AF) wird auf 0 gesetzt statt als Zahl angezeigt, und
|
||||
sie gilt jetzt als *unplausibel*, damit statt eines kommentarlosen „0 km / –" der erklärende Hinweis
|
||||
erscheint.
|
||||
|
||||
### Verbrauch je Fahrt: Grenzen statt Vertrauen
|
||||
|
||||
`verbrauch_aus_literstaenden()` hatte weder Unter- noch Obergrenze. Am echten Sensor nachgemessen:
|
||||
`can_fuel_volume` löst **0,1 l** auf — ein Quantisierungsschritt entspricht also 10/Strecke l/100 km
|
||||
Fehler. Unter **3 km** (±3,3) sagt die Differenz nichts mehr, über **60 l/100 km** ist es kein
|
||||
Verbrauch, sondern ein Messfehler. Beides jetzt als benannte Konstante mit dieser Herleitung.
|
||||
|
||||
### Statistik: „Absolut" und Einheiten in eckigen Klammern
|
||||
|
||||
Die Einheit stand vier Mal am Zeitraum („Jahr h", „Monat €") und fehlte in der Überschrift, die man
|
||||
zuerst liest. Jetzt an der Rubrik: **Gefahrene Distanz [km]**, **Fahrzeit [h]**, **Getankte Liter
|
||||
[l]**, **Kraftstoffkosten [€]**, **Näherung je Fahrt, je Zeitraum [l/100 km]**. Die Zeiträume heißen
|
||||
nur noch Jahr / Monat / Woche / Tag / **Absolut**.
|
||||
|
||||
Fünf Spalten passen auf einem Telefon nicht nebeneinander: bei rund 300 px Innenbreite blieben je
|
||||
51 px, und „209.177" braucht bei 16 px Audi Type Wide etwa 60. Das Raster bricht deshalb um
|
||||
(`auto-fit, minmax(84px, 1fr)`) — auf dem Telefon drei plus zwei, auf einem breiten Bildschirm alle
|
||||
fünf in einer Reihe.
|
||||
|
||||
### Radfoto war nicht antippbar
|
||||
|
||||
In `Reifen.tsx` stand ein reines `<Bild>`; das Panel hat an derselben Stelle seit jeher
|
||||
`data-bildklick`. Ersetzen und Löschen waren von dort aus gar nicht erreichbar — jetzt
|
||||
`BildMitMenue`.
|
||||
|
||||
Reference in New Issue
Block a user