デバイスをIoT Platformに接続する前に、デバイスをIoT Platformに登録する必要があります。 これにより、IoT Platformはデバイスを識別できます。
概要
次の方法でデバイスを登録できます。
デバイスごとに一意の証明書検証: IoT Platformでデバイスを作成し、デバイス証明書を取得して、証明書情報を一意の識別子として使用します。 証明書情報には、ProductKey、DeviceName、およびDeviceSecretが含まれます。 証明書情報をデバイスのファームウェアに書き込みます。 デバイスがIoT Platformに接続されると、デバイスはIoT Platformと通信できます。 詳細については、「Unique-certificate-per-device verification」をご参照ください。
次の表に、デバイスを登録できるプロトコルを示します。
デバイス
サポートされるプロトコル
デバイス登録
参考資料
直接接続デバイス
MQTT
HTTPS
ゲートウェイとサブデバイス
MQTT
製品ごとに一意の証明書検証: 製品のすべてのデバイスに製品証明書を書き込みます。 プロダクト証明書には、ProductKeyとProductSecretが含まれます。 デバイスが属する製品の動的登録機能を有効にする必要があります。
次の動的登録方法がサポートされています。
事前登録: この方法を使用する場合は、IoT Platformコンソールでデバイスを登録する必要があります。 デバイスは、DeviceSecretを取得するために動的に登録されます。
事前登録なし: この方法を使用する場合、IoT Platformコンソールでデバイスを登録する必要はありません。 デバイスは、ClientIDおよびDeviceTokenを取得するために動的に登録される。
説明HTTPSを使用して、事前登録なしの製品ごとの一意の証明書検証を実装することはできません。
デバイスの登録方法の詳細については、「Unique-certificate-per-product verification」をご参照ください。 ゲートウェイサブデバイスは、事前登録方法のみをサポートします。 登録プロセスの詳細については、「ゲートウェイとサブデバイス」をご参照ください。
次の表に、デバイスを登録できるプロトコルを示します。
デバイス
サポートされるプロトコル
デバイス登録
データ形式の説明
直接接続デバイス
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 各メッセージIDは、デバイスに対して一意である必要があります。 |
バージョン | String | プロトコルのバージョン番号。 値を 1.0 に設定します。 |
sys | オブジェクト | 拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。 説明 デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。 |
ack | Integer | sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:
重要 パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。 機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。 |
params | List | 動的登録に使用されるパラメータ。 |
deviceName | String | サブデバイスのDeviceName。 |
productKey | String | サブデバイスが属するプロダクトのプロダクトキー |
iotId | String | サブデバイスの一意識別子 |
deviceSecret | String | デバイスのDeviceSecret。 |
メソッド | String | リクエスト方式。 値をthing.sub.registerに設定します。 |
コード | Integer | 結果を示すステータスコード。 |
次の表に、エラーコードを示します。
エラーコード | メッセージ | 説明 |
460 | request parameter error | リクエストパラメーターは無効です。 |
6402 | topo relation cannot add by self | デバイスを自身のサブデバイスとして追加することはできません。 |
401 | request auth error | システムが署名の検証に失敗しました。 |
直接接続されたデバイスのHTTPSベースの動的登録
URL形式:
https:// iot-auth.${YourRegionI d}.aliyuncs.com/auth/register/device
HTTPメソッド: POST。
リクエストの例
POST /auth/register/device HTTP/1.1 ホスト: iot-auth.cn-shanghai.aliyuncs.com コンテンツタイプ: application/x-www-form-urlencoded コンテンツ-長さ: 123 productKey=a1234 ******&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=HmacMD5
レスポンス例:
{ "code": 200, "data": { "productKey": "a1234 *******" 、 "deviceName": "deviceName1234", "deviceSecret": "adsfw ******" }, "メッセージ": "成功" }
下表に、各パラメーターを説明します。
パラメーター
データ型
説明
メソッド
String
リクエスト方式。 有効値: POST。
ホスト
String
HTTPS経由でデバイスを動的に登録するために使用されるエンドポイント。 形式:
iot-auth.${YourRegionI d}.aliyuncs.com
${YourRegionId}
: この変数を、IoT Platformデバイスが存在するリージョンのIDに置き換えます。次のリージョンは、HTTPSベースの動的登録をサポートしています。中国 (北京) および中国 (深セン) リージョンを除くすべてのリージョンです。
リージョンIDの形式については、「サポートされているリージョン」をご参照ください。
コンテンツタイプ
String
デバイスがIoT Platformに送信するアップストリームデータのエンコード形式。
productKey
String
プロダクトの一意の識別子。
deviceName
String
デバイスのDeviceName。
ランダム
String
ランダムな文字列。
サイン
String
署名。
次の方法を使用して署名を作成できます。
signとsignMethodを除くすべてのパラメーターをアルファベット順に並べ替え、連結演算子なしでパラメーターと値を順番に連結します。
signMethodパラメーターで指定された署名メソッドと製品のProductSecretを使用して、署名を生成します。
例:
hmac_sha1(productSecret, deviceNamedeviceName1234productKeya1234 ****** random123)
signMethod
String
署名方式。 有効値: hmacmd5、hmacsha1、および hmacsha256。
コード
Integer
結果を示すステータスコード。
deviceSecret
String
デバイスのDeviceSecret。