デバイスがオンラインになる前に、IoT Platform にデバイスアイデンティティを登録する必要があります。
登録方法
IoT Platform は、次の 2 つのデバイス登録方法をサポートしています:
-
一機一密:IoT Platform にデバイスを登録して、デバイス証明書 (ProductKey、DeviceName、DeviceSecret) を一意の識別子として取得します。証明書をデバイスのファームウェアに書き込みます。デバイスの接続後、IoT Platform にデータを報告できます。一機一密。
サポートされる登録プロトコル:
デバイス
サポートされるプロトコル
デバイス側の登録開発
参考資料
直接接続デバイス
MQTT
HTTPS
ゲートウェイサブデバイス
MQTT
-
一型一密:同一プロダクト配下のすべてのデバイスは、1 つのプロダクト証明書 (ProductKey と ProductSecret) を共有します。プロダクトに対して動的登録を有効にします。
動的登録の方法:
-
事前登録:IoT Platform にデバイスを登録します。その後、デバイスは動的登録によって DeviceSecret を取得します。
-
登録不要:IoT Platform にデバイスを登録しません。デバイスは動的登録によって ClientID と DeviceToken の組み合わせを取得します。
説明HTTPS プロトコルは、一型一密の認証における登録不要方式をサポートしていません。
登録プロセスの全体は 一型一密 に記載されています。ゲートウェイサブデバイスは事前登録方式のみをサポートします。ゲートウェイとサブデバイス。
サポートされる登録プロトコル:
デバイス
サポートされるプロトコル
デバイス側の登録開発
データ形式の説明
直接接続デバイス
MQTT
HTTPS
ゲートウェイサブデバイス
MQTT
-
サブデバイスの動的 MQTT 登録
-
リクエストトピック:
/sys/${productKey}/${deviceName}/thing/sub/register -
レスポンストピック:
/sys/${productKey}/${deviceName}/thing/sub/register_reply
リクエストデータ形式:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": [
{
"deviceName": "deviceName1234",
"productKey": "a1234******"
}
],
"method": "thing.sub.register"
}
レスポンスデータ形式:
{
"id": "123",
"code": 200,
"data": [
{
"iotId": "12344",
"productKey": "a1234******",
"deviceName": "deviceName1234",
"deviceSecret": "xxxxxx"
}
]
}
パラメーター:
|
パラメーター |
型 |
説明 |
|
id |
String |
メッセージ ID。デバイスごとに一意の数値文字列である必要があります。有効な値:0 ~ 4294967295。 |
|
version |
String |
プロトコルバージョン。有効な値は 1.0 のみです。 |
|
sys |
Object |
拡張機能パラメーター。 説明
デバイス側 SDK を使用し、拡張機能を設定しない場合、このパラメーターは省略され、デフォルト設定が適用されます。 |
|
ack |
Integer |
クラウドが応答を返すかどうかを指定します。sys 配下のフィールドです。
重要
設定の詳細:TSL (Thing Specification Language) モデルの使用例。 設定しない場合、このパラメーターは省略され、クラウドはデフォルトでレスポンスを返します。 |
|
params |
List |
サブデバイスの動的登録のパラメーター。 |
|
deviceName |
String |
サブデバイス名。 |
|
productKey |
String |
サブデバイスの ProductKey。 |
|
iotId |
String |
デバイスの一意の ID。 |
|
deviceSecret |
String |
デバイスシークレット。 |
|
method |
String |
リクエストメソッド。値は |
|
code |
Integer |
結果情報。 |
エラーコード:
|
エラーコード |
メッセージ |
説明 |
|
460 |
request parameter error |
リクエストパラメーターが無効です。 |
|
6402 |
topo relation cannot add by self |
デバイスを自身のサブデバイスとして追加することはできません。 |
|
401 |
request auth error |
署名検証に失敗しました。 |
直接接続デバイスの動的 HTTPS 登録
-
URL テンプレート:
https://iot-auth.${YourRegionId}.aliyuncs.com/auth/register/device -
HTTP メソッド:POST
リクエストデータ形式:
POST /auth/register/device HTTP/1.1 Host: iot-auth.cn-shanghai.aliyuncs.com Content-Type: application/x-www-form-urlencoded Content-Length: 123 productKey=a1234******&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=hmacsha1レスポンスデータ形式:
{ "code": 200, "data": { "productKey": "a1234******", "deviceName": "deviceName1234", "deviceSecret": "adsfw******" }, "message": "success" }パラメーター:
パラメーター
型
説明
Method
String
リクエストメソッド。POST のみがサポートされます。
Host
String
動的 HTTPS 登録のエンドポイント:
iot-auth.${YourRegionId}.aliyuncs.com。${YourRegionId}:IoT Platform インスタンスのリージョン ID。-
サポートされるリージョン:中国 (北京) と中国 (深圳) を除くすべてのリージョン。
-
リージョン ID:詳細はサポートされるリージョンをご参照ください。
Content-Type
String
デバイスからクラウドに送信するデータのエンコーディングフォーマット。
productKey
String
プロダクトの一意の識別子。
deviceName
String
デバイス名。
random
String
乱数。
sign
String
署名。
署名方法:
-
sign と signMethod を除くすべてのパラメーターをアルファベット順にソートし、区切り文字を使用せずに名前と値を連結します。
-
signMethod で指定されたアルゴリズムと、プロダクトの ProductSecret を使用して、連結した文字列に署名します。
署名の例:
hmacsha1(productSecret, deviceNamedeviceName1234productKeya1234******random123)signMethod
String
署名アルゴリズム。サポートされる値は hmacmd5、hmacsha1、hmacsha256 です。
code
Integer
結果情報。
deviceSecret
String
デバイスシークレット。
-