idryer-core — documentação da biblioteca¶
idryer-core — biblioteca C++ (Arduino/PlatformIO) para dispositivos iDryer baseados em ESP32. Gerencia WiFi, MQTT, a máquina de estados da nuvem e roteamento de comandos. O produto implementa apenas comportamento específico do dispositivo.
Esta é a documentação da biblioteca, não de nenhum produto específico.
A documentação do produto está localizada em docs/ru/.
Início rápido¶
Três coisas que você implementa:
- Implemente
IProfile— cinco métodos (config, info, loop). - Monte
main.cpp— objetos estáticos, passe dependências através de construtores. - Registre
handleCommand— um manipulador único para MQTT e opcionalmente para WS local.
Três coisas que a biblioteca faz:
- Gerencia WiFi → provisionamento → sessão MQTT.
- Encaminha comandos recebidos para seu
handleCommand(excetoping, que é manipulado internamente). - Chama seus métodos
IProfilenos momentos certos.
O que você pode deixar intocado:
ArduinoWifiManager,ArduinoCredentialStoree outras classesArduino*— use como estão, sem subclasses.CloudStateMachine— crie-a e passe-a paraIdryerRuntime; ela se gerencia.ActionDispatcher— fallback de compatibilidade para invoke/set; para um novo produto, o tratamento de comandos passa porsetCommandHandler(), não porActionDispatcher.
Guia prático: 09-add-product/01-add-new-product.md
Exemplos funcionais: examples/
Seções¶
| Seção | Descrição |
|---|---|
| 01-overview/01-what-is-idryer-core | Propósito da biblioteca, o que não faz, quem usa |
| 01-overview/02-module-map | Tabela de todos os módulos: propósito, opcionalidade |
| 02-getting-started | Introdução rápida para um novo programador: o que conectar, programar e esperar |
| 05-architecture/01-composition-root | Como o produto monta a pilha: ordem de criação de objetos, padrão main.cpp |
| 05-architecture/02-library-vs-product-boundary | O que fica na biblioteca, o que fica no produto |
| 05-architecture/03-data-flow | Fluxo de dados em um dispositivo em execução: comandos recebidos, mensagens enviadas, conexões |
| 06-mqtt/01-mqtt-client | Classe MqttClient: construtor, conexão, publicação |
| 06-mqtt/02-topics-and-messages | Todos os tópicos MQTT: sequências, cargas úteis, retidas, QoS |
| 04-runtime/01-idryer-runtime | IdryerRuntime: o que coordena, quais comandos manipula |
| 05-uart/01-uart-layer | Ponte UART para dispositivos com dois MCU |
| 06-integrations/01-integrations-overview | Bambu, Home Assistant, Moonraker: configuração, limitações |
| 07-platform-arduino/01-arduino-platform | Implementações Arduino de interfaces de dispositivos |
| 08-profiles-and-products/01-profiles-model | Interface IProfile, retornos de chamada, exemplo LedStripProfile |
| 09-contracts/01-mqtt-contract | mqtt_contract.yaml: propósito e regras de modificação |
| 10-how-to-add-product/01-add-new-product | Lista de verificação para construir um novo produto em cima de idryer-core |
| 10-troubleshooting | Problemas comuns: WiFi, provisionamento, MQTT, comandos, LocalAccess |
| 04-patterns/01-add-sensor | Como adicionar um sensor (fonte de dados) e publicar suas leituras |
| 04-patterns/02-add-peripheral | Como adicionar uma periférica e receber comandos |
| 04-patterns/03-add-transport | Como adicionar um transporte paralelo (BLE, HTTP, personalizado) |
| 04-patterns/04-data-flow | Receitas aplicadas para passar dados entre sensores / periféricos / perfil / editoras |