Provisioning و اتصال Cloud گیتوی
Physical Gateway ابتدا مانند یک Device واقعی AirNgin Provision میشود. سرور Credentialهای کامل را صادر میکند و Firmware باید آنها را Persist و Reuse کند.
Credentialهای Server-issued
projectCodeDeviceSerial- MQTT Username
- MQTT Password
- MQTT
ClientId encryptionKey- Broker information
ClientId یک مقدار opaque است. Backend ممکن است آن را با Metadataهای داخلی بسازد، اما Firmware نباید Prefix یا bucketCode را Parse یا بازسازی کند.
Brokerها
Primary: mqtt.airngin.com
Fallback: mqtt.airngin.ir
پورتهای اصلی MQTT پلتفرم:
1883 MQTT
8883 MQTT over TLS
8443 WSS: wss://webapp.airngin.com:8443/mqtt
Reconnect
- KeepAlive: 30s
- Socket timeout: 15s
- سه تلاش روی Primary، سپس Fallback
- بعد از Fail طولانی، Retry دورهای از Primary
- reconnect باید non-blocking باشد
- Subscriptionها بعد از اتصال مجدد restore شوند
- قطع شبکه نباید Credential معتبر را پاک کند
چه زمانی Reprovision لازم است؟
- Credential وجود ندارد
- Factory Reset آن را پاک کرده است
- Project identity عوض یا invalidate شده است
- Broker/Server بهصورت قطعی Authentication را رد کرده است
DNS failure، Router change، اینترنت قطع، یا Broker timeout بهتنهایی دلیل Reprovision نیستند.
ClientId
از دید Firmware تنها قانون این است:
receive complete ClientId from server
→ persist exactly
→ reuse exactly
از روی DeviceSerial، MAC، Chip ID یا Random value ClientId جدید نسازید.