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

网关与子设施开发实战(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…

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



评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理