关于物联网:IoT物联网平台网关与子设备开发实战实践类

34次阅读

共计 2378 个字符,预计需要花费 6 分钟才能阅读完成。

网关与子设施开发实战(java)

在很多物联网场景中,终端设备自身没有连贯互联网能力,那么数据如何上云呢?
IoT 物联网平台反对设施 MQTT 直连,也反对的设施挂载到网关上,作为网关的子设施,由网关代理接入 IoT 物联网平台。
这时候网关设施除了本身作为 IoT 网关设施 (领有身份三元组) 与 IoT 物联网平台建设 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, // 子设施身份
    SubDeviceConnectListener)

4. 子设施上线

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceLogin(
    deviceInfo,  // 子设施身份
    ISubDeviceActionListener)

子设施查看到接入官网的信息

5. 子设施上报数据

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDevicePublish(
    topic, // 子设施 topic
    data, // 数据
    deviceInfo, // 子设施身份
    ISubDeviceActionListener)

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)

物联网平台产品介绍详情:https://www.aliyun.com/produc…

           阿里云物联网平台客户交换群



正文完
 0