Files
rf-mapper/docs/CHEATSHEET.md
User 7cc7c47805 feat: add Home Assistant integration and improve CLI/UI
Home Assistant Integration:
- New homeassistant.py module with webhook support
- Webhooks for scan results, new devices, and device departures
- Absence detection with configurable timeout
- Documentation in docs/HOME_ASSISTANT.md

CLI Improvements:
- Replace 'web' command with start/stop/restart/status
- Background daemon mode with PID file management
- Foreground mode for debugging (--foreground)

Web UI Enhancements:
- Improved device list styling and layout
- Better floor assignment UI
- Enhanced map visualization

Documentation:
- Add CHANGELOG.md
- Add docs/API.md with full endpoint reference
- Add docs/CHEATSHEET.md for quick reference
- Update project documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 03:31:02 +01:00

278 lines
5.7 KiB
Markdown

# RF Mapper Cheatsheet
Quick reference for RF Mapper commands and configuration.
---
## CLI Commands
| Command | Description |
|---------|-------------|
| `rf-mapper` | Interactive scan mode |
| `rf-mapper scan` | Run scan with defaults |
| `rf-mapper scan -l kitchen` | Scan with location label |
| `rf-mapper scan --no-bt` | WiFi only |
| `rf-mapper scan --no-wifi` | Bluetooth only |
| `rf-mapper visualize` | ASCII radar display |
| `rf-mapper analyze` | RF environment analysis |
| `rf-mapper list` | List saved scans |
| `rf-mapper start` | Start web server (background) |
| `rf-mapper stop` | Stop web server |
| `rf-mapper restart` | Restart web server |
| `rf-mapper status` | Check if server is running |
| `rf-mapper config` | Show configuration |
---
## Web Server
```bash
# Lifecycle
rf-mapper start # Start (background daemon)
rf-mapper stop # Stop
rf-mapper restart # Restart
rf-mapper status # Check if running
# Start options
rf-mapper start -f # Foreground mode
rf-mapper start -H 127.0.0.1 # Bind to localhost only
rf-mapper start -p 8080 # Custom port
rf-mapper start --debug # Debug mode (requires -f)
rf-mapper start --profile-requests # Per-request profiling
rf-mapper start --log-requests # Request logging
```
---
## Configuration Commands
```bash
# Show current config
rf-mapper config
# Set GPS coordinates
rf-mapper config --set-gps 50.8585 4.3978 --save
```
---
## Profiling
```bash
rf-mapper --profile scan # CPU profiling
rf-mapper --profile-memory scan # Memory profiling
rf-mapper --profile --profile-output scan.prof scan
```
---
## Common API Calls
```bash
# Trigger scan
curl -X POST http://localhost:5000/api/scan \
-H "Content-Type: application/json" \
-d '{"location": "office"}'
# Get latest scan
curl http://localhost:5000/api/latest
# Quick BT scan (real-time tracking)
curl -X POST http://localhost:5000/api/scan/bt
# List scans
curl http://localhost:5000/api/scans
# Get auto-scan status
curl http://localhost:5000/api/autoscan
# Start auto-scan
curl -X POST http://localhost:5000/api/autoscan/start \
-H "Content-Type: application/json" \
-d '{"interval_minutes": 5}'
# Stop auto-scan
curl -X POST http://localhost:5000/api/autoscan/stop
# Set device floor
curl -X POST http://localhost:5000/api/device/AA:BB:CC:DD:EE:FF/floor \
-H "Content-Type: application/json" \
-d '{"floor": 2}'
# Get all floor assignments
curl http://localhost:5000/api/device/floors
# Get device history
curl "http://localhost:5000/api/history/devices?type=bluetooth&limit=20"
# Get RSSI history for device
curl http://localhost:5000/api/history/devices/AA:BB:CC:DD:EE:FF/rssi
# Get database stats
curl http://localhost:5000/api/history/stats
```
---
## Config File Locations
Checked in order:
1. `./config.yaml` (project directory)
2. `~/.config/rf-mapper/config.yaml`
3. `/etc/rf-mapper/config.yaml`
---
## Environment Variables
| Variable | Description |
|----------|-------------|
| `RF_MAPPER_LAT` | Override GPS latitude |
| `RF_MAPPER_LON` | Override GPS longitude |
| `RF_MAPPER_HOST` | Override web server host |
| `RF_MAPPER_PORT` | Override web server port |
| `HA_TOKEN` | Home Assistant API token |
| `HA_URL` | Home Assistant URL |
---
## Key Config Options
```yaml
# GPS position
gps:
latitude: 50.8585
longitude: 4.3978
# Web server
web:
host: "0.0.0.0"
port: 5000
debug: false
# Scanner settings
scanner:
wifi_interface: "wlan0"
bt_scan_timeout: 10
path_loss_exponent: 2.5 # 2.0=open, 2.5=indoor, 3.5=walls
auto_identify_bluetooth: true
# Data storage
data:
directory: "data"
max_scans: 100
# Database
database:
enabled: true
filename: "devices.db"
retention_days: 30
auto_cleanup: true
# Building (3D view)
building:
enabled: true
floors: 3
floor_height_m: 3.0
current_floor: 1
```
---
## Data Locations
| Path | Content |
|------|---------|
| `data/` | Scan JSON files |
| `data/devices.db` | SQLite database |
| `data/profiles/` | Request profiles |
| `data/logs/` | Request logs |
---
## Troubleshooting
### Permission denied (WiFi/BT)
```bash
sudo rf-mapper scan
```
### No Bluetooth adapter
```bash
sudo systemctl start bluetooth
sudo hciconfig hci0 up
```
### No RSSI from Bluetooth
The app uses `bleak` library for BLE scanning. Ensure:
- BlueZ service running: `systemctl status bluetooth`
- D-Bus available
- Bluetooth adapter powered on
### Check WiFi interface
```bash
iw dev # List interfaces
sudo iw dev wlan0 scan # Test scan
```
### Database issues
```bash
# Check database
sqlite3 data/devices.db ".tables"
sqlite3 data/devices.db "SELECT COUNT(*) FROM devices"
# Manual cleanup
curl -X POST http://localhost:5000/api/history/cleanup \
-H "Content-Type: application/json" \
-d '{"retention_days": 7}'
```
---
## Web Interface Views
| View | Description | Best For |
|------|-------------|----------|
| Radar | Distance rings | Quick overview |
| World Map | Leaflet 2D | Geographic context |
| 3D Map | MapLibre GL | Building/floor view |
### Keyboard Shortcuts (Web UI)
| Key | Action |
|-----|--------|
| `R` | Refresh scan |
| `1` | Radar view |
| `2` | World map view |
| `3` | 3D map view |
---
## Signal Quality Reference
| RSSI Range | Quality | Est. Distance |
|------------|---------|---------------|
| -30 to -50 | Excellent | < 2m |
| -50 to -60 | Good | 2-5m |
| -60 to -70 | Fair | 5-10m |
| -70 to -80 | Weak | 10-20m |
| < -80 | Poor | > 20m |
---
## Path Loss Exponent Guide
| Value | Environment |
|-------|-------------|
| 2.0 | Free space (outdoor) |
| 2.5 | Light indoor (open plan) |
| 3.0 | Normal indoor |
| 3.5 | Dense indoor (walls) |
| 4.0+ | Heavy obstructions |