Files
Camper-Monitor/firmware/vanalign
BiasFandClaude Opus 5 f0df433421 Kalibrierung und Einbaulage gehören in den Sensor, nicht in die Apps
Die Kalibrier-Nullpunkte lagen schon immer im ESP und wurden dort auch
abgezogen – nur verriet die Firmware sie niemandem. Die Einbaulage lag
dagegen in jeder App einzeln, und damit stand sie bei drei Endgeräten
dreimal da, im Zweifel dreimal verschieden. Sie beschreibt aber den
Einbau und nicht das Telefon.

Zwei neue Charakteristiken:

    ...3426  Nullpunkte, zwei Floats, nur lesen
    ...3428  Einbaulage, acht Byte, lesen und schreiben

        0      Version, 1 = gültig gesetzt, 0 = nie geschrieben
        1      Längsachse: 0 = Pitch des Sensors, 1 = Roll
        2      längs umgekehrt (0/1)
        3      quer umgekehrt (0/1)
        4..7   Verdrehung um die Hochachse, float32, Grad

Das Versionsbyte löst die Umstellung: Steht dort 0, hat nie jemand
geschrieben – dann gilt weiter, was die App örtlich gespeichert hat, und
beim nächsten Bestimmen wandert sie hinauf. Mit älterer Firmware ohne die
Charakteristik passiert schlicht nichts.

Angewandt wird die Lage weiterhin in den Apps. Der Sensor verwahrt sie
nur: Meldete er die Winkel bereits umgerechnet, rechnete jede ältere App
die Korrektur ein zweites Mal ein.

Beim Verbinden liest jede App die Lage und übernimmt sie; nach dem
Einbaulage-Assistenten schreibt sie sie hinauf. Die Uhr braucht das
iPhone dafür nicht mehr – sie holt sie sich selbst. Die Android-App
bekommt dabei auch die Verdrehung, die ihrer Fassung bisher ganz fehlte:
Modell, Erkennung und Persistenz nachgezogen.

Geprüft: Firmware übersetzt, im erzeugten Code stehen beide
Charakteristiken mit den richtigen Rechten und der Schreib-Handler;
iPhone- und Watch-Ziel bauen; sieben neue Prüfungen in run-tests.sh
nageln das Byte-Format fest, samt Rundlauf und der Bedeutung von
Version 0. Nicht geprüft ist die Android-Fassung: Auf dieser Maschine
liegt nur Java 8, Gradle verlangt mindestens 11.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 20:50:23 +02:00
..

VanAlign Pro Neigungsmessung für den Camper

ESP32-S3 mit MPU6050, der Längs- und Querneigung des Fahrzeugs misst und über Bluetooth bereitstellt. Zum Ausrichten beim Parken: die Anzeige zeigt, welche Seite höher steht und wie weit es noch ist.

Teile dieses Projekts wurden mit KI-Unterstützung erstellt.

Firmware

esp32_ble.yaml die einzige Datei, die für den Betrieb gebraucht wird.

cd firmware/vanalign
esphome run esp32_ble.yaml

Bluetooth-Schnittstelle

Dienst 2a24b789-7aab-4535-af3e-ee76a35cc42d (wird beworben, das Gerät ist darüber auffindbar).

Charakteristik UUID (Ende) Zugriff Inhalt
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.

Kalibrierung

Fahrzeug eben stellen, dann ein beliebiges Byte ungleich 0 auf …3427 schreiben oder in Camper Monitor auf Auf aktuelle Lage kalibrieren tippen. 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.
  • 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

  • Camper Monitor (iOS) die App in diesem Projekt. Geräteart Nivellierung: grafische Libelle, Kalibrierung aus der App, zusammen mit den übrigen Geräten im Fahrzeug.
  • Die ursprüngliche WebBLE-Oberfläche liegt weiterhin im Projekt VanAllign-Pro unter WebAPP/.

Weitere Dateien

Unter experimente/ liegen esp32_switch.yaml (Umschalten zwischen WLAN und BLE) und esp32_EspNow-rec.yaml (ESP-NOW-Empfänger). Beide gehören nicht zum Neigungsmesser und werden für den Betrieb nicht gebraucht sie sind nur aufgehoben, weil sie Ideen aus der Entstehungszeit festhalten.

Herkunft

Übernommen aus dem eigenständigen Projekt VanAllign-Pro. Dort liegen weiterhin die WebBLE-Oberfläche (WebAPP/, durch die iOS-App abgelöst) und unter bin/ die gebauten Binärdateien der Version 1.0.

Voraussetzungen

  • ESP32-S3, MPU6050 an I²C (SDA GPIO8, SCL GPIO9)
  • ESPHome (geprüft mit 2026.6.5)