デバイスを IoT Platform に MQTT 経由で接続できます。この記事では、デバイスと IoT Platform 間で IPv6 ベースの MQTT 接続を確立する方法について説明します。
制限事項
IPv6 ベースの MQTT 接続は、中国 (上海) リージョンでのみサポートされています。
IoT Platform にデバイスを接続する
- TLS 暗号化に使用される ルート証明書 をダウンロードします。ルート証明書の使用方法の詳細については、「CA 証明書」をご参照ください。
- MQTT 接続を設定するようにデバイスを開発します。
Alibaba Cloud が提供するデバイス SDK を使用して IoT Platform に接続することをお勧めします。カスタムデバイス SDK を使用する場合は、署名メカニズムを設定する必要があります。詳細については、「MQTT 接続の署名を作成する例」をご参照ください。
次の表にパラメーターを示します。
パラメーター 説明 ドメイン名とポート ドメイン名は ipv6.itls.cn-shanghai.aliyuncs.comで、ポート番号は 1883 です。可変ヘッダー:キープアライブ CONNECT メッセージには、キープアライブ期間を含める必要があります。キープアライブ期間の有効値:30 ~ 1,200 秒。キープアライブ パラメーターの値がこの範囲内にない場合、IoT Platform は接続を拒否します。300 秒より大きい値を設定することをお勧めします。ネットワーク接続が不安定な場合は、キープアライブ期間を高い値に設定することをお勧めします。 MQTT CONNECT メッセージのパラメーター mqttClientId: clientId+"|securemode=2,signmethod=hmacsha1,timestamp=132323232|" mqttUsername: deviceName+"&"+productKey mqttPassword: sign_hmac(deviceSecret,content)mqttPassword:パスワード。計算方法:サーバーに送信されるパラメーターをアルファベット順にソートし、指定された署名アルゴリズムに基づいてパラメーターを暗号化します。
content:サーバーに送信されるパラメーターを連結した文字列。productKey、deviceName、timestamp、clientId など、これらのパラメーターはアルファベット順にソートされ、デリミタなしで連結されます。
- clientId:クライアントの ID。デバイスの MAC アドレスまたはシリアル番号 (SN) をクライアント ID として使用することをお勧めします。クライアント ID は 64 文字を超えることはできません。
- timestamp:現在の時刻(ミリ秒単位)。このパラメーターは省略可能です。
- mqttClientId:拡張パラメーターは縦棒 (
|) の間に配置されます。 - signmethod:署名アルゴリズム。有効値:hmacmd5、hmacsha1、hmacsha256、sha256。デフォルト値:hmacmd5。
- securemode:セキュリティモード。値を 2(直接 TLS 接続)に設定します。
例:
次の値が指定されているとします:
clientId=12345, deviceName=device, productKey=pk, timestamp=789, signmethod=hmacsha1, deviceSecret=secret。次のコードは、TCP 経由で送信される MQTT CONNECT メッセージのパラメーターを示しています。mqttclientId=12345|securemode=2,signmethod=hmacsha1,timestamp=789| mqttUsername=device&pk mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();暗号化されたパスワードは、バイナリ文字列から変換された 16 進数文字列です。次のコードに結果を示します。
FAFD82A3D602B37FB0FA8B7892F24A477F85****