From cd7497b014d2175998dfd3890db7aefa77c48350 Mon Sep 17 00:00:00 2001 From: progl Date: Tue, 5 May 2026 13:15:19 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20pump=20ID=20=D1=80=D0=B0=D1=81=D1=85?= =?UTF-8?q?=D0=BE=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=BE,=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=BE=D0=BB=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прошивка исправлена (aa5db288): валидация 0-7 → 1-8. Документация обновлена — убраны предупреждения, добавлены ссылки на фикс. --- DEVICE_BEHAVIOR.md | 18 ++++++------------ MQTT.md | 6 +++--- 2 files changed, 9 insertions(+), 15 deletions(-) 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`)