Contrato MQTT¶
O ficheiro contracts/mqtt_contract.yaml é a fonte da verdade para a interface MQTT do idryer-core.
Âmbito¶
O contrato descreve apenas o que MqttClient do idryer-core implementa:
- tópicos que a biblioteca pode publicar
- comandos que a biblioteca aceita e encaminha
A interface completa da plataforma (todos os comandos de backend para todos os tipos de dispositivos, incluindo drying, storage, profile, rfid, etc.) está em contracts/portal_backend_status.md — esta é a [Referência da Plataforma].
Tópicos de dispositivo (dispositivo → backend)¶
| Sufixo | Retido | Estado |
|---|---|---|
info |
sim | implementado |
telemetry |
não | implementado |
status |
sim | implementado |
config |
não | implementado |
config/delta |
não | implementado |
events |
não | implementado |
integrations/status |
sim | implementado |
offline (LWT) |
não | implementado |
Comandos (backend → dispositivo)¶
| Sufixo | Manipulador | Estado |
|---|---|---|
commands/ping |
IdryerRuntime (incorporado) |
implementado |
commands/invoke |
CommandHandler do produto (rec.); fallback → ActionDispatcher |
implementado |
commands/set |
CommandHandler do produto (rec.); fallback → ActionDispatcher |
implementado |
commands/link_integration |
LinkIntegrationsManager via CommandHandler |
implementado |
commands/bambu_apply |
LinkIntegrationsManager via CommandHandler |
implementado |
| todos os outros | CommandHandler do produto |
definido pelo produto |
Regra de mudança¶
Qualquer alteração no protocolo MQTT em idryer-core deve simultaneamente tocar:
contracts/mqtt_contract.yaml- Código da biblioteca (
mqtt_client.h/.cpp) - Código de Portal / backend
Atualize o contrato primeiro, depois o código.
Compatibilidade¶
- Adicionar novos campos opcionais a um payload é seguro.
- Renomear campos existentes requer atualizações simultâneas de firmware, portal e contrato.
- Os payloads
infoeconfigsão definidos pelo produto —idryer-corenão os valida.