Commit Graph

22 Commits

Author SHA1 Message Date
user
00b3372a6d docs: Update project docs with ALERT command and v1.11 completion 2026-02-14 17:42:02 +01:00
user
5d37bde414 docs: Mark OTA rollback test passed on amber-maple 2026-02-14 17:12:59 +01:00
user
09dd40df91 docs: Mark v1.11.0 deployed to fleet 2026-02-14 15:46:37 +01:00
user
3f9c0b935e docs: Update TASKS with PING, LOG, RSSI RESET commands 2026-02-14 14:31:57 +01:00
user
468a97713c 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.
2026-02-14 14:26:01 +01:00
user
f87ddec742 docs: Add v2.0 Flask API backend roadmap
Plan for REST API backend (purple team/OPSEC/OSINT):
- Phase 1: Project scaffold, SQLAlchemy models, podman
- Phase 2: UDP collector for sensor data streams
- Phase 3: Core API endpoints (sensors, devices, alerts, probes, events)
- Phase 4: OSINT features (OUI lookup, BLE company ID mapping)
- Phase 5: Fleet management API

Port allocation:
- TCP 5500: HTTP REST API
- UDP 5500: Sensor data collector
- UDP 5501: Sensor commands (outbound)

Also documents completed v1.8 (HTTPS OTA) and v1.9 (multi-channel
scanning, BLE fingerprinting) milestones.
2026-02-05 20:41:24 +01:00
user
a1970639b9 docs: Mark firmware security audit done in TASKS.md 2026-02-05 11:32:54 +01:00
user
6f7490cd34 docs: Mark Pi-side presence event handling done in TASKS.md 2026-02-05 10:20:50 +01:00
user
528e34cb25 feat: Add baseline calibration & presence detection (v1.7)
CALIBRATE command captures per-subcarrier CSI amplitudes over a timed
window and stores the averaged baseline in NVS. PRESENCE command enables
real-time scoring via normalized Euclidean distance against the baseline,
with rolling window averaging and 10s holdoff on state transitions.

New commands: CALIBRATE [3-60|STATUS|CLEAR], PRESENCE [ON|OFF|THRESHOLD]
New NVS keys: bl_amps (blob), bl_nsub, presence, pr_thresh
New STATUS fields: presence=, pr_score=
New events: calibrate=done, presence=0|1
2026-02-04 23:04:19 +01:00
user
738c759573 docs: Update TASKS.md for v1.6 completion 2026-02-04 22:36:59 +01:00
user
2586234473 feat: Add HMAC command auth, deauth flood detection, sign all tools
Firmware:
- HMAC-SHA256 command authentication (AUTH command, NVS persisted)
- Deauth flood detection with ring buffer and aggregate ALERT_DATA
- FLOODTHRESH command (count + window, NVS persisted)
- New STATUS fields: auth=on/off, flood_thresh=5/10
- mbedtls dependency in CMakeLists.txt, rx_buf increased to 192

Tools:
- esp-cmd/esp-fleet/esp-ota import sign_command from esp_ctl.auth
- Commands auto-signed when ESP_CMD_SECRET env var is set

Docs:
- CHEATSHEET: AUTH, FLOODTHRESH, HMAC auth, OUI, watch, osint sections
- TASKS: v1.3 completed section with all new features
2026-02-04 21:07:00 +01:00
user
7ca58fee72 docs: Add STATUS field reference, PROFILE section, update completed items 2026-02-04 20:16:16 +01:00
user
70f37ad6dc docs: Update TASKS and CHEATSHEET for new STATUS fields, SCANRATE/PROBERATE
Add csi_count, uptime_s, WiFi reconnect, SCANRATE, PROBERATE to completed
items. Document ESP32 promiscuous mode limitation (breaks CSI).
2026-02-04 19:58:36 +01:00
user
a69fe8d696 docs: Update TASKS, TODO, CHEATSHEET for probe capture and mDNS discovery 2026-02-04 19:11:36 +01:00
user
59b8001047 docs: Update ROADMAP, TASKS, TODO — mark v1.1 items done
Check off sensor ID, deauth detection, chip temperature, BLE alerting,
dwell time, timestamped logging. Advance TASKS sprint to v1.1. Clean
completed items from TODO.
2026-02-04 18:30:19 +01:00
user
c922e05266 feat: Add v0.4 adaptive sampling — wander detection, auto rate control
On-device CSI wander calculation (coefficient of variation over 50-packet
window). Rate drops to 10 Hz when idle, jumps to 100 Hz on motion with
3s holdoff. EVENT notifications sent to Pi on rate changes. New commands:
ADAPTIVE ON/OFF, THRESHOLD. RATE command disables adaptive mode.
All settings NVS-persisted.
2026-02-04 16:34:19 +01:00
user
2f90a099b7 docs: Finalize v0.3, add OTA section to USAGE.md 2026-02-04 16:26:49 +01:00
user
d65ac208b9 feat: Add v0.3 OTA updates — dual partition, esp-ota tool, rollback
Dual OTA partition table (ota_0/ota_1, 1920 KB each) on 4MB flash.
Firmware gains OTA command, LED_OTA double-blink, version in STATUS,
and automatic rollback validation. Pi-side esp-ota tool serves firmware
via HTTP and orchestrates the update flow. esp-fleet gains ota subcommand.
2026-02-04 16:19:09 +01:00
user
18933ea778 feat: Add v0.2 remote management — UDP commands, LED, NVS persistence
Firmware (app_main.c):
- UDP command listener on port 5501 (configurable via Kconfig)
- Commands: REBOOT, IDENTIFY, STATUS, RATE, POWER
- LED status indicator on GPIO2 (off/slow/fast blink/solid)
- NVS persistence for send_rate and tx_power settings
- Refactored ping to support stop/restart for dynamic rate changes
- TX power control via esp_wifi_set_max_tx_power()

Pi-side tooling:
- tools/esp-cmd: standalone Python3 UDP client for device management

Tested on amber-maple (ESP32 v3.1) with ESP-IDF v5.5.2.
2026-02-04 15:36:14 +01:00
user
2d52ac6026 chore: Downgrade ESP-IDF from v6.1.0 to v5.5.2
Matches the version deployed on ESP32 sensors. Removes v6.1
workaround, updates all docs to reflect v5.5.2, regenerates
sdkconfig for the correct IDF version.
2026-02-04 15:02:54 +01:00
user
628b84f4f3 docs: Complete v0.1 documentation sprint
- Add build & flash workflow (docs/INSTALL.md)
- Add CSI config reference and firmware comparison (docs/USAGE.md)
- Add quick reference cheatsheet (docs/CHEATSHEET.md)
- Add dependencies.lock to .gitignore (env-specific)
- Update TASKS.md with completed items and build notes
- Verified firmware builds on ESP-IDF v6.1.0 / aarch64
2026-02-04 13:25:26 +01:00
user
76345bc8e7 feat: Add project docs - PROJECT, ROADMAP, TASKS, TODO, .gitignore 2026-02-04 13:00:37 +01:00