idryer-core pour les appareils iDryer et les modules DIY¶
idryer-core est utile lorsqu'un séchoir à filament DIY, une chambre chauffée, un système d'éclairage ou un autre module d'imprimante 3D doit devenir un appareil iDryer géré. La bibliothèque prend en charge le Wi-Fi, MQTT, les commandes, la télémétrie et la communication avec le portail, tandis que le code produit décrit le comportement de l'appareil concret.
idryer-core est une bibliothèque C++ (Arduino/PlatformIO) pour les appareils iDryer basés sur ESP32. Elle gère le WiFi, MQTT, la machine d'état cloud et le routage des commandes. Le produit n'implémente que le comportement propre à l'appareil.
Ceci est la documentation de la bibliothèque, pas celle d'un produit particulier.
La documentation produit se trouve dans docs/ru/.
Démarrage rapide¶
Trois choses que vous implémentez :
- Implémenter
IProfile— cinq méthodes (configuration, information, loop). - Assembler
main.cpp— objets statiques, dépendances passées par constructeurs. - Enregistrer
handleCommand— un gestionnaire unique pour MQTT et éventuellement le WS local.
Trois choses que fait la bibliothèque :
- Gère WiFi → provisioning → session MQTT.
- Route les commandes entrantes vers votre
handleCommand(pingest traité en interne). - Appelle vos méthodes
IProfileaux bons moments.
Ce que vous pouvez laisser intact :
ArduinoWifiManager,ArduinoCredentialStoreet les autres classesArduino*— utilisez-les telles quelles, sans sous-classe.CloudStateMachine— créez-la et passez-la àIdryerRuntime; elle se gère ensuite elle-même.ActionDispatcher— fallback de compatibilité pour invoke/set ; pour un nouveau produit, le traitement des commandes passe parsetCommandHandler(), pas parActionDispatcher.
Guide pratique : 09-add-product/01-add-new-product.md
Exemples fonctionnels : examples/
Sections¶
| Section | Description |
|---|---|
| 01-overview/01-what-is-idryer-core | Objectif de la bibliothèque, ce qu'elle ne fait pas, qui l'utilise |
| 01-overview/02-module-map | Tableau de tous les modules : objectif et caractère optionnel |
| 02-getting-started | Entrée rapide pour un nouveau développeur : quoi câbler, flasher et vérifier |
| 05-architecture/01-composition-root | Comment le produit assemble la pile : ordre de création des objets, modèle main.cpp |
| 05-architecture/02-library-vs-product-boundary | Ce qui appartient à la bibliothèque et ce qui appartient au produit |
| 05-architecture/03-data-flow | Flux de données dans un appareil en cours d'exécution : commandes entrantes, messages sortants, connexions |
| 06-mqtt/01-mqtt-client | Classe MqttClient : constructeur, connexion, publication |
| 06-mqtt/02-topics-and-messages | Tous les topics MQTT : chaînes, payloads, retained, QoS |
| 04-runtime/01-idryer-runtime | IdryerRuntime : ce qu'elle coordonne et les commandes qu'elle traite |
| 05-uart/01-uart-layer | Pont UART pour appareils à deux MCU |
| 06-integrations/01-integrations-overview | Bambu, Home Assistant, Moonraker : configuration et limites |
| 07-platform-arduino/01-arduino-platform | Implémentations Arduino des interfaces d'appareil |
| 08-profiles-and-products/01-profiles-model | Interface IProfile, callbacks, exemple LedStripProfile |
| 09-contracts/01-mqtt-contract | mqtt_contract.yaml : objectif et règles de modification |
| 10-how-to-add-product/01-add-new-product | Checklist pour créer un nouveau produit sur idryer-core |
| 10-troubleshooting | Problèmes courants : WiFi, provisioning, MQTT, commandes, LocalAccess |
| 04-patterns/01-add-sensor | Ajouter un capteur et publier ses mesures |
| 04-patterns/02-add-peripheral | Ajouter un périphérique et recevoir des commandes |
| 04-patterns/03-add-transport | Ajouter un transport parallèle (BLE, HTTP, personnalisé) |
| 04-patterns/04-data-flow | Recettes appliquées pour passer des données entre capteurs, périphériques, profil et publisheurs |