پرش به مطلب اصلی

مرجع MQTT Topicهای Gateway

این صفحه مرجع Public Topicهای Gateway v1 است. Direct Device Topicها در معماری Gateway استفاده نمی‌شوند.

Namespace اصلی

تمام Gateway Cloud Topicهای فعال از این الگو استفاده می‌کنند:

{projectCode}/v1/gw/{gatewaySerial}/{up|dn}/{action}/AES
  • up: Gateway → Server
  • dn: Server → Gateway
  • تمام Topicهای gateway-cloud به /AES ختم می‌شوند.
  • retain=false است مگر جایی که صریحاً خلاف آن نوشته شده باشد.

Gateway → Server

TopicQoSRetainکاربرد
{projectCode}/v1/gw/{gatewaySerial}/up/status/AES1trueOnline/Offline و LWT
{projectCode}/v1/gw/{gatewaySerial}/up/sync/status/AES1trueRevision و Sync status
{projectCode}/v1/gw/{gatewaySerial}/up/sync/check/AES1falseدرخواست هماهنگی Sync
{projectCode}/v1/gw/{gatewaySerial}/up/heartbeat/AES0falseHealth/Liveness
{projectCode}/v1/gw/{gatewaySerial}/up/device/{deviceSerial}/AES1trueChild Shadow
{projectCode}/v1/gw/{gatewaySerial}/up/ack/{mid}/AES1falseACK عمومی غیر Command
{projectCode}/v1/gw/{gatewaySerial}/up/cmd/ack/{mid}/AES1falseنتیجه واقعی اجرای Command
{projectCode}/v1/gw/{gatewaySerial}/up/telemetry/{deviceSerial}/AES0 یا 1falseTelemetry/State واقعی
{projectCode}/v1/gw/{gatewaySerial}/up/event/{type}/AES1falseEvent مهم
{projectCode}/v1/gw/{gatewaySerial}/up/onboard/req/AES1falseدرخواست Onboarding
{projectCode}/v1/gw/{gatewaySerial}/up/onboard/log/AES1falseگزارش Onboarding
{projectCode}/v1/gw/{gatewaySerial}/up/auth/token/request/AES1falseدرخواست API Token

Server → Gateway

TopicQoSRetainکاربرد
{projectCode}/v1/gw/{gatewaySerial}/dn/sync/manifest/AES1falseManifest و ترتیب Sync
{projectCode}/v1/gw/{gatewaySerial}/dn/cmd/AES1falseCommand برای Child
{projectCode}/v1/gw/{gatewaySerial}/dn/discover/start/AES1falseTrigger Discovery
{projectCode}/v1/gw/{gatewaySerial}/dn/onboard/rsp/{reqId}/AES1falseپاسخ Onboarding
{projectCode}/v1/gw/{gatewaySerial}/dn/auth/token/response/AES1falseAPI Token کوتاه‌عمر
{projectCode}/v1/gw/{gatewaySerial}/dn/sys/reboot/AES1falseReboot Gateway

Command payload

Topic:

{projectCode}/v1/gw/{gatewaySerial}/dn/cmd/AES

Plaintext business payload قبل از AES:

{
"mid": "cmd-0001",
"deviceSerial": "AIRN0987654321",
"groupKey": "rgb",
"operationKey": "on_off",
"commandKey": "on",
"params": {}
}

deviceSerial در این payload مربوط به Child است، اما deviceSerial داخل AES envelope مربوط به Physical Gateway است.

Command Execution ACK

Topic:

{projectCode}/v1/gw/{gatewaySerial}/up/cmd/ack/{mid}/AES
{
"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 است. MQTT PUBACK هرگز جای این ACK را نمی‌گیرد.

Telemetry

{
"deviceSerial": "AIRN0987654321",
"values": [
{"groupKey":"rgb","operationKey":"on_off","value":true,"ts":1813000001}
]
}

QoS Telemetry می‌تواند برای داده پرتکرار 0 و برای State مهم 1 باشد.

Child Shadow

Topic با retain=true:

{projectCode}/v1/gw/{gatewaySerial}/up/device/{deviceSerial}/AES
{
"deviceSerial": "AIRN0987654322",
"deviceId": "device-template-rgb-v1",
"online": false,
"enabled": true,
"reason": "poll_timeout",
"lastSeenAt": 1812999000
}

Offline شدن Child retained Shadow را حذف نمی‌کند. Shadow فقط وقتی حذف می‌شود که Child واقعاً از Gateway Unbind شود.

HTML Live Topicها

این چهار Topic Gateway Cloud Topic نیستند و /AES ندارند:

{projectCode}/v1/gw/{gatewaySerial}/html/{sessionId}/request
{projectCode}/v1/gw/{gatewaySerial}/html/{sessionId}/response
{projectCode}/v1/gw/{gatewaySerial}/html/{sessionId}/event
{projectCode}/v1/gw/{gatewaySerial}/html/{sessionId}/control

هر چهار مورد: QoS 1، Retain false، WSS/TLS + Temporary Credential.

Legacy / Future

  • up/register / up/announce: Legacy/Cancelled؛ استفاده نکنید.
  • Full snapshot sync از MQTT: Legacy؛ Sync فعلی Hybrid HTTP+MQTT است.
  • OTA/Coredump و Scenario Gateway: Future/Deferred تا Contract مستقل فعال شود.

نکته امنیتی

Topic path فقط Routing است. Authoritative identity و authorization از Credential/AES/Association معتبر می‌آید؛ هیچ payload یا path ساختگی نباید بتواند Child دیگری را جعل کند.