Add accelerometer deadzone via UART and ESP-NOW.
Filter BMA456 logs by configurable LSB threshold; master can set deadzone for local sensor or slaves using ACCEL_DEADZONE (UART) and ESP-NOW broadcast until unicast delivery is restored. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -73,6 +73,7 @@ Schema: `proto/esp_now_messages.proto`. Encode/decode: `esp_now_proto.c`. The ES
|
||||
| `ESPNOW_DISCOVER` | Master → broadcast `FF:FF:FF:FF:FF:FF` | `EspNowDiscover` (`network`) |
|
||||
| `ESPNOW_SLAVE_INFO` | Slave → master | `EspNowSlavePresence` |
|
||||
| `ESPNOW_HEARTBEAT` | Slave → master | `EspNowSlavePresence` (same fields) |
|
||||
| `ESPNOW_SET_ACCEL_DEADZONE` | Master → slave | `EspNowAccelDeadzone` (`deadzone` LSB) |
|
||||
|
||||
`EspNowSlavePresence`: `network`, `mac` (6 bytes), `version`, `slave_id`, `available`, `used`.
|
||||
|
||||
@@ -146,6 +147,7 @@ Host and master speak nanopb-encoded `UartMessage` inside UART frames (byte 0 =
|
||||
| 3 | `VERSION` | Implemented (`cmd_version.c`) |
|
||||
| 4 | `CLIENT_INFO` | Implemented (`cmd_client_info.c`) — slave list from registry |
|
||||
| 5 | `CLIENT_INPUT` | Planned |
|
||||
| 6 | `ACCEL_DEADZONE` | Implemented (`cmd_accel_deadzone.c`) — get/set accel filter LSB |
|
||||
| 16–20 | OTA / ESP-NOW OTA | Planned |
|
||||
|
||||
Regenerate C code:
|
||||
@@ -173,6 +175,21 @@ Build embeds `POWERPOD_GIT_HASH` via `git rev-parse` in `main/CMakeLists.txt`.
|
||||
|
||||
Encoding: `uart_send_uart_message()` in `uart_proto.c`.
|
||||
|
||||
### ACCEL_DEADZONE command
|
||||
|
||||
Filters BMA456 logs: a new accel line is emitted only when any axis changes by more than `deadzone` raw LSB since the last reported sample (default **100**).
|
||||
|
||||
**Request:** framed `06` + nanopb `UartMessage` with `accel_deadzone_request`:
|
||||
|
||||
| Field | Meaning |
|
||||
|-------|---------|
|
||||
| `write` | `false` = read, `true` = write |
|
||||
| `deadzone` | Threshold in LSB (write) |
|
||||
| `client_id` | `0` = local sensor on this node; `>0` = slave id (master) |
|
||||
| `all_clients` | Master: ESP-NOW push to every registered slave |
|
||||
|
||||
**Response:** `accel_deadzone_response` with applied `deadzone`, `success`, and `slaves_updated` (ESP-NOW count).
|
||||
|
||||
### CLIENT_INFO command
|
||||
|
||||
**Request:** framed payload `04` only (`MessageType.CLIENT_INFO`).
|
||||
|
||||
Reference in New Issue
Block a user