Highlights
- BLE control unlocks standalone integrations: ESPectre can now be used even without Home Assistant by building custom BLE clients.
- Runtime threshold is now configurable via BLE: the current BLE command channel enables live threshold updates and can be extended to additional runtime parameters.
- Web game moved from Serial to Web Bluetooth:
docs/gameis now an example BLE client instead of a Web Serial-only path. - CSI normalization supports more payload variants: runtime handling now covers
256->128,228->114, and114->128remap paths before HT20 processing. - Behavior and validation are aligned across stacks: ESPHome/C++ and Micro-ESPectre/Python follow the same CSI-length normalization logic, with dedicated tests for
128/256/114/228.
Fixed
- Extended CSI normalization paths (ESPHome/C++ and Micro-ESPectre/Python): runtime now consistently handles
256->128(double HT-LTF),228->114, and114->128remap paths before HT20 processing, reducing packet drops on short/double CSI payload variants (#93). - Cross-stack alignment for CSI length handling: Micro-ESPectre normalization behavior and runtime logs are now aligned with ESPHome component behavior.
Added
- Unit tests for new CSI payload scenarios: added coverage for
114-byteand228-byteCSI handling in C++ (test_csi_manager) and dedicated Python tests for128/256/114/228normalization paths (micro-espectre/tests/test_utils.py).
Changed
- Web game transport migrated to BLE:
docs/gamenow uses Web Bluetooth (desktop Chrome/Edge) with a custom ESPectre BLE service for telemetry (movement,threshold) and sysinfo notifications, replacing the previous Web Serial path. - BLE control channel opened to generic clients:
docs/gameis now an example client built with the Web Bluetooth API, but ESPectre can be controlled by any standard BLE client implementing the same commands. - Legacy USB serial monitor path removed from firmware loop: USB Serial/JTAG attach detection for game sysinfo emission has been cleaned up as it is no longer needed with BLE transport.
- Practical BLE benefits documented in this release: the game/channel flow is now compatible with standard ESP32 boards (no native USB serial/JTAG required), does not require an active wired serial connection, and enables runtime threshold tuning over BLE from any compatible BLE client (not only
docs/game).