github Xunil99/ha-bosch-ebike v1.19.52b2

latest release: v1.19.52b3
pre-release2 hours ago

Deutsch

Beta, Runde 2: Zweite Verbindung wird zurückgehalten, bis die erste eingeschwungen ist (Issue #79)

Reine Firmware-Änderung an der experimentellen Zwei-Bike-Bridge (bosch_ebike_ldi_dual, factory-dual.yaml). Die einfache Bridge (bosch_ebike_ldi) ist nicht betroffen.

PEPITO82 hat die erste Beta (v1.19.52b1) an echter Zwei-Bike-Hardware getestet und präzise getimte Logs geschickt. Ergebnis: Die Vermutung aus Runde 1 war unvollständig. Ein Rad, dessen Geräteerkennung durch die neue Entzerrung korrekt zurückgehalten wurde und das somit gar keine GATT-Aktivität hatte, wurde trotzdem nach fünf Sekunden durch den BLE-eigenen Verbindungs-Überwachungs-Timeout getrennt. Eine untätige Verbindung lässt sich nicht durch GATT-Kollisionen töten. Die eigentliche Ursache liegt eine Ebene tiefer: das einzige Funkmodul des klassischen ESP32 kann zwei gleichzeitig noch "junge" Verbindungen nicht zuverlässig bedienen, unabhängig davon, was auf GATT-Ebene gerade passiert.

Die Bridge bewirbt sich jetzt nicht mehr sofort erneut für ein zweites Rad, sobald das erste sich verbunden hat. Ist ein Slot der einzig verbundene, bleibt das Bewerben ausgesetzt, bis dieser Slot entweder Live-Daten erreicht oder seine eigene Zeitüberschreitung abläuft. Ein zweites Rad kann während des kritischen Fensters also gar nicht erst verbinden, weil es nichts gibt, womit es sich verbinden könnte. Die Entzerrung auf GATT-Ebene und die Acht-Sekunden-Zeitüberschreitung aus Runde 1 bleiben als zusätzliche Absicherung bestehen.

Wieder Compile-geprüft (CI grün), noch nicht an echter Hardware bestätigt.

English

Beta, round 2: hold off on a second connection until the first has settled (issue #79)

Firmware only change to the experimental two bike bridge (bosch_ebike_ldi_dual, factory-dual.yaml). The single bike bridge (bosch_ebike_ldi) is unaffected.

PEPITO82 tested the first beta (v1.19.52b1) against real two bike hardware and sent back precisely timed logs. Result: the round 1 theory was incomplete. A bike whose own discovery was correctly held back by the new staggering, and which therefore had zero GATT activity in flight, still got disconnected five seconds later by BLE's own link level supervision timeout. An idle connection cannot be killed by GATT contention. The actual cause sits one layer down: the classic ESP32's single radio cannot reliably service two still young connections at once, regardless of what either is doing at the GATT level.

The bridge no longer resumes advertising for a second bike immediately once the first connects. While a slot is the only one connected, advertising stays off until that slot either reaches live data or its own timeout elapses. A second bike simply cannot connect during that critical window, since there is nothing for it to connect to. The round 1 GATT level staggering and the eight second timeout remain in place as additional safeguards.

Compile checked again (CI green), not yet confirmed on real hardware.

Nederlands

Beta, ronde 2: tweede verbinding wordt uitgesteld tot de eerste is ingeburgerd (issue #79)

Alleen een firmwarewijziging voor de experimentele bridge voor twee fietsen (bosch_ebike_ldi_dual, factory-dual.yaml). De bridge voor één fiets (bosch_ebike_ldi) is niet geraakt.

PEPITO82 heeft de eerste beta (v1.19.52b1) op echte hardware met twee fietsen getest en nauwkeurig getimede logs teruggestuurd. Resultaat: het vermoeden uit ronde 1 klopte niet volledig. Een fiets waarvan de eigen ontdekking terecht werd uitgesteld door de nieuwe spreiding, en die dus geen GATT activiteit had, werd toch na vijf seconden verbroken door de eigen bewakingstimeout van BLE. Een niet actieve verbinding kan niet worden gedood door GATT conflicten. De echte oorzaak zit een laag dieper: de enige radio van de klassieke ESP32 kan twee nog jonge verbindingen niet betrouwbaar tegelijk afhandelen, ongeacht wat er op GATT niveau gebeurt.

De bridge hervat het adverteren voor een tweede fiets niet langer meteen zodra de eerste verbindt. Zolang een plek de enige verbonden plek is, blijft het adverteren uit totdat die plek live gegevens bereikt of de eigen timeout verloopt. Een tweede fiets kan tijdens dat kritieke venster gewoon niet verbinden, omdat er niets is om mee te verbinden. De spreiding op GATT niveau en de timeout van acht seconden uit ronde 1 blijven als extra bescherming aanwezig.

Opnieuw compilatie gecontroleerd (CI groen), nog niet bevestigd op echte hardware.

Don't miss a new ha-bosch-ebike release

NewReleases is sending notifications on new releases.