文档首页> 设备发放 IoTDP> 最佳实践> 设备厂商多实例接入方案
更新时间:2023-08-11 GMT+08:00
分享

设备厂商多实例接入方案

场景说明

随着厂商IoT设备的不断增加,或者厂商设备本来就面向多个销售中心(不同的销售中心有着自己的IoT接入实例),面对这样的场景,厂商在设备出厂的时候不知道设备最终需要连接到哪个IoT接入实例,设备出厂后不希望再对设备进行二次烧录。为此,华为IoT解决方案推出设备发放服务,设备出厂统一烧录设备发放的地址,通过在设备发放服务预置不同的发放策略,设备上电后自动发放到对应的IoT接入实例,并把对应的IoT接入实例地址下发给设备,设备就可以和目的接入实例实现通信。

前提条件

  • 已注册华为云官方帐号设备发放服务。未注册可单击注册页面完成注册。
  • 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则无法使用设备接入功能。
  • 已开通设备接入服务。未开通则访问设备接入服务,单击“立即使用”后开通该服务。开通设备接入服务,进入到设备发放服务页面,单击“授权开通”对服务进行授权。
  • 对应的设备接入服务已经上传了产品。

整体方案

基于MQTT协议的上行请求引导和下行接受引导信息的业务定义如下:

业务场景

通信Topic

报文Payload

设备请求引导消息

$oc/devices/{device_id}/sys/bootstrap/up

/

服务接收引导信息

$oc/devices/{device_id}/sys/bootstrap/down

{ "address": "10.0.0.1:8883" }

业务流程

  1. 创建策略。其中以静态策略为例。
  2. 注册设备。注册MQTT协议的设备,体验发放业务。可以注册单个,也可以批量注册设备。
  3. 设备请求引导。
  4. 设备接收信息,解析出IoT接入实例地址,与IoT接入实例1进行通信。
  5. 动态扩容设备接入实例,创建对应实例的资源空间,在对应资源空间下上传产品。
  6. 注册设备。选择对应实例的产品创建设备。
  7. 新增策略。添加新实例的静态策略,以不同的关键字命名静态策略。
  8. 设备请求引导。
  9. 设备接收信息,解析出IoT接入实例地址,与IoT接入实例2进行通信。
  10. 应用主动设备发放控制台与设备侧通信。

创建策略

有两种使用场景:设备发放控制台

  1. 用户预先开通了多个实例,通过设备的不同销售数据,根据对应的策略,设备上电自动发放到对应的实例。
  2. 用户预先只开通一个实例,预先创建对应的策略把设备发放到当前实例。当对应实例达到上限,动态开通新的接入实例,用户删除当前策略,添加新的策略,把新上电的设备发放到新开通的实例。

本示例讲述的是第二种使用场景。

登录设备发放控制台,进入到策略页面的静态策略页面,单击添加实例,根据关键字发放到指定的IoTDA实例。

注册设备

本次以注册单个MQTT密钥设备为示例,登录设备发放控制台,进入到“设备”页面,单击“注册”,选择对应接入点的产品进行设备注册,设备名称为“Model1_001”,填写设备的密钥,发放策略选择“静态策略”,创建设备。

实际使用中,用户可以使用批量注册功能注册大量设备。下载批量注册模板,按照模板说明正确填写后上传批量注册文件以批量注册设备。建议每个设备名称的以策略的关键字开头(比如策略关键字为Model1,设备名称为Model1_XXX001)。

设备引导请求

终端节点

区域名称

区域

终端节点(Endpoint)

端口

协议

华北-北京四

cn-north-4

iot-bs.cn-north-4.myhuaweicloud.com

8883

MQTTS

下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。

用IDEA/Eclipse打开SDK代码工程,修改iot-device-demo目录下的DEMO示例“BootstrapSample”中的参数,其中deviceId和secret替换为注册设备中生成的设备ID和密钥即可,bootstrapUri为上述终端节点

运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在线。

收到设备发放下发的设备接入地址后,需要关闭设备侧的设备发放的连接,用的新的URL地址与设备接入通信,进行相关业务。

新增IoT接入实例

用户新增IoT接入实例,创建对应实例的资源空间,在对应资源空间下上传产品。

新增策略

当新的实例扩容后,添加新实例的静态策略,通不过不同的关键字命名关联新的实例。

然后按照上面的操作以新策略的名称注册设备,请求引导即可。

应用主动与设备通信

多实例场景下,当应用侧需要主动与设备侧通信时,比如主动下发命令,需要应用侧知道设备是在哪个实例上,应用要规划好每批命令设备发放哪个实例,在设备发放通过查询静态策略,找到对应设备名称的设备的实例ID,调用设备接入北向API下发命令需要指定实例ID。

分享:

    相关文档

    相关产品