# RF Mapper - Active Tasks **Sprint:** v1.1.0 - Production Hardening **Updated:** 2026-02-01 **Current Version:** v1.0.1 --- ## Priority Levels - **P0** - Critical / Blocking - **P1** - High / Current sprint - **P2** - Medium / Next sprint - **P3** - Low / Backlog ## Status Legend - `[ ]` Todo - `[~]` In Progress - `[x]` Done - `[-]` Blocked --- ## P0 - Critical | Status | Task | Notes | |--------|------|-------| | [x] | Fix Bluetooth RSSI acquisition | Switched to `bleak` Python library for reliable BLE scanning with RSSI | --- ## P1 - High Priority (Current Sprint) | Status | Task | Notes | |--------|------|-------| | [x] | MapLibre GL JS integration | 3D map with building extrusion | | [x] | Floor-based positioning | Devices assigned to floors | | [x] | Floor selector UI | Dropdown to filter by floor | | [x] | Custom distance override | Set manual distance via popup | | [x] | Manual position override | Drag-and-drop for floor-assigned devices | | [x] | Live BT tracking mode | 4-second scan interval | | [x] | Moving device detection | Purple markers for RSSI changes | | [x] | Filter-aware scanning | Skip WiFi/BT based on toggle | | [x] | Improve BT discovery reliability | Using bleak library for BLE scanning | | [x] | Document API endpoints | docs/API.md | | [x] | Create CHEATSHEET.md | Quick reference guide | | [x] | Home Assistant webhook integration | Scan results, new device, departure alerts | | [x] | Multi-scanner peer sync | Bidirectional sync between scanner instances | | [x] | Source scanner tracking | Synced devices positioned relative to source | | [x] | Peer scanner markers | Show peer scanners on 3D map | | [x] | Multi-node master dashboard | View peer node data without page redirect | | [ ] | Unit test coverage | pytest for core modules | | [ ] | Docker container | Containerized deployment | --- ## P2 - Medium Priority (Next Sprint) | Status | Task | Notes | |--------|------|-------| | [x] | Position smoothing | Statistical averaging (5 samples + stddev) | | [x] | Device trails | Show movement history on map (for moving devices) | | [ ] | Signal strength graph | Per-device RSSI over time | | [ ] | Scan history browser | View past scans in UI | | [ ] | Export functionality | Download scan data as CSV | --- ## P3 - Low Priority (Backlog) | Status | Task | Notes | |--------|------|-------| | [x] | SQLite persistence | Historical device tracking enabled | | [x] | Device labeling | Custom names via API | | [x] | Home Assistant integration | Webhook-based (scan, new device, departure) | | [ ] | Docker container | Containerized deployment | | [ ] | Unit tests | pytest coverage | --- ## Completed This Sprint | Task | Completed | |------|-----------| | 3D map view with MapLibre | 2026-01-31 | | Floor assignment in popup | 2026-01-31 | | Custom distance setting | 2026-01-31 | | Live tracking button | 2026-01-31 | | Purple moving indicators | 2026-01-31 | | Smart scanning (filter-aware) | 2026-01-31 | | SQLite historical database | 2026-02-01 | | Bleak BLE scanning (reliable RSSI) | 2026-02-01 | | Auto-start live BT tracking | 2026-02-01 | | Statistical movement detection | 2026-02-01 | | Floor persistence in database | 2026-02-01 | | Popup persistence during updates | 2026-02-01 | | API documentation (docs/API.md) | 2026-02-01 | | CHEATSHEET.md quick reference | 2026-02-01 | | CHANGELOG.md version history | 2026-02-01 | | Device trails for moving devices | 2026-02-01 | | Manual position override (drag-drop) | 2026-02-01 | | Home Assistant webhook integration | 2026-02-01 | | Multi-scanner peer sync | 2026-02-01 | | Peer registration API | 2026-02-01 | | Bidirectional device sync | 2026-02-01 | | Source scanner tracking | 2026-02-01 | | Peer scanner markers on 3D map | 2026-02-01 | | v1.0.0 release | 2026-02-01 | | Multi-node master dashboard | 2026-02-01 | | Replace hcitool with bleak for BLE scanning | 2026-02-01 | | Skip BT scanning on Termux/Android | 2026-02-01 | | Node control API (start/stop/restart peers via SSH) | 2026-02-01 | | Home Assistant node control integration | 2026-02-01 | | Make Termux location check optional | 2026-02-01 | | Fix filter to control display only (always scan both) | 2026-02-01 | --- ## Blockers *No current blockers* ### ~~BT RSSI Acquisition~~ (RESOLVED) **Problem:** Cannot get reliable RSSI values for Bluetooth devices - `hcitool rssi ` - Only works for connected devices - `bluetoothctl info` - No RSSI for cached devices **Solution:** Switched to `bleak` Python BLE library which provides reliable RSSI via D-Bus/BlueZ. --- ## Notes - BLE scanning now uses `bleak` Python library (reliable RSSI via D-Bus) - WiFi scanning works well with `iw` command - Live BT tracking auto-starts on page load (4-second scan interval) - Historical data stored in SQLite database with auto-cleanup - Movement detection uses statistical analysis (5-sample avg + 2σ threshold) - Floor assignments persist in database across page reloads - Popups stay open during live tracking updates - Manual position override: drag floor-assigned device markers to set custom position - **Peer Sync**: Multiple scanner instances can share device metadata - Devices synced from peers retain source scanner info - Positions calculated relative to detecting scanner (not local scanner) - Peer scanners shown on 3D map as cyan markers - Background sync every 30 seconds (configurable) - **Master Dashboard**: Designated master node can view any peer's data - Set `is_master: true` in config.yaml to enable - Node selector dropdown appears in header - Switch between local/peer views without page redirect - Live tracking runs on selected peer node - WebSocket connects to peer for real-time updates - **Node Control API**: Master can start/stop/restart peers via SSH - `POST /api/nodes//start|stop|restart` - `GET /api/nodes//status` - Integrated with Home Assistant via rest_command - **Termux/Android Support**: BT scanning skipped (no D-Bus), location check optional - **Filter Behavior**: WiFi/BT always scanned; filter controls display only