- Node control API (start/stop/restart peers via SSH) - Home Assistant node control integration - Termux/Android: skip BT scanning, optional location check - Filter controls display only, always scan both WiFi/BT Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
158 lines
6.0 KiB
Markdown
158 lines
6.0 KiB
Markdown
# 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 <addr>` - 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/<id>/start|stop|restart`
|
||
- `GET /api/nodes/<id>/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
|