すべてのプロダクト
Search
ドキュメントセンター

:サブデバイスの接続または切断

最終更新日:Feb 06, 2024

サブデバイスは、個別にまたはバッチで接続または切断できます。 サブデバイスを接続する前に、サブデバイスをIoT Platformに登録して、サブデバイスとゲートウェイの間にトポロジ関係を確立する必要があります。 サブデバイスが接続されると、IoT Platformはトポロジ関係に基づいてサブデバイスのIDを検証し、サブデバイスがゲートウェイにアクセスできるかどうかを判断します。

説明
  • サブデバイスとIoT Platformの間で配信できるのは、サービス品質 (QoS) 0メッセージのみです。
  • IoT Platformに接続されているサブデバイスの数は、ゲートウェイの2,000を超えることはできません。 接続されているサブデバイスの数が2,000に達すると、IoT Platformはその後のすべての接続リクエストを拒否します。
  • バッチで接続または切断されるサブデバイスの数は50を超えることはできません。
  • 複数のサブデバイスの接続または切断の要求が成功した場合、すべてのサブデバイスが期待どおりに接続または切断されます。 リクエストが失敗した場合、すべてのサブデバイスの接続に失敗するか、切断に失敗します。data responseパラメーターにはデバイス情報が含まれています。

サブデバイスの IoT Platform への接続

上流データ:

  • リクエストトピック: /ext/session/${productKey}/${deviceName}/combine/login
  • レスポンストピック: /ext/session/${productKey}/${deviceName}/combine/login_reply
説明 サブデバイスはゲートウェイを使用してIoT Platformと通信します。 上記のトピックは、ゲートウェイに関するものです。 トピックの ${productKey} および ${deviceName} 変数をゲートウェイに関する情報に置き換えます。

Alink JSON形式のサンプルリクエスト:

{
  "id": "123",
  "params": {
    "productKey": "al12345 ****" 、
    "deviceName": "device1234" 、
    "clientId": "al12345 ****&device1234" 、
    "timestamp": "1581417203000" 、
    "signMethod": "hmacmd5",
    "sign": "9B9C732412A4F84B981E1AB97CAB ****" 、
    "cleanSession": "true"
  }
}
説明 メッセージ本文のproductKeyおよびdeviceNameパラメーターの値を、サブデバイスに関する対応する情報に置き換えます。
表1. リクエストパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
paramsオブジェクトリクエストのパラメーター 詳細については、次のparamsテーブルをご参照ください。
表2. params
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。
サインString

サブデバイスの署名。 サブデバイスの署名手順は、直接接続されたデバイスの署名手順と同じである。

手順:

  1. サーバーに送信されたすべてのパラメーターをアルファベット順に並べ替え、パラメーターと値を連結します。 これらのパラメータと値を区切るために連結記号は必要ありません。 signsignMethod、およびcleanSessionパラメーターは除外する必要があります。
  2. signMethodパラメーターで指定されたアルゴリズムとDeviceSecretパラメーターの値を使用して、署名を計算します。

    計算結果をsignパラメーターの値として使用します。

signパラメーターの値の計算方法の例:

hmac_md5(deviceSecret, clientIdal12345 ****&device1234deviceNamedevice1234productKeyal12345 **** timestamp1581417203000)
signMethodString署名アルゴリズム。 有効な値: hmacSha1、hmacSha256、hmacMd5、およびSha256。
timestampString値は、ミリ秒単位のタイムスタンプです。
clientIdStringデバイスの ID このパラメーターは、productKey&deviceNameの構文に基づいて、プロダクトキーとデバイス名を組み合わせた値に設定できます。
cleanSessionString
  • このパラメーターがtrueに設定されている場合、サブデバイスが切断されたときに受信されなかったすべてのQoS 1メッセージはクリアされます。
  • このパラメーターをfalseに設定すると、サブデバイスの切断時に受信されなかったすべてのメッセージが保持されます。

Alink JSON形式のサンプル応答:

{
  "id":"123",
  "code":200,
  "message":"success"
  "data":{
      "deviceName": "device1234" 、
      "productKey": "al12345 ****"
    }
}
表3. Responseパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
コードIntegerステータスコード。 値200は、リクエストが成功したことを示します。
メッセージString応答メッセージ。
データオブジェクトリクエストが成功したか失敗したかに関係なく、返されるサブデバイス情報。 詳細については、次のデータ表をご参照ください。
表4. データ
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

エラーメッセージ:

エラーコードエラーメッセージ補足
460request parameter errorリクエストパラメーターが無効な場合に返されるエラーメッセージ。
429rate limit, too many subDeviceOnline msg in one minuteデバイスから送信される認証要求の数が制限を超えた場合に返されるエラーメッセージ。 デバイスはスロットルされています。
428too many subdevices under gateway接続されているサブデバイスの数が制限を超えた場合に返されるエラーメッセージ。
6401topo relation not existゲートウェイとサブデバイス間のトポロジ関係が存在しない場合に返されるエラーメッセージ。
6100device not foundサブデバイスが存在しない場合に返されるエラーメッセージ。
521device deletedサブデバイスが削除された場合に返されるエラーメッセージ。
522device forbiddenサブデバイスが無効になっている場合に返されるエラーメッセージ。
6287invalid signサブデバイスのパスワードまたは署名が無効な場合に返されるエラーメッセージ。

サブデバイスをバッチで接続する

重要 一度に最大50のサブデバイスをIoT Platformに接続できます。

上流データ:

  • リクエストトピック: /ext/session/${productKey}/${deviceName}/combine/login
  • レスポンストピック: /ext/session/${productKey}/${deviceName}/combine/batch_login_reply
説明 サブデバイスはゲートウェイを使用してIoT Platformと通信します。 上記のトピックは、ゲートウェイに関するものです。 トピックの ${productKey} および ${deviceName} 変数をゲートウェイに関する情報に置き換えます。

Alink JSON形式のサンプルリクエスト:

{
  "id": "123",
  "param": { 
     "deviceList":[{
        "productKey": "al12345 ****" 、 
        "deviceName": "device1234" 、
        "clientId": "al12345 ****&device1234" 、
        "timestamp": "1581417203000" 、 
        "cleanSession": "false" 、
        "signMethod": "hmacmd5",
        "sign": "9B9C732412A4F84B981E1AB97CAB ****" 、
     }, {
        "productKey": "al12345 ****" 、 
        "deviceName": "device4321" 、
        "clientId": "al12345 ****&device4321" 、
        "timestamp": "1581417203000" 、 
        "cleanSession": "true" 、
        "signMethod": "hmacmd5",
        "sign": "9B9C732412A4F84B981E1AB97CAB ****" 、
     }]
  }
}
説明 メッセージ本文のproductKeyおよびdeviceNameパラメーターの値を、サブデバイスに関する対応する情報に置き換えます。
表5. リクエストパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
paramsオブジェクトリクエストのパラメーター deviceListパラメーターには、接続するサブデバイスの認証に必要なパラメーターが含まれます。 詳細については、次のdeviceListテーブルをご参照ください。
表6. deviceList

Alink JSON形式のサンプル応答:

{
  "id":"123",
  "code":"200",
  "message":"success",
  "data":[{
      "productKey": "al12345 ****" 、
      "deviceName": "device1234"
    },{
      "deviceName": "device4321" 、
      "productKey": "al12345 ****"
    }]
}
表3. Responseパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
コードIntegerステータスコード。 値200は、リクエストが成功したことを示します。
メッセージString応答メッセージ。
データオブジェクトリクエストが成功したか失敗したかに関係なく、返されるサブデバイス情報。 詳細については、次のデータ表をご参照ください。
表4. データ
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

エラーメッセージ:

エラーコードエラーメッセージ補足
460request parameter errorリクエストパラメーターが無効な場合に返されるエラーメッセージ。
429rate limit, too many subDeviceOnline msg in one minuteデバイスから送信される認証要求の数が制限を超えた場合に返されるエラーメッセージ。 デバイスはスロットルされています。
428too many subdevices under gateway接続されているサブデバイスの数が制限を超えた場合に返されるエラーメッセージ。
6401topo relation not existゲートウェイとサブデバイス間のトポロジ関係が存在しない場合に返されるエラーメッセージ。
6100device not foundサブデバイスが存在しない場合に返されるエラーメッセージ。
521device deletedサブデバイスが削除された場合に返されるエラーメッセージ。
522device forbiddenサブデバイスが無効になっている場合に返されるエラーメッセージ。
6287invalid signサブデバイスのパスワードまたは署名が無効な場合に返されるエラーメッセージ。

IoT Platform からのサブデバイスの切断

上流データ:

  • リクエストトピック: /ext/session/${productKey}/${deviceName}/combine/logout
  • レスポンストピック: /ext/session/${productKey}/${deviceName}/combine/logout_reply
説明 サブデバイスはゲートウェイを使用してIoT Platformと通信します。 上記のトピックは、ゲートウェイに関するものです。 トピックの ${productKey} および ${deviceName} 変数をゲートウェイに関する情報に置き換えます。

Alink JSON形式のサンプルリクエスト:

{
  "id": "123",
  "params": {
    "productKey": "al12345 ****" 、
    "deviceName": "device1234"
  }
}
説明 メッセージ本文のproductKeyおよびdeviceNameパラメーターの値を、サブデバイスに関する対応する情報に置き換えます。
表7. リクエストパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
paramsオブジェクトリクエストのパラメーター これらのパラメーターは、切断するサブデバイスに関する情報を指定します。
表8. params
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

Alink JSON形式のサンプル応答:

{
  "id": "123",
  "code": 200,
  "message": "success",
  "data": {
      "deviceName": "device1234" 、
      "productKey": "al12345 ****"
    }
}
表9. Responseパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
コードIntegerステータスコード。 値200は、リクエストが成功したことを示します。
メッセージString応答メッセージ。
データオブジェクトリクエストが成功するか失敗するかに関係なく、返されるサブデバイス情報。 詳細については、次のデータ表をご参照ください。
表10. データ
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

エラーメッセージ:

エラーコードエラーメッセージ補足
460request parameter errorリクエストパラメーターが無効な場合に返されるエラーメッセージ。
520device no sessionサブデバイスセッションが存在しない場合に返されるエラーメッセージ。

複数のサブデバイスをバッチで切断する

重要 一度に最大50のサブデバイスをIoT Platformから切断できます。

上流データ:

  • リクエストトピック: /ext/session/${productKey}/${deviceName}/combine/batch_logout
  • レスポンストピック: /ext/session/${productKey}/${deviceName}/combine/batch_logout_reply
説明 サブデバイスはゲートウェイを使用してIoT Platformと通信します。 上記のトピックは、ゲートウェイに関するものです。 トピックの ${productKey} および ${deviceName} 変数をゲートウェイに関する情報に置き換えます。

Alink JSON形式のサンプルリクエスト:

{
  "id": "123",
  "params":[{
            "productKey": "al12345 ****" 、
            "deviceName": "device1234"
          },{
            "productKey": "al12345 ****" 、
            "deviceName": "device4321"
      }]
}
説明 メッセージ本文のproductKeyおよびdeviceNameパラメーターの値を、サブデバイスに関する対応する情報に置き換えます。
表7. リクエストパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
paramsオブジェクトリクエストのパラメーター これらのパラメーターは、切断するサブデバイスに関する情報を指定します。
表8. params
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

Alink JSON形式のサンプル応答:

{
  "id":"123",
  "code":"200",
  "message":"success",
  "data":[{
      "productKey": "al12345 ****"
      "deviceName": "device1234"
    },{
      "deviceName": "device4321" 、
      "productKey": "al12345 ****"
    }]
}
表9. Responseパラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
コードIntegerステータスコード。 値200は、リクエストが成功したことを示します。
メッセージString応答メッセージ。
データオブジェクトリクエストが成功するか失敗するかに関係なく、返されるサブデバイス情報。 詳細については、次のデータ表をご参照ください。
表10. データ
パラメーターデータ型説明
deviceNameStringサブデバイスの名前
productKeyStringサブデバイスが属するプロダクトのキー。

エラーメッセージ:

エラーコードエラーメッセージ説明
460request parameter errorリクエストパラメーターが無効な場合に返されるエラーメッセージ。
520device no sessionサブデバイスセッションが存在しない場合に返されるエラーメッセージ。

参考資料

サブデバイスをIoT Platformに接続する方法の詳細については、「デバイスの登録」をご参照ください。

エラーコードとソリューションの詳細については、「デバイスのエラーコード」をご参照ください。