feat: Add HELP, CONFIG, FACTORY commands; sync project docs
Firmware: HELP lists all 27 commands with syntax, CONFIG dumps running config as key=value, FACTORY erases NVS and reboots. Docs: update PROJECT, ROADMAP, TASKS, TODO to reflect v1.10 completion, v1.11 unreleased work, and esp32-web v0.1.5 state. Remove stale v2.0 Flask phase-by-phase plan (now tracked in ~/git/esp32-web/). Clean deferred items from completed milestones.
This commit is contained in:
81
ROADMAP.md
81
ROADMAP.md
@@ -98,10 +98,6 @@ Note: Promiscuous mode (probe/deauth capture) disabled on original ESP32 — bre
|
||||
- [x] Zone tracking with EMA RSSI (`esp-ctl osint zones`, `device_zones` table)
|
||||
- [x] Per-sensor breakdown in MAC profile (`esp-ctl osint mac`)
|
||||
- [x] POWERTEST command (7-phase power profiling with EVENT markers)
|
||||
- [ ] Test OTA rollback (flash bad firmware, verify auto-revert)
|
||||
- [ ] Create HA webhook automations for deauth_flood / unknown_probe
|
||||
- [ ] Document esp-crab dual-antenna capabilities
|
||||
- [ ] Document esp-radar console features
|
||||
|
||||
## v1.5 - Event Handling & NVS Persistence [DONE]
|
||||
- [x] EVENT packet parsing in watch daemon (motion, wifi_reconnect, powertest)
|
||||
@@ -116,9 +112,6 @@ Note: Promiscuous mode (probe/deauth capture) disabled on original ESP32 — bre
|
||||
- [x] POWERSAVE command (WiFi modem sleep toggle, NVS persisted, default off)
|
||||
- [x] POWERTEST save/restore of powersave state
|
||||
- [x] sdkconfig: CONFIG_PM_ENABLE, CONFIG_FREERTOS_USE_TICKLESS_IDLE
|
||||
- [ ] Power consumption measurements using POWERTEST + external meter
|
||||
- [ ] Deep sleep mode with wake-on-CSI-motion
|
||||
- [ ] Battery-optimized duty cycling
|
||||
|
||||
## v1.7 - Baseline Calibration & Presence Detection [DONE]
|
||||
- [x] CALIBRATE command (capture N seconds of CSI with room empty, average per-subcarrier amplitudes, store in NVS)
|
||||
@@ -130,7 +123,6 @@ Note: Promiscuous mode (probe/deauth capture) disabled on original ESP32 — bre
|
||||
- [x] Calibration done event (`EVENT,<hostname>,calibrate=done packets=<n> nsub=<n>`)
|
||||
- [x] presence= and pr_score= fields in STATUS reply
|
||||
- [x] NVS persistence for baseline (bl_amps blob, bl_nsub) and presence config
|
||||
- [ ] Tune presence threshold per room with real-world testing
|
||||
|
||||
## v1.8 - HTTPS OTA Support [DONE]
|
||||
- [x] Support HTTPS URLs for OTA updates (esp_https_ota)
|
||||
@@ -144,62 +136,33 @@ Note: Promiscuous mode (probe/deauth capture) disabled on original ESP32 — bre
|
||||
- [x] BLE fingerprinting: company_id, tx_power, adv_flags in BLE_DATA
|
||||
- [x] Historical presence sessions support
|
||||
|
||||
## v2.0 - Flask API Backend (Purple Team)
|
||||
## v1.10 - LED Quiet Mode & CI Hardening [DONE]
|
||||
- [x] LED quiet mode (off normally, solid on motion/presence, blinks on OTA)
|
||||
- [x] Default LED to quiet mode
|
||||
- [x] Build metadata in STATUS (date, time, IDF version, chip info)
|
||||
- [x] CI security checks (secrets scan, config validation, size check)
|
||||
- [x] Size optimization (`-Os`, saves ~75KB vs -O2)
|
||||
- [x] CSI ON/OFF toggle command (NVS persisted)
|
||||
|
||||
REST API backend for OPSEC/OSINT/Purple team operations using ESP32 sensor fleet.
|
||||
API-first design; frontend dashboard deferred to v2.1+.
|
||||
## v1.11 - Diagnostics & Usability (unreleased)
|
||||
- [x] HELP command (lists all commands with syntax)
|
||||
- [x] CONFIG command (dump all running config key=value)
|
||||
- [x] FACTORY command (erase NVS config + reboot)
|
||||
- [ ] Tag and OTA deploy to fleet
|
||||
|
||||
- **HTTP API:** TCP 5500
|
||||
- **UDP Collector:** UDP 5500 (sensor data)
|
||||
- **Sensor Commands:** UDP 5501 (outbound)
|
||||
## v1.12 - Firmware Polish
|
||||
- [ ] PING command (echo reply for connectivity tests)
|
||||
- [ ] LOG command (runtime log level control)
|
||||
- [ ] Multi-target (send data to 2+ UDP destinations)
|
||||
- [ ] Temp/heap alert thresholds (EVENT on overheat or low memory)
|
||||
- [ ] OTA rollback validation test
|
||||
|
||||
### Phase 1: Project Setup
|
||||
- [ ] Project scaffold (`~/git/esp32-web/`) with Flask + SQLAlchemy + Blueprints
|
||||
- [ ] Database schema: sensors, devices, sightings, alerts, events, probes
|
||||
- [ ] Containerfile for podman deployment
|
||||
- [ ] Makefile (build, run, dev, stop, logs)
|
||||
- [ ] pytest setup with fixtures
|
||||
## Web Backend (`~/git/esp32-web/`)
|
||||
|
||||
### Phase 2: UDP Collector
|
||||
- [ ] Async UDP listener daemon (threading or asyncio)
|
||||
- [ ] Parse all sensor streams: CSI_DATA, BLE_DATA, PROBE_DATA, ALERT_DATA, EVENT
|
||||
- [ ] Store to database with timestamps
|
||||
- [ ] Sensor heartbeat tracking (online/offline status)
|
||||
- [ ] Run as background thread alongside Flask
|
||||
Tracked in its own repository. See `~/git/esp32-web/ROADMAP.md`.
|
||||
|
||||
### Phase 3: Core API Endpoints
|
||||
- [ ] `GET /api/v1/sensors` — list sensors with status, uptime, last_seen
|
||||
- [ ] `GET /api/v1/sensors/<id>/status` — detailed sensor info
|
||||
- [ ] `POST /api/v1/sensors/<id>/command` — send UDP command (proxy)
|
||||
- [ ] `GET /api/v1/devices` — list all discovered devices (BLE + WiFi)
|
||||
- [ ] `GET /api/v1/devices/<mac>` — device profile (sightings, zones, vendor)
|
||||
- [ ] `GET /api/v1/alerts` — alert feed with pagination + filters
|
||||
- [ ] `GET /api/v1/probes` — probe requests with SSID enumeration
|
||||
- [ ] `GET /api/v1/events` — sensor events (motion, presence, calibration)
|
||||
|
||||
### Phase 4: OSINT Features
|
||||
- [ ] MAC vendor lookup (IEEE OUI database)
|
||||
- [ ] BLE company_id to manufacturer mapping
|
||||
- [ ] `GET /api/v1/devices/<mac>/profile` — enriched device intel
|
||||
- [ ] `GET /api/v1/stats` — aggregate statistics (device counts, alert counts)
|
||||
- [ ] Export endpoints: `GET /api/v1/export/devices.csv`, `.json`
|
||||
|
||||
### Phase 5: Fleet Management API
|
||||
- [ ] `GET /api/v1/sensors/<id>/config` — current sensor configuration
|
||||
- [ ] `PUT /api/v1/sensors/<id>/config` — update sensor settings
|
||||
- [ ] `POST /api/v1/sensors/<id>/ota` — trigger OTA update
|
||||
- [ ] `POST /api/v1/sensors/<id>/calibrate` — trigger baseline calibration
|
||||
- [ ] `GET /api/v1/sensors/<id>/history` — historical metrics
|
||||
|
||||
## v2.1 - Web Dashboard (Future)
|
||||
|
||||
Frontend dashboard using htmx + Pico CSS, built on top of v2.0 API.
|
||||
|
||||
- [ ] Live sensor status dashboard
|
||||
- [ ] Device inventory table with search/filter
|
||||
- [ ] Alert timeline with severity badges
|
||||
- [ ] Presence heatmap per zone
|
||||
- [ ] Sensor fleet management UI
|
||||
Current: v0.1.5 (zones, intelligence dashboard, fleet management, 77 tests).
|
||||
Next: v0.1.6 (auth, rate limiting, production deployment).
|
||||
|
||||
## v3.0 - Hardware Upgrade (ESP32-S3/C6)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user