Command و Execution ACK
مسیر Downlink
Backend routing
→ dn/cmd
→ CommandRouter
→ GatewayConfigResolver
→ GatewayDriver
→ NativeBusExecutor
→ Child
Analyzer در این مسیر وجود ندارد.
Command
{
"mid": "cmd-0001",
"deviceSerial": "AIRN0987654321",
"groupKey": "rgb",
"operationKey": "on_off",
"commandKey": "on",
"params": {}
}
mid برای Correlation و bounded deduplication استفاده میشود.
PUBACK != Success
QoS 1 فقط تحوی ل MQTT را تأیید میکند. Success زمانی است که Driver طبق Contract Native خودش evidence کافی از اجرای موفق دارد.
Final ACK
{
"mid": "cmd-0001",
"deviceSerial": "AIRN0987654321",
"status": "success",
"code": "success",
"retry": "none",
"completedAtUtc": "2026-09-14T08:12:03Z",
"diagnostic": {"message": null, "nativeCode": null}
}
Status
success: نتیجه اجرا مشخصاً موفق استfailed: نتیجه اجرا مشخصاً ناموفق استunknown: معلوم نیست Child اجرا کرده یا نه
unknown نباید خودکار Retry شود؛ ممکن است Command اجرا شده باشد ولی Response گم شده باشد.
Duplicate mid
- Duplicate در حال اجرا → اجرای Native دوم ایجاد نشود.
- Duplicate کاملشده در cache محدود → ACK قبلی replay شود.
- History بینهایت نگهداری نشود.
State بعد از Command
ACK موفق بهتنهایی مجوز Fabricate کردن State نیست. State فقط وقتی تغییر داده شود که Driver State نهایی authoritative ا رائه کند یا Observation بعدی آن را تأیید کند.