概述
子设备其实就是自身不能连接到阿里云物联网平台,需要借助网关来完成连接,本文主要介绍使用nodejs实现子设备通过网关接入阿里云物联网平台。
实现步骤:
- 首先,需在物联网平台上创建网关和子设备
- 开发网关设备端SDK,实现网关直连物联网平台
- 再由网关向物联网平台上报网关与子设备的拓扑关系
- 通过网关上报子设备证书(一机一密方式)或者子设备动态注册的认证方式,物联网平台校验子设备的身份和该子设备与网关的拓扑关系。我们这里使用的是一机一密的方式。
所有校验通过,才会建立子设备逻辑通道,并绑定至网关物理通道上,实现子设备通过网关,与物联网平台建立连接,并进行通信。
网关和子设备的创建
详细的创建过程这里就不多说了,前面也已经有讲到,官方的开发文档也有。
物联网平台创建子设备时最好使用子设备的MAC地址或者SN号作为子设备的Devicename
只把创建的结果给展示一下如图:
网关连接物联网平台
const iot = require('alibabacloud-iot-device-sdk');
let count = 0;
const gateway = iot.gateway({
"ProductKey": "a1oig7z1FNf",
"DeviceName": "mys-6ulx-mqtt",
"DeviceSecret": "WhdHNC3LIHmj7n2UEjIsQKDNBzQozyZS"
});
gateway.on('connect',()=>{
console.log('>>>>>connect')
})
注意这里使用的是gateway网关连接,而不是device设备连接
这是可以看到网关已经是在线状态了。
设置网关与子设备之间的拓扑关系
设置网关与子设备的拓扑关系有两种方法:
1、直接在设备里找到网关设备,点击查看,在子设备管理中点击添加子设备,填写子设备信息,完成子设备的添加与删除。
2、直接在网关设备端使用命令添加和删除拓扑关系
由于我们这里使用的是第一种,只把第二种的介绍在这里写下。
配置子设备的上线
const iot = require('alibabacloud-iot-device-sdk');
let count = 0;
const gateway = iot.gateway({
"ProductKey": "a1oig7z1FNf",
"DeviceName": "mys-6ulx-mqtt",
"DeviceSecret": "WhdHNC3LIHmj7n2UEjIsQKDNBzQozyZS"
});
gateway.on('connect',()=>{
console.log('>>>>>connect')
//子设备上线
sub1 = gateway.login(
{"productKey":"a1qfDPbUCyE",
"deviceName":"testdevice2",
"deviceSecret":"IPyNvnrQV3bFQFmZXH1ihWcprA6fyigM"},
(res) => {
console.log('>>>>>login', res);});
})
可以看出这是网关和子设备都已经连上了物联网平台。
子设备上线成功后就可以进行之前的一些方法,订阅和发布以及物模型的上报等操作。