このトピックでは、GB/T 32960 車載デバイスを IoT Platform に接続し、IoT Platform ゲートウェイを使用して通信を有効にする方法について説明します。この例では、Github オープンソースプロジェクトを使用します。
前提条件
排他的 Enterprise Edition インスタンスが購入済みであること。
この例では、中国 (上海) リージョンで購入された排他的 Enterprise Edition インスタンスを使用します。詳細については、「Enterprise Edition インスタンスを購入する」をご参照ください。
カスタム証明書が利用可能であること。
この例では、カスタム証明書には
root-ca.crtという名前のルート証明書ファイル、server.keyという名前のサーバー側の秘密鍵ファイル、およびserver.crtという名前のサーバー側の証明書ファイルが含まれています。OpenSSL を使用してカスタム証明書を生成できます。証明書の生成方法の詳細については、「カスタム証明書を生成する」をご参照ください。
背景情報
IoT Platform は GB/T 32960 ゲートウェイを提供し、TCP および TLS 経由でデバイスを IoT Platform に接続できます。TCP は強力なセキュリティを提供しないため、使用しないことをお勧めします。TLS 経由でデバイスを IoT Platform に接続する場合、サーバー側の片方向検証、デバイスの Online Certificate Status Protocol (OCSP)、デバイスとサーバー間の双方向セキュア接続、およびその他の機能を有効にできます。
この例では、デバイスで一方検証が実行され、GB/T 32960 ゲートウェイを使用してデバイスが TLS 経由で IoT Platform に接続されます。
GB/T 32960 ゲートウェイとデバイス間の検証と通信の詳細については、「GB/T 32960 ゲートウェイ」をご参照ください。
GB/T 32960 クライアントの実装に使用されるオープンソースコードは、Github で入手できます。詳細については、「Github オープンソースプロジェクト」をご参照ください。
環境を準備する
この例では、git コマンドを使用してオープンソースコードをダウンロードし、patch コマンドを使用してパッチを適用します。これらのコマンドをオペレーティングシステムにインストールする必要があり、オペレーティングシステムはこれらのコマンドをサポートしている必要があります。
この例では、Java を使用してプログラムを開発します。以下の要件を満たす Java 開発環境を準備します。
Java 開発キット (JDK): JDK 8
統合開発環境 (IDE): IntelliJ IDEA Community Edition
オープンソースコードをダウンロードする
この例では、オープンソースのデモを簡略化しています。パッチファイルをダウンロードしてパッチを適用する必要があります。次の手順を実行します。
次のコマンドを実行して、
tspデモファイルを取得します。git clone https://github.com/zhengyishan/tsp.git cd tsp git checkout 5ef2907b7160f74cf4948b641d75fccd50c5dd6a -b demo_branchgb32960.patchという名前の パッチファイルをダウンロード し、tspデモファイルが保存されているディレクトリに保存します。次のコマンドを実行して、
tspデモファイルにパッチを適用します。patch -p1 < gb32960.patch
ゲートウェイとデバイスを作成する
IoT Platform コンソール にログインします。
IoT Platform コンソールの左上隅で、IoT Platform がアクティブになっているリージョンを選択します。
[概要] ページで、排他的 Enterprise Edition インスタンスのカードをクリックします。
左側のナビゲーションウィンドウで、[デバイス] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、[ゲートウェイを追加] をクリックします。
[ゲートウェイを追加] ダイアログボックスで、次の図に示すようにパラメーターを設定します。[サーバー証明書の秘密鍵] パラメーターを
server.keyファイルの内容に設定し、[サーバー証明書] パラメーターを server.crt ファイルの内容に設定します。パラメーターの詳細については、「ゲートウェイを作成する」をご参照ください。

表示されるメッセージで、[OK] をクリックします。
[ゲートウェイ] ページで、作成したゲートウェイを見つけ、ゲートウェイの [ゲートウェイ URL] 列にあるエンドポイントとポート番号をコピーします。

ゲートウェイにデバイスを追加する
左側のナビゲーションウィンドウで、[デバイス] > [製品] を選択します。作成したゲートウェイを見つけ、[アクション] 列の [デバイスの管理] をクリックします。
[デバイス] ページで、[一括追加] をクリックします。
デバイスの一括追加[デバイスを一括追加] ダイアログボックスで、 をクリックして、CSV 形式のテンプレートをダウンロードします。

テンプレートにデバイスの車両識別番号 (VIN) を指定します。例: device10000000001。次に、テンプレートを
.CSVファイルとして保存します。重要VIN は 17 文字を超えることはできず、文字と数字を含めることができます。
デバイスの一括追加[デバイスを一括追加] ダイアログボックスに移動し、[OK] をクリックして、保存したファイルを IoT Platform コンソールにアップロードし、 をクリックします。

デバイスの ID 情報がインポートされると、IoT Platform はデバイスを作成し、指定した VIN をデバイスの DeviceName として使用します。デバイスは [デバイス] ページに表示されます。

デバイス側プログラムを開発する
IoT Platform コンソールでデバイスを作成したら、デバイスを IoT Platform に接続するためのデバイス側プログラムを開発する必要があります。この例では、Java 用 Link SDK を使用して device10000000001 という名前のデバイスを設定し、デバイスを IoT Platform に接続します。
IntelliJ IDEA を開き、取得した tsp デモファイルをインポートします。
root-ca.crtルート証明書ファイルをプロジェクトの/dyy-gateway-tcu/src/main/resourcesディレクトリにインポートします。プロジェクトの
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/config/TcuProperties.javaファイルを開き、対応するデバイス接続パラメーターを変更します。次のパラメーターの値を実際の値に置き換え、ビジネス要件に基づいて他のパラメーターを設定する必要があります。
// ゲートウェイのエンドポイント。エンドポイントをゲートウェイのエンドポイントに置き換えます。 private String gatewayHost = "iot-*******.igw.iothub.aliyuncs.com"; // ゲートウェイのポート番号。ポート番号をゲートウェイのポート番号に置き換えます。 private Integer gatewayPort = 8999; // root-ca.crt ルート証明書ファイルが保存されているパス。 private String CA_PATH = "dyy-gateway-tcu/src/main/resources/root-ca.crt"; // VIN。17 文字を超えることはできません。VIN を車載デバイスの VIN に置き換え、VIN に基づいてデバイスを作成します。 private String vin = "device10000000001";パラメーター
例
説明
gatewayHost
iot-*******.igw.iothub.aliyuncs.comGB/T 32960 ゲートウェイのエンドポイント。
値は、作成したゲートウェイの [ゲートウェイ URL] 列のドメイン名と同じです。
gatewayPort
8999ゲートウェイエンドポイントのカスタムポート番号。デフォルト値:
8999。値は、作成したゲートウェイの [ゲートウェイ URL] 列のポート番号と同じです。
CA_PATH
dyy-gateway-tcu/src/main/resources/root-ca.crtプロジェクトに
root-ca.crtルート証明書ファイルが保存されている絶対パス。vin
device10000000001VIN。値は、追加したゲートウェイデバイスの VIN と同じです。
プロジェクトの
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/handler/BusinessHandler.javaファイルには、車両ログイン、ハートビート送信、リアルタイムデータ送信、車両登録解除を実装するために使用されるコードが含まれています。ファイルを修正して、より多くの機能を実装できます。
デバイス側プログラムを実行する
IntelliJ IDEA を開き、[ファイル] > [プロジェクト構造] を選択します。
[project SDK 1.8] を選択し、[適用] をクリックします。

[OK] をクリックします。
TcuApplication.javaファイルのメインプログラムを実行します。デバイスと IoT Platform 間の双方向検証が成功しました。デバイスが接続されています。

実行ログを表示する
デバイス操作ログ
デバイス側プログラムが実行されると、プログラムはアップストリームおよびダウンストリームデバイスパケットの詳細を出力します。
次のコードは、デバイスログインリクエストを含むパケットを示しています。パケットの 3 番目と 4 番目のバイト (
01 fe) は、デバイスログインリクエストを示しています。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 ee |7890... | +--------+-------------------------------------------------+----------------+次のコードは、IoT Platform からデバイスへの応答を含むパケットを示しています。パケットの 3 番目と 4 番目のバイト (
01 01) は、デバイスが IoT Platform にログインしていることを示しています。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 11 |7890... | +--------+-------------------------------------------------+----------------+次のコードは、ハートビート送信データを含むパケットを示しています。パケットの 3 番目と 4 番目のバイト (
07 fe) は、アップストリームハートビートが送信されたことを示しています。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+次のコードは、ハートビート送信パケットに対する IoT Platform からの応答を含むパケットを示しています。パケットの 3 番目と 4 番目のバイト (
07 01) は、ダウンストリームハートビートを示しています。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+次のコードは、デバイスによって送信されたリアルタイムデータを含むパケットを示しています。パケットの 3 番目と 4 番目のバイト (
02 fe) は、リアルタイムデータの送信を示しています。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 02 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 14 17 05 06 10 23 23 08 01 |00001.......##..| |00000020| 01 00 05 00 06 00 04 00 07 01 00 0a df |............. | +--------+-------------------------------------------------+----------------+
IoT Platform ログ
IoT Platform コンソール で、管理するインスタンスの [インスタンスの詳細] ページに移動します。左側のナビゲーションウィンドウで、[メンテナンス] > [デバイスログ] を選択します。[デバイスログ] ページで、デバイスによって送信されたデータを表示します。
詳細については、「IoT プラットフォームログ」をご参照ください。
