网关及其连接的子设备如何接入物联网平台 您所在的位置:网站首页 M5311模块MQTT协议连接阿里云物联网平台 网关及其连接的子设备如何接入物联网平台

网关及其连接的子设备如何接入物联网平台

2024-07-01 03:12| 来源: 网络整理| 查看: 265

初始化

建议网关需要维护的数据结构(由网关厂商实现):

网关本地拓扑列表(LocalTopoList):用于记录网关已经告知物联网平台代理的子设备、以及已代理子设备的身份认证信息,这些信息是需要持久化的,也即网关reboot之后这些信息仍然存在。 网关已连接子设备列表(LocalDevList):表示当前已经连接到了网关所在接入网络的子设备,这些子设备可能已经被网关告知物联网平台,也可能未被告知物联网平台,该列表无需持久化。 网关已本地删除子设备列表(RemovedDevList):表示在网关与物联网平台断开连接期间,用户通过网关的某种操作本地删除的子设备列表,这些被删除的设备网关尚未告知物联网平台,该列表需要持久化。

网关上电之后需要执行如下操作:

构建这些数据结构。 去获取网关的IP地址。 当设备获取到IP地址之后,调用SDK的接口去连接物联网平台。 子设备身份认证信息获取

很多的子设备是无法存储阿里云物联网平台分配的身份认证信息的,因此子设备的身份认证信息都需要保存在网关上。

子设备往往有自己定义的产品型号、设备唯一标识(MAC地址、序列号等),因此网关上需要实现子设备产品型号到物联网平台ProductKey、ProductSecret的映射,也需要实现基于设备的唯一标识到物联网平台DeviceName、DeviceSecret的映射。子设备身份认证信息获取

如果网关在部署时,可以预先把将会连接的子设备的型号、设备标识以及与其对应的身份认证信息进行输入,那么当网关通过接入网络接入一个新的子设备时,调用SDK提供的接口告知物联网平台对该子设备进行代理。

如果网关的使用者无法将将要连接的子设备的型号、设备标识与其对应的身份认证信息进行预配置,那么网关就需要实现接入了一个子设备(将会获取到型号和设备DevID)时如何获取该子设备的身份认证的逻辑。阿里云也提供了一种方案供网关厂商参考和选用:

网关的固件需要记录自己支持的子设备型号与该子设备产品的ProductKey、ProductSecret的映射表,该映射表由网关厂商自行实现。 将设备的标识(DevID)用做设备在阿里云物联网平台的DeviceName,网关厂商需要将设备的标识预先上传到物联网平台,此时设备的标识在物联网平台起到一个白名单的作用。 当网关通过接入网络连接一个新的子设备时,通过网关与子设备之间定义的协议获取设备的型号和设备标识,获得该产品对应的ProductKey、ProductSecret,然后调用SDK的接口使用ProductKey、ProductSecret和DeviceName去物联网平台判断该子设备是否位于白名单中,如果是,那么物联网平台将把子设备的DeviceSecret发送给网关。 注意 物联网平台将子设备的DeviceSecret发送给网关后,网关再次来获取DeviceSecret将会失败。 当网关收到物联网平台返回的子设备的DeviceSecret之后,就具有了该子设备完整的身份认证信息,再调用SDK提供的接口将子设备添加到物联网平台。 注意 网关需要将子设备的DeviceSecret持久化,也即网关重启之后无需再次到物联网平台去获取子设备的DeviceSecret。 网关与物联网平台建立连接之后的逻辑

当网关连接到物联网平台之后,SDK会告知网关连接已建立,此时建议网关执行以下操作:

判断子设备是否已被用户通过物联网平台删除

场景描述:网关关机,然后用户通过手机APP或者物联网平台的接口将某个子设备从网关下删除,此时物联网平台将会把该子设备从网关的拓扑表删除,但是网关因为关机接收不到这个信息,因此网关还会认为这个设备已经被添加到了物联网平台。

网关调用SDK的接口从物联网平台拉取网关的拓扑表,对比网关上本地的拓扑表,如果有某个子设备在网关本地的拓扑表中、而不在云端获取的拓扑表中,表示用户已经通过物联网平台提供的接口删除了这个子设备,网关需要将将该子设备从网关本地拓扑表中移除,并将该子设备从网关的接入网络删除。

已代理子设备上线通知

调用SDK接口通知物联网平台设置当前依然存在于网关本地拓扑表中的在线子设备为在线状态。离线的子设备由于在网关离线时物联网平台已将所有子设备设置离线,所以不需要通知物联网平台。

未代理子设备添加通知

如果一个设备已经连接到了网关的接入网络,但是并不在网关的本地拓扑表中,此时可以调用SDK提供的接口告知物联网平台网关需要代理该子设备。当子设备代理成功之后,将该设备添加到网关的本地拓扑表中。

告知物联网平台移除已删除子设备

场景描述:网关与物联网平台的连接断开,例如网关连接路由器的网线被拔掉,然后用户又通过网关的web server、Telnet、或者某种操作将某个子设备删除,此时物联网平台不知道设备被删除。

将已删除列表中的子设备调用SDK的接口告知物联网平台删除该子设备的拓扑,然后将子设备从网关本地的已删除子设备列表中删除。

网关与物联网平台的连接断开

当网关与物联网平台的连接断开后,网关如果有子设备被用户在网关上删除(不是通过物联网平台执行的删除),网关需要将这些子设备记录到网关的本地已删除子设备列表,并把该子设备从网关的本地拓扑表和已连接子设备表中删除。

网关添加了新子设备

场景描述:网关接入的网络中增加了一个新的子设备。

网关接入的网络中添加了新的子设备时,需要将子设备加入到网关的已连接子设备列表。

如果网关与物联网平台的连接是已建立,则调用SDK的接口告知物联网平台添加子设备。如果添加成功: 调用SDK的接口告知物联网平台将该子设备设置为在线状态。 将该子设备也加入网关的本地拓扑表。 如果网关尚未建立与物联网平台的连接,无需做特殊操作,等待建立连接之后通知物联网平台去添加子设备以及上报子设备状态。 网关删除子设备

场景描述:当用户通过网关提供的命令或者某种操作方式将某个子设备从网关的接入网络删除。

首先,将子设备从已连接子设备列表删除。 其次,如果子设备在网关的本地拓扑表中,将子设备加入已删除子设备列表。 然后,如果网关与物联网平台已建立连接,告知物联网平台去删除该子设备,并将该设备从已删除子设备列表删除;如果网关与物联网平台未建立连接,则无需处理。 子设备上线

场景描述:一个曾经连接到网关的子设备连接到网关的接入网络。

首先将其加入网关的已连接子设备列表,并设置子设备的状态为在线状态。 如果网关与物联网平台处于连接状态: 如果子设备不在网关的本地拓扑表中,调用SDK的接口让物联网平台将该子设备添加到网关的拓扑表中,添加成功将该子设备加入网关的本地拓扑表,再调用SDK的接口告知物联网平台该子设备上线。 如果子设备在网关的本地拓扑表中,就调用SDK的接口告知物联网平台子设备上线。 子设备离线 设置子设备的状态为离线状态。 如果子设备位于网关的本地拓扑表中,且网关与物联网平台处于连接状态,则调用SDK的接口告知物联网平台设备离线。 子设备数据上报

网关收到子设备的数据时,使用MQTT Topic或者基于物模型的方式对数据编码后发送到物联网平台。

来自云端子设备数据处理

网关收到物联网平台发送给某个子设备的数据,需要将数据解析出来之后,再发送给子设备,该数据如何编码以及如何发送给子设备由网关实现。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有