2024年12月10日 13:47:41 来源:厦门星纵物联科技有限公司 >> 进入该公司展台 阅读量:11
目录
本文档主要介绍如何将星纵物联网关通过MQTT方式对接到阿里云的物联网平台,并且通过MQTT主题将传感器数据发布到平台。在进行本文档操作之前,需要先参考用户手册将LoRaWAN®节点添加至网关内置网络服务器中并成功令节点设备上线及数据正常上报。
阿里云企业物联网平台地址:
在左侧导航栏,选择“设备管理 > 产品”,单击创建产品。所属品类、节点类型、数据格式参照下图设置,其他根据实际需求填写。
设备归属于某个产品下的具体设备。阿里云物联网平台为设备颁发产品内的证书 DeviceName。
网关MQTT接入物联网平台前需要提前获取MQTT接入信息(MQTT服务器地址、MQTT服务端口、客户端ID、用户名/密码)。
选择“设备管理 > 设备”,查看对应设备,点击MQTT连接参数,即可获取接入信息。
注意:阿里云平台采用一机一密制度,如果网关上需要添加新的传感器设备,需要先创建新的应用及MQTT连接,并使新添加的设备绑定新创建的应用,该应用使用阿里云上新的设备MQTT连接信息进行连接。
注意:若未连接成功MQTT至阿里云,请先确认网关的网络状态及连接信息是否填写正确。
网关作为MQTT客户端接入物联网平台,可以发布和订阅Topic,如下介绍网关如何通过发布Topic将传感器数据上报到物联网平台。
//gp5olLRZ1dO/24E124983C521736/user/update
在网关的内置NS解析
点击“Network Srever>载荷编码器”,填写对应的解码函数后点击保存。
在对应的的传感器中选择上一步创建的载荷。
解析后数据上报如下
如下介绍网关如何通过在物联网平台上推送MQTT至设备终端。
/gp5olLRZ1dO/$deveui/user/get
其中$deveui字段代替原有的设备名称字段
消息内容示例
{“confirmed”: true,”fport”: 85,”data”: “CQEA/w==”}
内容解析:下发端口为 85,内容为 CQEA/w==,启用确认包
注意:下发内容只能使用 Base 64 格式,可以通过 Hex 转 Base64 进行数据转换。
如下介绍如何通在物联网平台快速创建物模型并完成物模型测试。
示例:如图创建一个距离物模型,其中标识符为distance。确认完成后点击左下角的发布上线并确定,完成自定义功能的物模型添加。
示例topic为:/sys/gp5olLRZ1dO/24E124983C521736/thing/event/property/post
注意:上报格式中参数的标识需要与阿里云平台创建物模型时的标识符一致。
function Decode(fPort, bytes) {
var decoded = {};
for (var i = 0; i < bytes.length; ) {
var channel_id = bytes[i++];
var channel_type = bytes[i++];
// BATTERY
if (channel_id === 0x01 && channel_type === 0x75) {
decoded.battery = bytes[i];
i += 1;
}
// DISTANCE
else if (channel_id === 0x03 && channel_type === 0x82) {
decoded.distance = readUInt16LE(bytes.slice(i, i + 2));
i += 2;
}
// REMAINING AMOUNT
else if (channel_id === 0x04 && channel_type === 0xd6) {
decoded.remaining = bytes[i];
i += 1;
} else {
break;
}
}
var result = {
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": {
"distance": {
"value": decoded.distance,
}
},
"method": "thing.event.property.post"
};
return result;
}
/* ******************************************
* bytes to number
********************************************/
function readUInt16LE(bytes) {
var value = (bytes[1] << 8) + bytes[0];
return value & 0xffff;
}