fix: pump ID расхождение устранено, протокол актуализирован
Прошивка исправлена (aa5db288): валидация 0-7 → 1-8. Документация обновлена — убраны предупреждения, добавлены ссылки на фикс.
This commit is contained in:
+6
-12
@@ -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`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user