Skip to content

Реестр расхождений и доработок

Один список того, где контракт, документация, CSV или референсная прошивка не совпадают, не доведены до конца или требуют явного решения (что считать каноном, что менять в коде). Детальная построчная сверка только CSV — в all-in-one-protocol-NOTES.md.

Источники правды по умолчанию: docs/02-uart/02-binary-format.md, docs/03-mqtt/01-mqtt.md, src/uart/uart_protocol.h.


Библиотека idryer-protocol (src/)

Тема Суть Что сделать
MQTT write_rfid CommandHandler::handleWriteRfid — заглушка, лог «not implemented»; нужны фрагментированные кадры под данные метки. Реализовать цепочку или снять команду из списка «поддерживаемых» в доке до готовности.
UART CommandCode::WriteRfid (0x08) В 02-binary-format.md помечено как не реализовано на стороне стека команд. Согласовать с MCU и дореализовать вместе с MQTT write_rfid.
ConfigPush из MQTT Для больших JSON в set/invoke в лог: «fragmentation not implemented» (command_handler.cpp). Либо ограничить документированный размер payload, либо реализовать фрагментацию как для конфига с MCU.
Кадр Log (0x60) UartBridge::validateLength(Log) допускает payloadLength до 200 B; полный LogPayload в спеке — 164 B. Референс Link отбрасывает короче 164 B. Решить: ужесточить приём в мосте до sizeof(LogPayload) или формализовать «короткие» логи в спеке.
events / MQTT Публикация в топик events не в UartBridge; только logHandler_ / обработчики ошибок. Ожидаемо: продукт вызывает MqttClient::publishEvent; в доке уже описано — при добавлении автоматики в библиотеку обновить реестр.
RfidReadData / RfidWriteData Коды и типы в uart_protocol.h; полная интеграция в мост/облако не описана как завершённая. Закрыть цепочку или явно пометить в 09-features/02-rfid-protocol.md статус «только контракт».

Код не в этом пакете библиотеки; пути ниже — как в типичном дереве idryer-link.

Тема Суть Что сделать
Log → MQTT events Реализовано в IdryerDevice::handleLog при cloud_.isOnline(). Без своего продукта на базе библиотеки повторить нужно вручную. Для Link — ок; для документа «ожидаемое поведение Link» см. 03-mqtt/01-mqtt.md.
Ошибки UART → events handleUartError публикует отдельный JSON (source: UART, …). Отличать от прикладных логов MCU в мониторинге backend.
errorsSinceBoot в Heartbeat В исходящем heartbeat LINK→MCU в поле попадает счётчик сбоев линка на ESP, не обязательно счётчик MCU. Значение из входящего heartbeat MCU не публикуется в MQTT. При необходимости мониторинга счётчика MCU — добавить поле в телеметрию/status/events или зафиксировать отказ в спеке.
Данные RFID read (0x1A) В idryer_topics.h нет суффикса вроде rfid/read; setRfidDataHandler в референсном IdryerDevice может быть не подключён — поток MCU→MQTT для полных данных метки не гарантирован. Проверить актуальное дерево Link; при отсутствии обработчика — зарегистрировать или убрать ожидание из интеграционных гайдов.
ClaimStatus по UART Отправка из колбэков облака, не периодический таймер 2 с (если где-то в CSV/старых заметках ещё фигурирует). Подчистить внешние доки; CSV — см. NOTES.

Документация и CSV

Тема Суть Что сделать
all-in-one-protocol.csv Обзор «в одном листе»; часть строк устарела или упрощена (команды MQTT, поля JSON, интервалы). Перед релизом прогонять all-in-one-protocol-NOTES.md; по возможности генерировать CSV из одного источника.
Примеры JSON в CSV vs 01-mqtt.md Например read_rfid, drying с params, отсутствие строк для storage / find / profile / clear_errors. Выровнять CSV под 03-mqtt/01-mqtt.md или пометить CSV как «не норматив».
RFID «верификация записи» В 09-features/02-rfid-protocol.md указано как не реализовано. План работ или удаление из обещаний пользователю.

Пояснение: логи MCU и счётчик ошибок (пример расхождения смыслов)

  • Прикладные события/ошибки сушилки (уровень severity, текст, source/event): кадр UART Log (0x60), структура LogPayload — см. 02-binary-format.md. В MQTT попадают только если прошивка продукта вызывает publishEvent (в Link это сделано в handleLog).
  • Счётчик errorsSinceBoot в Heartbeat — отдельный механизм: число в периодическом кадре, семантика у отправителя. В референсном Link исходящее поле не эквивалентно «ошибкам приложения MCU» и не дублируется в MQTT. Путаница возникает, если читать одно поле как универсальный индикатор «всех ошибок устройства».

См. также