Реестр расхождений и доработок¶
Один список того, где контракт, документация, 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 (репозиторий продукта)¶
Код не в этом пакете библиотеки; пути ниже — как в типичном дереве 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): кадр UARTLog(0x60), структураLogPayload— см. 02-binary-format.md. В MQTT попадают только если прошивка продукта вызываетpublishEvent(в Link это сделано вhandleLog). - Счётчик
errorsSinceBootв Heartbeat — отдельный механизм: число в периодическом кадре, семантика у отправителя. В референсном Link исходящее поле не эквивалентно «ошибкам приложения MCU» и не дублируется в MQTT. Путаница возникает, если читать одно поле как универсальный индикатор «всех ошибок устройства».
См. также¶
- README.md — навигация по разделам документации.
- 02-uart/03-integration-guide.md — минимальный контракт интеграции.
- all-in-one-protocol-NOTES.md — сверка CSV с Markdown и кодом.