天天看點

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

網關與子裝置開發實戰(java)

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

在很多物聯網場景中,終端裝置本身沒有連接配接網際網路能力,那麼資料如何上雲呢?

IoT物聯網平台支援裝置MQTT直連,也支援的裝置挂載到網關上,作為網關的子裝置,由網關代理接入IoT物聯網平台。

這時候網關裝置除了自身作為IoT網關裝置(擁有身份三元組)與IoT物聯網平台建立MQTT連接配接,收發資料,還要負責子裝置的管理,包括:

  • 網關添加子裝置網絡拓撲關系
  • 子裝置複用網關mqtt連接配接通道上線
  • 網關把子裝置資料上報到雲端
  • 網關接收指令,并轉發給子裝置
  • 網關上報子裝置下線
  • 網關删除子裝置網絡拓撲關系

網關和子裝置通信的協定由本地網絡決定,可以是http,mqtt,ZigBee,Modbus,BLE,OPC-UA等,這部分邏輯由網關實作,IoT SDK不包含這部分功能。

1.建立網關産品

建立網關産品時,需要選擇節點類型:網關,即指可以挂載子裝置的直連裝置。網關可以管理子裝置、可以維持與子裝置的拓撲關系,并将該拓撲關系同步到雲端。

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

網關與子裝置的拓撲關系如下圖所示:

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

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)           

網關上線可以在控制台看到,裝置狀态是 線上

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

3.添加網絡拓撲關系

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewayAddSubDevice(
    deviceInfo, //子裝置身份
    SubDeviceConnectListener)           
IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

4.子裝置上線

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceLogin(
    deviceInfo,  //子裝置身份
    ISubDeviceActionListener)           
IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

子裝置檢視到接入官網的資訊

IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

5.子裝置上報資料

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDevicePublish(
    topic, //子裝置topic
    data, //資料
    deviceInfo, //子裝置身份
    ISubDeviceActionListener)           
IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)

6.子裝置訂閱主題

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceSubscribe(
    topic, //子裝置訂閱Topic
    deviceInfo, //子裝置身份
    ISubDeviceActionListener)           

7.子裝置下線

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceLogout(
    deviceInfo, //子裝置身份
    ISubDeviceActionListener)           

8.子裝置網絡拓撲删除

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewayDeleteSubDevice(
    deviceInfo, //子裝置身份
    ISubDeviceRemoveListener)           
IoT物聯網平台:網關與子裝置開發實戰網關與子裝置開發實戰(java)