デバイスを IoT Platform に接続する前に、デバイス ID を IoT Platform に登録する必要があります。

ID 登録には以下の方法があります。

  • デバイス固有証明書: IoT Platform 上でデバイスの ProductKey、DeviceName、DeviceSecret を取得し、これらを一意の識別子として使用します。 デバイスのファームウェアにこれら 3 つのキーフィールドをインストールします。 デバイスが IoT Platform に接続された後、IoT Platform との通信を開始します。
  • 動的登録: 直接接続されたデバイスの場合、プロダクト固有証明書による認証に基づく動的登録を実行します。サブデバイスの場合、動的登録を実行します。
    • プロダクト固有証明書による認証に基づき、直接接続されたデバイスを動的に登録するには、以下の手順に従います。
      1. IoT Platform コンソールで、デバイスを事前登録し、ProductKey と ProductSecret を取得します。 デバイスを事前登録する際、デバイスの MAC アドレスやシリアル番号など、DeviceName としてデバイスから直接読み取ることができるデバイス情報を使用します。
      2. コンソールで動的登録を有効にします。
      3. デバイスファームウェア上にプロダクト証明書をインストールします。
      4. IoT Platform でデバイスが認証されます。 デバイスが認証されると、DeviceSecret が割り当てられます。
      5. デバイスは、ProductKey、DeviceName、DeviceSecret を使用して、IoT Platform への接続を確立します。
    • サブデバイスを動的に登録するには、以下の手順に従います。
      1. IoT Platform コンソールで、サブデバイスを事前登録し、ProductKey を取得します。 サブデバイスを事前登録する際、MAC アドレスや SN など、DeviceName としてサブデバイスから直接読み取ることができるデバイス情報を使用します。
      2. コンソールで動的登録を有効にします。
      3. サブデバイスのファームウェア上、またはゲートウェイ上に ProductKey をインストールします。
      4. ゲートウェイはサブデバイスの代わりに IoT Platform で認証されます。

サブデバイスの動的登録

アップストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/sub/register
  • Reply topic: /sys/{productKey}/{deviceName}/thing/sub/register_reply

リクエストメッセージ

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.sub.register"
}

レスポンスメッセージ

{
  "id": "123",
  "code": 200,
  "data": [
    {
      "iotId": "12344",
      "productKey": "1234556554",
      "deviceName": "deviceName1234",
      "deviceSecret": "xxxxxx"
    }
  ]
}

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーターの値
version String プロトコルのバージョン。 現在、値は 1.0 のみ。
params List 動的登録に使用されるパラメーター。
deviceName String サブデバイス名。
productKey String サブデバイスが属するプロダクトの ID。
iotId String サブデバイスの一意識別子。
deviceSecret String DeviceSecret キー。
method String リクエスト方法。
code Integer 結果コード。

エラーメッセージ

エラーコード エラーメッセージ 説明
460 request parameter error リクエストパラメーターが不正。
6402 topo relation cannot add by self デバイスをサブデバイスとして追加できません。
401 request auth error 署名の検証に失敗しました。

プロダクト固有証明書の認証に基づき直接接続されたデバイスの動的登録

直接接続されたデバイスは、HTTP リクエストを送信して動的登録を実行します。 プロダクト固有証明書の認証に基づく動的登録を有効にしていることをコンソールで確認します。

  • URL テンプレート: https://iot-auth.cn-shanghai.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=1234556554&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=HmacMD5

レスポンスメッセージ

{
  "code": 200,
  "data": {
    "productKey": "1234556554",
    "deviceName": "deviceName1234",
    "deviceSecret": "adsfweafdsf"
  },
  "message": "success"
}

パラメーターの説明

パラメーター 説明
productKey String デバイスが属するプロダクトの ID。
deviceName String デバイス名。
random String ランダムな番号。
sign String 署名。
signMethod String 署名方法。 サポートされる方法は、hmacmd5、hmacsha1、hmacsha256 です。
code Integer 結果コード。
deviceSecret String DeviceSecret キー。

パラメーターの署名

IoT Platform に報告されるパラメーターは、signsignMethod を除いてすべて署名されます。 署名パラメーターをアルファベット順に並べ替え、連結記号なしでパラメーターと値を連結します。

その後、signMethod で指定されたアルゴリズムを使用してパラメーターに署名します。

例:

sign = hmac_sha1(productSecret, deviceNamedeviceName1234productKey1234556554random123)