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`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user