星纵网关BACnet对接楼宇系统
目录
概述
星纵物联LoRaWAN®网关能够对LoRaWAN®终端节点的上报数据进行解码,并将终端数据转发到BMS系统或BACnet设备使用的BACnet对象,从而便捷的将LoRaWAN®终端设备集成到楼宇管理系统中。本文以WT30X温控面板为例,测试如何通过BACnet实现数据上报和下发控制。
准备
- 星纵物联LoRaWAN®网关(60.0.044版本参考以下内容,60.0.0.45参考最下面的补充内容)
- LoRaWAN®节点设备
- BACnet客户端软件:SetupYabe(如出现不可下载情况,推荐优先使用谷歌浏览器打开)
步骤
1. 配置应用
- 进入“Network Server->应用”,若之前没有创建应用,则点击”+”添加应用。
- 创建“名称”和填写“描述”,两者均可自定义。
3.若之前已有创建应用,则点击”编辑”应用。
4.配置参数后先保存设置。
2. BACnet 对接(温控器WT30x设备)
本次以WT30x温控器为例。
注意:具体BACnet对接根据所需要的传感器去操作,本文仅以WT30x为例作为参考。
- 进入Network Server–>载荷边解码器–>自定义载荷边解码器,点击“+”。
- 打开编解码器的代码链接Milesight/SensorDecoders。
将decoder.js代码复制到解码函数里面,将encoder.js代码复制到编码函数里面。注意:(1)图中的模板要选择对应的传感器型号(2)目前只有部分传感器产品有encoder.js文件,若网址没有,可自行进行编写。
- 进入“Network Server->设备”,点击添加,添加对应的设备信息,选择设备对应的载荷解码器。
- 进入Network Server–>数据流,点击“详情”查看解码后的结果。
- 进入Network Server–>应用,在数据传输选择类型为BACnet/IP,点击保存
- 进入“协议集成”–>BACnet Server–>Server,填写UDP端口、设备ID(需要注意ID的唯一性)、设备名称,点击保存。
- 进入“协议集成”–>BACnet Server–>BACnet对象,点击添加。
- 进入“协议集成”–>BACnet Server–>BACnet对象,生成可添加的对象,添加完成之后,查看当前温控面板上报的值。
9.打开Yabe BACnet客户端工具读取对应数据与对节点写数据。
(1)点击Add device,填入对应的本地电脑的地址,点击Start,就可以根据设备ID找到BACnet服务器设备并查看对象列表。
(2)发现设备
(3)传感器上报数据
(4)下发数据给节点
点击对应的BACnet对象,找到Present Value,修改Present Value的值,回车即可发送下行命令。
(5)在网关上即可收到通过BACnet下发的指令。
3. BACnet 对接(WS50x系列)
以WS50x触控式开关面板为例,作为参考。
用以下编码函数实现bacnet下发控制1111→对应全开,1101→对应(1、3开,2关)、1001→对应(1灯开,2,3关)。
function Encode(fPort, obj) {
var bytes = [];
bytes.push(0xff);
bytes.push(0x29);
if (obj.switch1 == 1111 ) {
bytes.push(0x77);
}
else if(obj.switch1 == 1011 ){
bytes.push(0x76);
}
else if(obj.switch1 == 1101 ){
bytes.push(0x75);
}
else if(obj.switch1 == 1110 ){
bytes.push(0x73);
}
else if(obj.switch1 == 1001 ){
bytes.push(0x74);
}
else if(obj.switch1 == 1010 ){
bytes.push(0x72);
}
else if(obj.switch1 == 1100 ){
bytes.push(0x71);
}
else if(obj.switch1 == 1000 ){
bytes.push(0x70);
}
return bytes;
}
下发内容进行测试代码是否成功,如:{"switch1": 1000}
- 将上面的编码复制到WS50x的编码函数中,下发内容复制到编解码测试中,点击”编码“—生成FF2970。对应上方代码内容else if(obj.switch1 == 1000 ){
bytes.push(0x70)},证验证编码没问题。
- 添加对象。
- 下发内容:1111全关。
- 发数据给节点
点击对应的BAC - 发数据给节点
点击对应的BAC
在网关上即可收到通过BACnet下发的指令。
备注:机械式编码函数,实现Bacnet下发1111→对应传感器0877ff(将设备的L1、L2、L3全部打开),其他步骤同(步骤三BACnet 对接(WS50x系列)),只需将模板和编码函数更换即可。
function Encode(fPort, obj) {
var bytes = [];
bytes.push(0x08);
if (obj.switch1 == 1111 ) {
bytes.push(0x77);
}
else if(obj.switch1 == 1011 ){
bytes.push(0x76);
}
else if(obj.switch1 == 1101 ){
bytes.push(0x75);
}
else if(obj.switch1 == 1110 ){
bytes.push(0x73);
}
else if(obj.switch1 == 1001 ){
bytes.push(0x74);
}
else if(obj.switch1 == 1010 ){
bytes.push(0x72);
}
else if(obj.switch1 == 1100 ){
bytes.push(0x71);
}
else if(obj.switch1 == 1000 ){
bytes.push(0x70);
}
bytes.push(0xff);
return bytes;
}
补充(60.0.0.45版本)
由于60.0.0.45Bacnet界面变化较大,因此补充60.0.0.45版本操作步骤。
1.确保传感器已添加到网关,并在数据流能正常看见传感器上报数据;具体步骤参考:网关内置NS添加节点设备 – 星纵物联;本次以VS341设备为例。
2.进入“协议集成”–>BACnet Server–>Server,填写UDP端口、设备ID(需要注意ID的唯一性)、设备名称,点击保存。
3.进入“协议集成”–>BACnet Server–>BACnet对象,点击添加对象。
4.选择你想要的设备以及设备中需要上报到bacnet的对象数据,勾选即可,这边以VS341为例,因此选择上报数据流中的”电量”和”占用情况”,点击保存即可。
5.添加完成之后,即可查看VS341对象上报的数据。