このトピックでは、ゲートウェイをIoT Platformに接続するようにデバイスSDKを設定する方法について説明します。
前提条件
次の操作が完了しました。
- ゲートウェイとサブデバイスの作成: IoT Platformでゲートウェイとサブデバイスを作成し、サブデバイスに関する証明書情報を取得します。
- SDKの初期化: サンプルコードを含むSDKパッケージをインポートします。
ゲートウェイのデバイスSDKの設定
この例では、java/src/main/java/com/aliyun/iot/api/common/deviceApiディレクトリのDeviceTopoManagerファイルに、ゲートウェイをIoT Platformに接続するために使用されるサンプルコードが含まれています。
- GWproductKey、GWdeviceName、およびGWdeviceSecretパラメーターを使用して、ゲートウェイの証明書情報を指定します。
このパラメーターの値は、IoT Platformコンソールの [デバイスの詳細] ページで確認できます。
プライベート静的文字列regionId = "cn-shanghai"; プライベート静的最終文字列TAG = "TOPO"; // ゲートウェイに関する証明書情報。 プライベート静的文字列GWproductKey = "a1Bxp **********"; プライベート静的文字列GWdeviceName = "XMtrv3y *************"; プライベート静的文字列GWdeviceSecret = "19xJNybifnmgc **************"; public static void main(String[] args) { /** * MQTT接続に関する情報。 */ DeviceTopoManagerマネージャー=新しいDeviceTopoManager(); /** * サーバー上のJava HTTPクライアントはTSLv1.2をサポートしています。 */ System.setProperty("https.protocols" 、"TLSv2"); manager.init(); }
- channelHostパラメーターを使用してMQTTエンドポイントを設定し、MQTT接続を確立します。
MQTTエンドポイントの詳細については、「インスタンスのエンドポイントの管理」をご参照ください。
public void init() { LinkKitInitParams params = new LinkKitInitParams(); /** * MQTT初期化のパラメータを指定します。 */ IoTMqttClientConfig config = new IoTMqttClientConfig(); config.productKey = GWproductKey; config.de viceName = GWdeviceName; config.de viceSecret = GWdeviceSecret; config.channelHost = GWproductKey + ".iot-as-mqtt" + regionId + ".aliyuncs.com:1883"; /** * オフラインメッセージを受信するかどうかを指定します。 * MQTT接続に対応するcleanSessionフィールド。 */ config.receiveOfflineMsg = false; params.mqttClientConfig = config; ALog.setLevel(LEVEL_DEBUG); ALog.i(TAG、"mqtt connection info=" + params); /** * 初期化を設定し、デバイスに関する証明書情報を渡します。 */ DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.productKey = GWproductKey; deviceInfo.de viceName = GWdeviceName; deviceInfo.de viceSecret = GWdeviceSecret; params.deviceInfo = deviceInfo; /**接続を確立します。** / LinkKit.getInstance().init(params, new ILinkKitConnectListener() { public void onError(AError aError) { ALog.e(TAG、"Init Error error=" + aError); } public void onInitDone(InitResult initResult) { ALog.i(TAG, "onInitDone result=" + initResult); // ゲートウェイのトポロジ関係を照会し、ゲートウェイと指定されたサブデバイスの間にトポロジ関係が存在するかどうかを確認します。 // トポロジ関係が存在する場合、サブデバイスをIoT Platformに接続します。 getGWDeviceTopo(); // ゲートウェイがサブデバイスの証明書を取得したsub-device.IfのDeviceSecretを取得するためにサブデバイスを動的に登録し、この手順をスキップします。 // IoT Platformでサブデバイスを作成するときは、DeviceNameパラメーターをサブデバイスのシリアル番号またはMACアドレスに設定します。 gatewaySubDevicRegister(); // トポロジ関係のサブデバイスに関する情報。 gatewayAddSubDevice(); } }); }
接続のテスト
デバイスSDKでゲートウェイに関する情報を設定した後、ゲートウェイとIoT Platform間の接続をテストできます。
- DeviceTopoManager.javaファイルを実行します。
- IoT Platformコンソールにログインし、管理するインスタンスをクリックし、左側のナビゲーションウィンドウで を選択します。
- [デバイス] ページで、IoT Platformに接続したゲートウェイを見つけ、ゲートウェイのステータスを確認します。 ゲートウェイのステータスがオンラインの場合、ゲートウェイはIoT Platformに接続されています。