このトピックでは、JT/T 808 ゲートウェイを使用してデバイスを IoT Platform に接続し、検証する方法について説明します。この例では、片方向認証を使用します。
前提条件
Exclusive Enterprise Edition インスタンスが購入済みであること。この例では、中国(上海)リージョンで購入された Exclusive Enterprise Edition インスタンスを使用します。詳細については、「Enterprise Edition インスタンスを購入する」をご参照ください。
背景情報
JT/T 808 ゲートウェイを使用して、伝送制御プロトコル(TCP)または Transport Layer Security(TLS)プロトコルを介してデバイスを IoT Platform に接続できます。 TCP ベースの接続は安全性があまり高くないため、TLS を使用することをお勧めします。 TLS 経由でデバイスを IoT Platform に接続する場合、サーバー側の片方向認証、デバイスの Online Certificate Status Protocol(OCSP)、デバイスとサーバー間の双方向セキュア接続、およびその他の機能を有効にできます。このトピックでは、デバイスで片方向認証を実行し、JT/T 808 ゲートウェイを使用して TLS または TCP 経由でデバイスを IoT Platform に接続する方法について説明します。
準備
この例では、Ubuntu 22.04 を実行するオペレーティングシステムをデバイスの開発環境として使用します。
TLS 経由でデバイスを IoT Platform に接続する(推奨)
カスタム証明書
この例では、カスタム証明書には、root-ca.crt という名前のルート証明書ファイル、server.key という名前のサーバー側の秘密鍵ファイル、および server.crt という名前のサーバー側の証明書ファイルが含まれています。
OpenSSL を使用してカスタム証明書を生成できます。証明書の生成方法の詳細については、「カスタム証明書を生成する」をご参照ください。
ゲートウェイを作成する
IoT Platform コンソール にログインします。
IoT Platform コンソールの左上隅で、IoT Platform がアクティブになっているリージョンを選択します。
[概要] ページで、Exclusive Enterprise Edition インスタンスのカードをクリックします。
左側のナビゲーションウィンドウで、[デバイス] >[ゲートウェイ] を選択します。次に、[ゲートウェイの追加] をクリックします。
[ゲートウェイの追加] ダイアログボックスで、次の図に示すようにパラメーターを設定します。 [サーバー証明書の秘密鍵] パラメーターを
server.keyファイルの内容に設定し、[サーバー証明書] パラメーターをserver.crtファイルの内容に設定して、[OK] をクリックします。詳細については、「JT/T 808 ゲートウェイを作成する」をご参照ください。

[ゲートウェイ] ページで、作成したゲートウェイを見つけ、ゲートウェイの [ゲートウェイ URL] 列にあるエンドポイントとポート番号をコピーします。

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

次の図に示すように、テンプレートの [製造元 ID]、[端末モデル]、および [端末 ID] 列に追加するデバイスの ID 情報を入力し、ファイルを保存します。
詳細については、「JT/T 808 ゲートウェイを作成する」をご参照ください。

デバイスの一括追加ファイルをアップロード[OK] ダイアログボックスに戻り、 をクリックし、保存したファイルを IoT Platform コンソールにアップロードして、 をクリックします。

デバイスの ID 情報がインポートされると、IoT Platform はデバイスを作成し、アップロードされた 製造元 ID、端末モデル、および 端末 ID パラメーターの値を組み合わせて DeviceName を作成します。DeviceName は
${Manufacturer ID}_${Terminal Model}_${Terminal ID}フォーマットです。 デバイスに関する情報は、[デバイス] ページに表示されます。
デバイス側プログラムを開発する
IoT Platform コンソールでデバイスを作成したら、デバイスを IoT Platform に接続するためのデバイス側プログラムを開発する必要があります。 IoT Platform は、JT/T 808 プロトコルをサポートする C 用 SDK を提供しています。この例では、C 用 SDK を使用して AliyunIoT_TestModel_device1 という名前のデバイスを開発し、デバイスを IoT Platform に接続します。
JT/T 808 をサポートする C 用 SDK のパッケージをダウンロードし、パッケージを
jt808-c-sdkフォルダに解凍します。jt808-c-sdk ディレクトリにある
jt808_tls_demo.cファイルを開き、デバイスのアクセス情報と認証情報を変更します。説明jt808_tls_demo.cファイルは、TLS 経由でデバイスを IoT Platform に接続するために使用されます。...... /* 省、市、製造元、モデル、端末 ID、ナンバープレートの色、ナンバープレート番号など、実際のデバイス情報を指定します。 */ static jt808_register_t info = { .province = 0x1234, .city = 0x4567, .manufacturer = "AliyunIoT", .model = "TestModel", .terminal = "device1", .colour = 1, .lisence = "Zhejiang C*****", }; /* デバイスにバインドされている携帯電話番号を指定します。 * / static char *moible_num = "1*********8"; /* ゲートウェイのエンドポイントとポート番号を指定します。 * / static char *host = "iot-0******.igw.iothub.aliyuncs.com"; static uint16_t port = 7999; /* カスタムルート証明書を指定します。 * / const char *jt808_ca_cert = \ { \ "-----BEGIN CERTIFICATE-----\r\n" "MIIDR*************************************************ZIhvcNAQEL\r\n" "BQAwM*************************************************ANBgNVBAMM\r\n" "BklvV*************************************************MxCzAJBgNV\r\n" "BAYTA*************************************************QgQ0EwggEi\r\n" "MA0GC*************************************************S8fWxBF+lw\r\n" "8GKH7*************************************************3Xco/COMjP\r\n" "Q69QH*************************************************wuYc0WMjlS\r\n" "cNO7G*************************************************BABPEIJeLR\r\n" "c6rJ7*************************************************F8nDOm0kUd\r\n" "kvAdK*************************************************t6BEh9AgMB\r\n" "AAGjU*************************************************NVHSMEGDAW\r\n" "gBT4S*************************************************0GCSqGSIb3\r\n" "DQEBC*************************************************+I42UNjbJa\r\n" "ZP9bn*************************************************G+S/Tv6BEn\r\n" "2v1/V*************************************************zNWlwapdvp\r\n" "DRMmf*************************************************Vh/FVBa7gn\r\n" "9DWlU*************************************************AGz0HkVQq6\r\n" "Ks4UI***************************Vzd+\r\n" "-----END CERTIFICATE-----\r\n" }; ......パラメーター
説明
province
デバイスが配置されている省と市。JT/T 808-2019 の要件を満たしている必要があります。
city
manufacturer
IoT Platform コンソールでゲートウェイにデバイスを追加したときに、デバイスに指定した製造元 ID、端末モデル、および端末 ID パラメーターの値。
model
terminal
colour
ナンバープレートの色、ナンバープレート番号、およびデバイスが属するユーザーの携帯電話番号。ナンバープレートの色とナンバープレート番号は、JT/T 808-2019 の要件を満たしている必要があります。
lisence
moible_num
host
JT/T 808 ゲートウェイのエンドポイント。作成したゲートウェイの [ゲートウェイ URL] 列のエンドポイントです。
port
カスタムポート番号。デフォルト値:
7999。jt808_ca_cert
root-ca.crtファイルの内容。Ubuntu にログインし、変更した
jt808-c-sdkフォルダをアップロードします。
/jt808-c-sdkルートディレクトリで、makeコマンドを実行してサンプルプログラムをコンパイルします。make clean make生成されたサンプルプログラム
jt808-tls-demoは、./outputディレクトリに保存されます。サンプルプログラムを実行します。
./output/jt808-tls-demoプログラムが正常に実行されると、デバイスが接続され、次の図に示すようにデータの送信が開始されます。

IoT Platform コンソール で、管理するインスタンスの [インスタンスの詳細] ページに戻ります。左側のナビゲーションウィンドウで、[デバイス] > [デバイス] を選択します。 [デバイス] ページで、IoT Platform に接続するデバイスを見つけて、デバイスのステータスを表示します。 [デバイスのステータス] 列の値が [オンライン] の場合、デバイスは IoT Platform に接続されています。

左側のナビゲーションウィンドウで、[メンテナンス] > [デバイスログ] を選択します。プロダクトを選択し、[デバイス-クラウド メッセージ] タイプのすべてのメッセージを表示します。

TCP 経由でデバイスを IoT Platform に接続する(非推奨)
ゲートウェイを作成し、デバイスを追加する
JT/T 808 ゲートウェイを作成する: 次の図に示すように、必要なパラメーターを設定します。

[ゲートウェイ] ページで、作成したゲートウェイを見つけ、ゲートウェイの [ゲートウェイ URL] 列にあるエンドポイントとポート番号をコピーします。

JT/T 808 ゲートウェイにデバイスを追加する: 次の図に示すように、デバイス情報を指定してデバイスを追加します。

デバイス側プログラムを開発する
IoT Platform は、JT/T 808 プロトコルをサポートする C 用 SDK を提供しています。この例では、C 用 SDK を使用して AliyunIoT_TestModel_device1 という名前のデバイスを開発し、デバイスを IoT Platform に接続します。
JT/T 808 をサポートする C 用 SDK のパッケージをダウンロードし、パッケージを
jt808-c-sdkフォルダに解凍します。jt808-c-sdk ディレクトリにある
jt808_basic_demo.cファイルを開き、デバイスのアクセス情報と認証情報を変更します。説明jt808_basic_demo.cファイルは、TCP 経由でデバイスを IoT Platform に接続するために使用されます。...... /* 省、市、製造元、モデル、端末 ID、ナンバープレートの色、ナンバープレート番号など、実際のデバイス情報を指定します。 * / static jt808_register_t info = { .province = 0x1234, .city = 0x4567, .manufacturer = "AliyunIoT", .model = "TestModel", .terminal = "device1", .colour = 1, .lisence = "Zhejiang A*****", }; /* デバイスにバインドされている携帯電話番号を指定します。 * / static char *moible_num = "1**********"; /* ゲートウェイのエンドポイントとポート番号を指定します。 * / static char *host = "iot-0******v-0****0.igw.iothub.aliyuncs.com"; static uint16_t port = 7999; ......Ubuntu にログインし、変更した
jt808-c-sdkフォルダをアップロードします。/jt808-c-sdkルートディレクトリで、makeコマンドを実行してサンプルプログラムをコンパイルします。make clean make生成されたサンプルプログラム
jt808-basic-demoは、./outputディレクトリに保存されます。サンプルプログラムを実行します。
./output/jt808-basic-demoプログラムが正常に実行されると、デバイスが接続され、次の図に示すようにデータの送信が開始されます。

IoT Platform コンソール で、管理するインスタンスの [インスタンスの詳細] ページに戻ることができます。その後、コンソールでデバイスのステータスとメッセージログを表示できます。