idryer-core — документация библиотеки¶
idryer-core — C++ библиотека (Arduino/PlatformIO) для ESP32-устройств iDryer. Управляет WiFi, MQTT, облачной стейт-машиной и маршрутизацией команд. Продукт реализует только специфичное для него поведение.
Это документация библиотеки, а не конкретного продукта.
Документация продуктов находится в docs/ru/.
Быстрый старт¶
Три вещи, которые вы делаете сами:
- Реализуете
IProfile— пять методов (config, info, loop). - Собираете
main.cpp— статические объекты, передаёте зависимости через конструкторы. - Регистрируете
handleCommand— один обработчик для MQTT и опционально для локального WS.
Три вещи, которые делает библиотека:
- Управляет WiFi → provisioning → MQTT-сессией.
- Маршрутизирует входящие команды в ваш
handleCommand(кромеping— он обрабатывается внутри). - Вызывает методы вашего
IProfileв нужные моменты.
Что можно не трогать:
ArduinoWifiManager,ArduinoCredentialStoreи другиеArduino*-классы — используйте как есть, без субклассинга.CloudStateMachine— создайте и передайте вIdryerRuntime, дальше она работает сама.ActionDispatcher— compatibility fallback для invoke/set; для нового продукта обработка команд идёт черезsetCommandHandler(), не черезActionDispatcher.
Практический гайд: 09-add-product/01-add-new-product.md
Рабочие примеры: examples/
Разделы¶
| Раздел | Описание |
|---|---|
| 01-overview/01-what-is-idryer-core | Назначение библиотеки, что она не делает, кто её использует |
| 01-overview/02-module-map | Таблица всех модулей: назначение, обязательность |
| 02-getting-started | Короткий вход для нового разработчика: что подключить, прошить, чего ожидать |
| 05-architecture/01-composition-root | Как продукт собирает стек: порядок создания объектов, паттерн main.cpp |
| 05-architecture/02-library-vs-product-boundary | Что живёт в библиотеке, что — в продукте |
| 05-architecture/03-data-flow | Поток данных в работающем устройстве: входящие команды, исходящие сообщения, связи |
| 06-mqtt/01-mqtt-client | Класс MqttClient: конструктор, подключение, публикация |
| 06-mqtt/02-topics-and-messages | Все MQTT-топики: строки, payload, retained, QoS |
| 04-runtime/01-idryer-runtime | IdryerRuntime: что координирует, какие команды обрабатывает |
| 05-uart/01-uart-layer | UART-бридж для двухпроцессорных устройств |
| 06-integrations/01-integrations-overview | Bambu, Home Assistant, Moonraker: подключение, ограничения |
| 07-platform-arduino/01-arduino-platform | Arduino-реализации интерфейсов устройства |
| 08-profiles-and-products/01-profiles-model | Интерфейс IProfile, колбэки, пример LedStripProfile |
| 09-contracts/01-mqtt-contract | Файл mqtt_contract.yaml: назначение и правила изменения |
| 10-how-to-add-product/01-add-new-product | Чеклист сборки нового продукта на базе idryer-core |
| 10-troubleshooting | Типовые проблемы: WiFi, provisioning, MQTT, команды, LocalAccess |
| 04-patterns/01-add-sensor | Как добавить sensor (источник данных) и его публикацию |
| 04-patterns/02-add-peripheral | Как добавить периферия и приём команд |
| 04-patterns/03-add-transport | Как добавить параллельный transport (BLE, HTTP, custom) |
| 04-patterns/04-data-flow | Прикладные рецепты передачи данных между sensors / peripherals / profile / publishers |