Gateway and sub equipment development practice

ゲートウェイおよびサブデバイス開発の実践 (Java)

IoT (Internet of Things) の多くのシナリオでは、端末デバイス自体にインターネット接続の能力がない場合があります。その場合、データをどのようにクラウドへ送信すればよいのでしょうか。

IoT Platform は、デバイスの MQTT 直接接続をサポートするとともに、デバイスをゲートウェイに接続する方法もサポートしています。サブデバイスはゲートウェイの配下デバイスとして、ゲートウェイエージェントを介して IoT Platform にアクセスします。

このときゲートウェイデバイスは、ID 三要素を持って IoT Platform との MQTT 接続を確立し、データの送受信を行うだけでなく、サブデバイスの管理も担います。具体的には以下の機能が含まれます。

• ゲートウェイがサブデバイスのネットワークトポロジー関係を追加する

• サブデバイスがゲートウェイの MQTT 接続チャンネルを多重化してオンラインになる

• ゲートウェイがサブデバイスのデータをクラウドに上報する

• ゲートウェイが指示を受信し、サブデバイスに転送する

• ゲートウェイがサブデバイスのオフラインを上報する

• ゲートウェイがサブデバイスのネットワークトポロジー関係を削除する

ゲートウェイとサブデバイス間の通信プロトコルはローカルネットワークにより決定され、HTTP、MQTT、ZigBee、Modbus、BLE、OPC-UA などが使用できます。この部分のロジックはゲートウェイで実装され、IoT SDK にはこの機能は含まれていません。

1. ゲートウェイプロダクトの作成

ゲートウェイプロダクトを作成する際は、ノードタイプとして「ゲートウェイ」を選択する必要があります。ゲートウェイとは、サブデバイスをマウントできる直接接続デバイスのことです。ゲートウェイはサブデバイスを管理し、サブデバイスとのトポロジー関係を維持し、そのトポロジー関係をクラウドに同期します。

2. ゲートウェイデバイスのオンライン

LinkKitInitParams params = new LinkKitInitParams();

DeviceInfo gatewayInfo = new DeviceInfo();

gatewayInfo. productKey = gateway.productKey;

gatewayInfo. deviceName = gateway.deviceName;

gatewayInfo. deviceSecret = gateway.deviceSecret;

params. deviceInfo = gatewayInfo;

LinkKit.getInstance(). init(params, ILinkKitConnectListener)

オンラインになったゲートウェイはコンソールで確認でき、デバイスステータスがオンラインとなります。

3. ネットワークトポロジー関係の追加

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewayAddSubDevice(

DeviceInfo,//サブデバイス ID

SubDeviceConnectListener)

4. サブデバイスのオンライン

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewaySubDeviceLogin(

DeviceInfo,//サブデバイス ID

ISubDeviceActionListener)

サブデバイスが参照する公式ウェブサイトへのアクセス情報

5. サブデバイスからのデータ上報

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewaySubDevicePublish(

Topic,//サブデバイストピック

Data,//データ

DeviceInfo,//サブデバイス ID

ISubDeviceActionListener)

6. サブデバイスのトピックサブスクリプション

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewaySubDeviceSubscribe(

Topic,//サブデバイスサブスクリプショントピック

DeviceInfo,//サブデバイス ID

ISubDeviceActionListener)

7. サブデバイスのオフライン

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewaySubDeviceLogout(

DeviceInfo,//サブデバイス ID

ISubDeviceActionListener)

8. サブデバイスのネットワークトポロジーの削除

DeviceInfo deviceInfo = new DeviceInfo();

deviceInfo. productKey = productKey;

deviceInfo. deviceName = deviceName;

deviceInfo. deviceSecret = deviceSecret;

LinkKit.getInstance().getGateway().gatewayDeleteSubDevice(

DeviceInfo,//サブデバイス ID

ISubDeviceRemoveListener)

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.