diff --git a/DEVICE_BEHAVIOR.md b/DEVICE_BEHAVIOR.md index e939c76..c7950f1 100644 --- a/DEVICE_BEHAVIOR.md +++ b/DEVICE_BEHAVIOR.md @@ -68,17 +68,17 @@ stateDiagram-v2 - MCP23017 → setPin(pin, state) ### `set/pump/{id}/run` -- Проверить id ∈ [0, 7] ⚠️ (см. расхождение ниже), time ∈ [1, 60000] +- Проверить id ∈ [1, 8], time ∈ [1, 60000] - Включить помпу → таймер → выключить ### `set/pump/{id}/dispense` -- Проверить id ∈ [0, 7] ⚠️, grams ∈ [0.1, 1000] +- Проверить id ∈ [1, 8], grams ∈ [0.1, 1000] - Рассчитать время через ml/sec калибровку помпы - Включить → таймер → выключить - Обновить счётчик `total_dispensed` ### `cmd/pump/{id}/stop` -- Проверить id ∈ [0, 7] ⚠️ +- Проверить id ∈ [1, 8] - Немедленно выключить помпу, сбросить таймер ### `set/preferences/all` @@ -95,16 +95,10 @@ stateDiagram-v2 --- -## ⚠️ Pump ID расхождение +## Pump ID: единый стандарт 1–8 -| Сторона | Диапазон | Код | -|---------|----------|-----| -| Сервер (API serializer) | 1–8 | `min_value=1, max_value=8` | -| Прошивка (валидация) | 0–7 | `pumpId < 0 \|\| pumpId > 7` | -| Прошивка (итерация mixer) | 1–pumpCount | `for pumpId = 1...pumpCount` | - -**Следствие**: сервер отправляет `set/pump/8/run` → прошивка валидирует `8 > 7` → команда игнорируется. -**Рекомендация**: привести к единому стандарту 1-based (1–8). Исправить валидацию в `mqtt_callbacks.cpp` строки 457, 482, 507 на `pumpId < 1 || pumpId > 8`. +Сервер и прошивка используют 1-based индексацию (1–8). +Исправлено в прошивке: commit `aa5db288` — валидация `0-7` → `1-8` в `mqtt_callbacks.cpp`. --- diff --git a/MQTT.md b/MQTT.md index f4194ec..ea6b441 100644 --- a/MQTT.md +++ b/MQTT.md @@ -172,10 +172,10 @@ Payload: строка `"connected"` — устройство подключил | Топик | Payload | Ограничения | |-------|---------|------------| -| `{UID}/set/pump/{id}/run` | `"5000"` (мс) | id: 1–7 ⚠️, время: 1–60000 мс | -| `{UID}/set/pump/{id}/dispense` | `"50.5"` (граммы) | id: 1–7 ⚠️, граммы: 0.1–1000 | +| `{UID}/set/pump/{id}/run` | `"5000"` (мс) | id: 1–8, время: 1–60000 мс | +| `{UID}/set/pump/{id}/dispense` | `"50.5"` (граммы) | id: 1–8, граммы: 0.1–1000 | -> ⚠️ **Pump ID расхождение**: сервер (API) принимает id 1–8, прошивка валидирует `pumpId < 0 || pumpId > 7` — id=8 будет отклонён прошивкой. Нужно либо выровнять API на 1–7, либо исправить прошивку на 0–8. Текущее рабочее значение: **1–7**. +> ✅ Pump ID: единый стандарт 1–8 (1-based). Исправлено в прошивке commit aa5db288. ### Настройки (`set/preferences/all`)