Batteriespannung: 8V-Plausibilitätsgrenze; Fahrten: echte Start-/Zielposition und Streckenlinie
Batteriespannung: Werte unter 8V (Sensor-/Verbindungsfehler, nicht physikalisch
plausibel für eine 12V-Bleibatterie) werden nicht mehr erfasst - live und beim
Import. "Neue Räder anlegen"-Knopf sitzt jetzt auf derselben Zeile wie "Montiert".
Fahrten: start_lat/-lon, end_lat/-lon und route wurden bisher nur beim
rückwirkenden Import befüllt, nie bei live erkannten Fahrten (dem Normalfall) -
Screening trägt sie jetzt aus dem GPS-Verlauf nach, unabhängig vom
Kilometerstand-Status. fakeTrack() (eine erfundene Linie) ist entfernt, die
Karte zeichnet jetzt die echte Route oder eine ehrliche Gerade zwischen den
bekannten Punkten. CARTOs anonyme Kartenkacheln verlangen inzwischen einen
API-Schlüssel ("API key required" auf jeder Karte in beiden Apps) - auf
schlüssellose OpenStreetMap-Kacheln umgestellt. Start/Ziel zeigen jetzt Datum
und Uhrzeit über der Adresse; die fehlerhafte "Status"-Zeile ist entfernt.
Batteriespannungs-Diagramm nutzt auf großen Bildschirmen die volle
Spaltenbreite statt einer festen 400px-Deckelung.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -106,6 +106,34 @@ def wert_bei(
|
||||
return davor
|
||||
|
||||
|
||||
def route_aus_verlauf(
|
||||
lat_verlauf: list[Verlaufspunkt],
|
||||
lon_verlauf: list[Verlaufspunkt],
|
||||
start: datetime.datetime,
|
||||
ende: datetime.datetime,
|
||||
) -> list[list[float]] | None:
|
||||
"""Baut eine chronologische Liste von [lat, lon]-Punkten für die
|
||||
Fahrt-Detailkarte, aus zwei getrennt geführten Sensor-Verläufen (die
|
||||
FMM003 liefert Breiten-/Längengrad als zwei unabhängige Sensoren, siehe
|
||||
STANDORT_LAT_SENSOR/STANDORT_LON_SENSOR). Jeder Breitengrad-Punkt im
|
||||
Fenster [start, ende] bekommt den zeitlich nächstgelegenen Längengrad-Wert
|
||||
zugeordnet - beide Sensoren aktualisieren unabhängig voneinander, exakt
|
||||
gleiche Zeitstempel sind nicht garantiert. None bei weniger als zwei
|
||||
Punkten (keine sinnvolle Linie)."""
|
||||
punkte: list[list[float]] = []
|
||||
for ts, wert in lat_verlauf:
|
||||
if not (start <= ts <= ende):
|
||||
continue
|
||||
lat = zahl(wert)
|
||||
if lat is None:
|
||||
continue
|
||||
lon = naechster_wert(ts, lon_verlauf)
|
||||
if lon is None:
|
||||
continue
|
||||
punkte.append([lat, lon])
|
||||
return punkte if len(punkte) >= 2 else None
|
||||
|
||||
|
||||
def naechster_wert(
|
||||
zielzeit: datetime.datetime, verlauf: list[Verlaufspunkt]
|
||||
) -> float | None:
|
||||
|
||||
Reference in New Issue
Block a user