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 بعدی آن را تأیید کند.