Saltar a contenido

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:

  1. Implementar IProfile — cinco métodos (configuración, información, loop).
  2. Ensamblar main.cpp — objetos estáticos y dependencias pasadas por constructores.
  3. Registrar handleCommand — un único manejador para MQTT y, opcionalmente, WS local.

Tres cosas que hace la biblioteca:

  1. Gestiona WiFi → provisioning → sesión MQTT.
  2. Enruta los comandos entrantes a tu handleCommand (ping se procesa internamente).
  3. Llama a tus métodos de IProfile en los momentos correctos.

Lo que puedes dejar sin tocar:

  • ArduinoWifiManager, ArduinoCredentialStore y otras clases Arduino* — úsalas tal cual, sin subclases.
  • CloudStateMachine — créala y pásala a IdryerRuntime; a partir de ahí se gestiona sola.
  • ActionDispatcher — fallback de compatibilidad para invoke/set; para un producto nuevo, el manejo de comandos pasa por setCommandHandler(), no por ActionDispatcher.

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