サブデバイスが IoT Platform に登録されてから IoT Platform に接続するまでの間に、ゲートウェイはゲートウェイとサブデバイスのトポロジー関係を IoT Platform に報告します。

IoT Platform は接続の間に ID とトポロジー関係を検証します。 検証に成功すると、IoT Platform はサブデバイスとの論理接続を確立し、ゲートウェイの物理接続と論理接続を関連付けます。 サブデバイスは、直接接続されたデバイスと同じプロトコルを使用して、データのアップロードとダウンロードを行います。 ゲートウェイ情報をプロトコルに含める必要はありません。

IoT Platform からサブデバイスのトポロジー関係を削除した後、サブデバイスはゲートウェイ経由で IoT Platform に接続することはできません。 トポロジー関係が存在しないため、IoT Platform が認証に失敗します。

サブデバイスのトポロジー関係の追加

アップストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/topo/add
  • Reply topic: sys/{productKey}/{deviceName}/thing/topo/add_reply

Alink プロトコル使用時のリクエストデータ形式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554",
      "sign": "xxxxxx",
      "signmethod": "hmacSha1",
      "timestamp": "1524448722000",
      "clientId": "xxxxxx"
    }
  ],
  "method": "thing.topo.add"
}

Alink プロトコル使用時のレスポンスデータ形式

{
  "id": "123",
  "code": 200,
  "data": {}
}

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーター値
version String プロトコルのバージョン。 現在、値は 1.0 のみ。
params List リクエストの入力パラメーター。
deviceName String デバイス名。 値はサブデバイス名です。
productKey String プロダクト ID。 値はサブデバイスが属するプロダクトの ID です。
sign String 署名。

署名アルゴリズム。

サーバーに送信されるすべてのパラメーター (signsignMethod を除く) を辞書順に並べ、パラメーターと値を順番に連結します (連結記号なし)。

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

たとえば、以下のリクエストでは params のパラメーターをアルファベット順に並べ、パラメーターに署名します。
sign= hmac_md5(deviceSecret, clientId123deviceNametestproductKey123timestamp1524448722000)
signmethod String 署名方法。 サポートされる方法は、hmacSha1、hmacSha256,、hmacMd5、Sha256 です。
timestamp String タイムスタンプ。
clientId String サブデバイスの識別子。 このパラメーターは省略可能です。ProductKey または DeviceName と同じ値の可能性があります。
code Integer 結果コード。 200 という値は、リクエストが成功したことを示します。

エラーメッセージ

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

サブデバイスのトポロジー関係の削除

ゲートウェイはこの Topic に対しメッセージをパブリッシュし、IoT Platform がゲートウェイとサブデバイス間のトポロジー関係を削除するようにリクエストできます。

アップストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/topo/delete
  • Reply topic: /sys/{productKey}/{deviceName}/thing/topo/delete_reply

Alink プロトコル使用時のリクエストデータ形式

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

Alink プロトコル使用時のレスポンスデータ形式

{
  "id": "123",
  "code": 200,
  "data": {}
}

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーター値。
version String プロトコルのバージョン。 現在、値は 1.0 のみ。
params List リクエストパラメーター。
deviceName String デバイス名。 値はサブデバイス名です。
productKey String プロダクト ID。 値はサブデバイスが属するプロダクトの ID。
method String リクエストメソッド。
code Integer 結果コード。 200 という値は、リクエストが成功したことを示します。

エラーメッセージ

エラーコード エラーメッセージ 説明
460 request parameter error リクエストパラメーターが不正です。
6100 device not found デバイスが存在しません。

サブデバイスのトポロジー関係の取得

アップストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/topo/get
  • Reply topic: /sys/{productKey}/{deviceName}/thing/topo/get_reply

ゲートウェイは Topic に対してメッセージをパブリッシュし、ゲートウェイと、接続されたサブデバイス間のトポロジー関係を取得します。

Alink プロトコル使用時のリクエストデータ形式

{
  "id": "123",
  "version": "1.0",
  "params": {},
  "method": "thing.topo.get"
}

Alink プロトコル使用時のレスポンスデータ形式

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

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーター値。
version String プロトコルのバージョン。 現在、値 1.0 のみ。
params Object リクエストパラメーター。 空白のままにできます。
method String リクエストメソッド。
deviceName String サブデバイス名。
productKey String サブデバイスのプロダクト ID。
code Integer 結果コード。 00 という値は、リクエストが成功したことを示します。

エラーメッセージ

エラーコード エラーメッセージ 説明
460 request parameter error リクエストパラメーターが不正です。

新たなサブデバイスの報告

アップストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/list/found
  • Reply topic: /sys/{productKey}/{deviceName}/thing/list/found_reply

一部のシナリオでは、ゲートウェイが新しいサブデバイスを検出します。 ゲートウェイは新しいサブデバイス情報を IoT Platform へ報告します。 IoT Platform はサブデバイス情報をサードパーティーのアプリケーションに転送し、サードパーティーアプリケーションはゲートウェイに接続するサブデバイスを選択します。

Alink プロトコル使用時のリクエストデータ形式

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

Alink プロトコル使用時のレスポンスデータ形式

{
  "id": "123",
  "code": 200,
  "data":{}
}

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーター
version String プロトコルのバージョン。 現在、値は 1.0 のみ。
params Object リクエストパラメーター。 空白のままにできます。
method String リクエストメソッド。
deviceName String サブデバイス名。
productKey String サブデバイスのプロダクト ID。
code Integer 結果コード。 200 という値は、リクエストが成功したことを示します。

エラーメッセージ

エラーコード エラーメッセージ 説明
460 request parameter error リクエストパラメーターが不正です。
6250 product not found サブデバイスが属する、指定されたプロダクトが存在しません。
6280 devicename not meet specs サブデバイス名が無効。 デバイス名は 4~32 文字の長さで、文字、数字、ハイフン (-)、アンダースコア (_)、アットマーク (@)、ピリオド (.)、およびコロン (:) を含めることができます。

接続されたサブデバイスのトポロジー関係を追加するようゲートウェイに通知

ダウンストリーム

  • Topic: /sys/{productKey}/{deviceName}/thing/topo/add/notify
  • Reply topic: /sys/{productKey}/{deviceName}/thing/topo/add/notify_reply

IoT Platform はこの Topic にメッセージをパブリッシュして、接続されたサブデバイスのトポロジー関係を追加するようにゲートウェイに通知します。 IoT Platform に新しいサブデバイスを報告する Topic とともに、このトピックを使用できます。 IoT Platform は、データ交換 Topic をサブスクライブし、ゲートウェイからレスポンスを受け取ります。 データ交換 Topic は /{productKey}/{deviceName}/thing/downlink/reply/message です。

Alink プロトコル使用時のリクエストデータ形式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.topo.add.notify"
}

Alink プロトコル使用時のレスポンスデータ形式

{
  "id": "123",
  "code": 200,
  "data": {}
}

パラメーターの説明

パラメーター 説明
id String メッセージ ID。 将来の使用のために予約されたパラメーター値。
version String プロトコルバージョン。 現在、値は 1.0 のみ。
params Object リクエストパラメーター。 空白のままにできます。
method String リクエストメソッド。
deviceName String サブデバイス名。
productKey String サブデバイスのプロダクト ID。
code Integer 結果コード。 200 という値は、リクエストが成功したことを示します。