设备厂商多实例接入方案
场景说明
随着厂商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" } |
业务流程
- 创建策略。其中以静态策略为例。
- 注册设备。注册MQTT协议的设备,体验发放业务。可以注册单个,也可以批量注册设备。
- 设备请求引导。
- 设备接收信息,解析出IoT接入实例地址,与IoT接入实例1进行通信。
- 动态扩容设备接入实例,创建对应实例的资源空间,在对应资源空间下上传产品。
- 注册设备。选择对应实例的产品创建设备。
- 新增策略。添加新实例的静态策略,以不同的关键字命名静态策略。
- 设备请求引导。
- 设备接收信息,解析出IoT接入实例地址,与IoT接入实例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。