Neigungsmesser: zurück auf den bewährten Firmware-Aufbau

Die überarbeitete Firmware liess sich prüfen und fehlerfrei übersetzen,
blieb auf dem Gerät aber stumm - keine Werte, keine Ausgabe über die
serielle Schnittstelle. Der Umbau war zu gross für das, was sich ohne
Gerätezugriff absichern lässt: config und compile sagen nichts über das
Laufzeitverhalten.

Die Firmware setzt jetzt wieder auf dem bewährten Stand 1.0 auf und ändert
daran nur zweierlei: die Kalibrierung über Bluetooth funktioniert (die
Charakteristik war beschreibbar, hatte aber keine Aktion hinterlegt und
tat nichts), und der ESP-NOW-Rest ist entfernt, der bei jedem Messwert ein
"hallo" an eine feste MAC schickte. Kein notify, kein aktives Setzen der
Werte, kein Zugriff auf den BLE-Server aus dem Boot-Ablauf heraus.

In der App fällt damit ein Denkfehler auf: fehlende Kalibrier-Offsets
galten als "nicht kalibriert" statt als "unbekannt". Bei Firmware, die
sie nicht meldet, stünde dauerhaft eine Warnung, die sich nicht abstellen
lässt. Gewarnt wird jetzt nur, wenn das Gerät ausdrücklich Nulloffsets
meldet. Der Rücksetz-Knopf hing an derselben Bedingung und wäre sonst
unerreichbar gewesen.

Das Abfragen im Takt war bereits als Rückfallebene eingebaut und trägt
diesen Aufbau ohne Änderung.

Ausserdem nimmt die .gitignore jetzt virtuelle Python-Umgebungen aus. Eine
solche war versehentlich mitversioniert worden - über 14000 Dateien, die
maschinenabhängig sind und im Repo nichts zu suchen haben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
BiasF
2026-08-30 15:39:20 +02:00
co-authored by Claude Opus 5
parent 9406a749e5
commit 826a201a36
8 changed files with 174 additions and 141 deletions
+24 -8
View File
@@ -22,11 +22,13 @@ darüber auffindbar).
| Charakteristik | UUID (Ende) | Zugriff | Inhalt |
|---|---|---|---|
| Pitch | `…3424` | lesen, benachrichtigen | Längsneigung, Float32 little-endian, Grad |
| Roll | `…3425` | lesen, benachrichtigen | Querneigung, Float32 little-endian, Grad |
| Offsets | `…3426` | lesen, benachrichtigen | zwei Float32: die gespeicherten Kalibrierwerte |
| Pitch | `…3424` | lesen | Längsneigung, Float32 little-endian, Grad |
| Roll | `…3425` | lesen | Querneigung, Float32 little-endian, Grad |
| Kalibrieren | `…3427` | schreiben | ein Byte: `0` setzt zurück, alles andere kalibriert |
Der Client fragt Pitch und Roll im Takt ab; Camper Monitor tut das zweimal je
Sekunde.
Positiver Pitch heißt: das Heck steht höher. Positiver Roll: die rechte Seite
steht höher.
@@ -38,18 +40,32 @@ Die Offsets werden dauerhaft gespeichert und überstehen einen Neustart.
## Was sich gegenüber 1.0 geändert hat
Bewusst wenig siehe unten.
* **Kalibrierung funktioniert jetzt überhaupt.** Die Charakteristik `…3427` war
zwar beschreibbar, hatte aber keine Aktion hinterlegt und tat nichts. Der
Kalibrier-Knopf war nur über den Webserver erreichbar, der auskommentiert
ist kalibrieren war damit auf keinem Weg möglich.
* **Die Werte werden gesendet, statt abgefragt.** Pitch und Roll haben jetzt
`notify`. Vorher musste der Client im Sekundentakt lesen, was für eine
Wasserwaage zu träge ist.
* **Die gespeicherten Offsets sind auslesbar**, sodass ein Client zeigen kann,
ob überhaupt schon kalibriert wurde.
* **Der ESP-NOW-Rest ist entfernt.** Er schickte bei jedem einzelnen Messwert
ein `"hallo"` an eine fest eingetragene MAC-Adresse.
## Was bewusst nicht geändert wurde
Eine weitergehende Fassung hatte `notify` auf Pitch und Roll, setzte die Werte
aktiv bei jeder Messung und stellte die Kalibrier-Offsets zum Auslesen bereit.
Sie liess sich mit `esphome config` prüfen und fehlerfrei übersetzen auf dem
Gerät blieb sie danach jedoch stumm, ohne jede Ausgabe über die serielle
Schnittstelle.
Woran genau es lag, ist offen. Verdächtig sind das Setzen der Werte aus dem
`on_boot`-Ablauf heraus, bevor der BLE-Server bereit ist, sowie zwei
Benachrichtigungen zehnmal je Sekunde. Weil sich das nur am Gerät klären lässt,
bleibt es beim bewährten Aufbau: Pitch und Roll sind reine Lesewerte mit
hinterlegtem Ausdruck, der Client fragt ab.
Die verworfene Fassung ist in der Projektgeschichte unter *Neigungsmesser
VanAlign einbinden* nachlesbar, falls jemand daran weiterarbeiten will.
Die UUIDs sind unverändert, die vorhandene WebApp läuft weiter.
## Clients