idryer-core para dispositivos iDryer y módulos DIY¶
idryer-core es útil cuando un secador de filamento DIY, una cámara calefactada, un sistema de iluminación u otro módulo de impresora 3D debe convertirse en un dispositivo iDryer gestionado. La biblioteca se encarga de Wi-Fi, MQTT, comandos, telemetría y comunicación con el portal, mientras que el código del producto describe el comportamiento del dispositivo concreto.
idryer-core es una biblioteca C++ (Arduino/PlatformIO) para dispositivos iDryer basados en ESP32. Gestiona WiFi, MQTT, la máquina de estados en la nube y el enrutamiento de comandos. El producto implementa solo el comportamiento específico del dispositivo.
Esta es la documentación de la biblioteca, no de un producto específico.
La documentación de producto está en docs/ru/.
Inicio rápido¶
Tres cosas que implementas:
- Implementar
IProfile— cinco métodos (configuración, información, loop). - Ensamblar
main.cpp— objetos estáticos y dependencias pasadas por constructores. - Registrar
handleCommand— un único manejador para MQTT y, opcionalmente, WS local.
Tres cosas que hace la biblioteca:
- Gestiona WiFi → provisioning → sesión MQTT.
- Enruta los comandos entrantes a tu
handleCommand(pingse procesa internamente). - Llama a tus métodos de
IProfileen los momentos correctos.
Lo que puedes dejar sin tocar:
ArduinoWifiManager,ArduinoCredentialStorey otras clasesArduino*— úsalas tal cual, sin subclases.CloudStateMachine— créala y pásala aIdryerRuntime; a partir de ahí se gestiona sola.ActionDispatcher— fallback de compatibilidad para invoke/set; para un producto nuevo, el manejo de comandos pasa porsetCommandHandler(), no porActionDispatcher.
Guía práctica: 09-add-product/01-add-new-product.md
Ejemplos funcionales: examples/
Secciones¶
| Sección | Descripción |
|---|---|
| 01-overview/01-what-is-idryer-core | Propósito de la biblioteca, qué no hace y quién la usa |
| 01-overview/02-module-map | Tabla de todos los módulos: propósito y opcionalidad |
| 02-getting-started | Entrada breve para un desarrollador nuevo: qué conectar, flashear y esperar |
| 05-architecture/01-composition-root | Cómo el producto ensambla el stack: orden de creación de objetos y patrón de main.cpp |
| 05-architecture/02-library-vs-product-boundary | Qué vive en la biblioteca y qué vive en el producto |
| 05-architecture/03-data-flow | Flujo de datos en un dispositivo en ejecución: comandos entrantes, mensajes salientes, conexiones |
| 06-mqtt/01-mqtt-client | Clase MqttClient: constructor, conexión y publicación |
| 06-mqtt/02-topics-and-messages | Todos los topics MQTT: cadenas, payloads, retained, QoS |
| 04-runtime/01-idryer-runtime | IdryerRuntime: qué coordina y qué comandos maneja |
| 05-uart/01-uart-layer | Puente UART para dispositivos con dos MCU |
| 06-integrations/01-integrations-overview | Bambu, Home Assistant, Moonraker: configuración y limitaciones |
| 07-platform-arduino/01-arduino-platform | Implementaciones Arduino de las interfaces de dispositivo |
| 08-profiles-and-products/01-profiles-model | Interfaz IProfile, callbacks, ejemplo LedStripProfile |
| 09-contracts/01-mqtt-contract | mqtt_contract.yaml: propósito y reglas de modificación |
| 10-how-to-add-product/01-add-new-product | Checklist para crear un producto nuevo sobre idryer-core |
| 10-troubleshooting | Problemas comunes: WiFi, provisioning, MQTT, comandos, LocalAccess |
| 04-patterns/01-add-sensor | Cómo añadir un sensor y publicar sus lecturas |
| 04-patterns/02-add-peripheral | Cómo añadir un periférico y recibir comandos |
| 04-patterns/03-add-transport | Cómo añadir un transporte paralelo (BLE, HTTP, personalizado) |
| 04-patterns/04-data-flow | Recetas aplicadas para pasar datos entre sensores, periféricos, perfil y publicadores |