本次分享实战的能耗和环境的实时监测,首先需要对主要用能设施、设备进行能耗分项计量。通过对空调机组、插座、风机、照明回路等安装分项能耗计量表,可以实时、准确、详细地掌握每个用能终端的能源消耗数据。在此基础上通过有线、串口或无线NB网路,将实时数据传送系统中,后台通过设备消息订阅方式对数据进行分发处理,数据按照能耗数据模型进行分析多个角度进行统计、分析、评判,采用动态曲线、图表的形式,并结合场景模式实现控制具体设备达到节能减排效果。整个方案实战内容比较多,因为硬件环境达不到,本次主要分享光线传感器、温湿度传感器、PM2.5传感器、电表、红外线装置通信采集为实战例子,并且数据展现已可视化方式完成配置实现。
一、整体系统由三级设备、二级通道以及一套系统构成。
1、三级设备指的是电能表,数据采集终端和设备。
2、二级通道指的是边缘计算网关(设备数据采集、控制)与电能表、空调、灯等传感器设备的数据下行和上行通道。
3、一套系统指的是能耗数据采集系统。
二、建设内容
1、对空调机组、插座、风机、照明回路等安装分项电能表。
2、安装数据采集终端,并在数据采集终端与电能表直接进行485总线连接。
3、将数据采集终端通过有线以太网/RS485总线或无线通讯方式接入系统。
4、在系统设置档案及通讯信息,对上述设备进行联调,对建筑能耗数据进行采集。
5、可通过系统进行建筑能耗数据分析并提出节能策略方案和控制指令。
总体流程如下图:
前期准备
硬件(因条件有限本次分享主要如下设备为主)
光线传感器(用于灯光控制策略,数据分析来源)
温湿度传感器(用于空调控制策略,数据分析来源)
PM2.5传感器(用于空气质量分析,并且根据策略模型控制排风等设备)
电表(该电表采用的是Modbus协议,目前主流电表品牌都支持,这里做为一个采集实战例子)
红外线装置(应用于不支持通信协议的空调设备)
海创微联系统
数据可视化,底层原理采用canvas矢量图形渲染引擎,失量图绘制数据采用JSON来表达,美工人员图片绘制可以在线绘制完成,并且由配置人员完成迭代开发,整体应用效率大大提高,在性能上比传统的DOM渲染方式更佳明显。
看板整体结构如下图,用户可根据需求编辑看板,自定义添加删除功能模块。这里我们将办公室分为A、B、C 3个区域,每个区域都能对区域内的各种指标进行实时监测,温湿度、光照度、PM2.5、实时电压电流值和能耗,数据可视化,直观,一目了然。
绘制一个控制交互效果
由设计人员在线绘制可组合N种不规则形态完成绘制效果,传统方式可能是直接采用一张PNG图片,但设计后无法根据业务场景需求进行灵活变化,我们采用矢量图绘制可灵活调整
移动端交互
基于canvas原理,我们同样可以完成移动端的交互效果,并且一次实现多端兼容
首页设有设备一键关闭按钮,防止下班楼内无人时设备还在运行的情况,一键远程关闭设备,减少不必要的能耗。同时可以对办公室区域进行选择和自定义增减,实现分区域管理,条理清晰。
手机APP除了能够对数据进行实时显示外,还能对区域内的设备进行远程控制,基本页面如下图。
区域页
区域页中显示当前区域的温度、湿度、光照强度和PM2.5空气值,同时还能对区域内的设备进行添加,显示设备当前的运行状态。
二、数据采集
连线
首先我们要把传感器和海创智能网关按照下图所示连接起来,这里以一台光线传感器为例,(温湿度传感器、PM2.5传感器和电表连接方法大致相同)光线传感器通过RS485连接串口服务器,需要注意正负。然后将串口服务器和海创智能网关用网线连接交换机,如下图。
接着打开海创微联开发平台在左侧导航栏中分别拖出定时器、Modbus和调试节点。
按下图连接。
节点配置
定时器设置成周期性触发,主要当触发流程使用,这里设置成每30s一次,具体配置如下图。
Modbus需要设置串口服务器对应设备设置的相应端口以及IP,协议选择Modbus-TCP,通讯模式选择Telnet,使用功能码FC3读取数据,电表功能码为FC4,添加相应的寄存器地址、单元ID以及数据类型和相应的算法即可。
光线传感器
光线传感器的单元ID为255,地址为1,长度为1,数据类型为lnt16BE。配置如下图。
温湿度传感器
温湿度传感器的单元ID为1,温度读取地址为0,长度为1,数据类型为lnt16BE,算法为%s/100;湿度读取地址为1,长度为1,数据类型为lnt16BE,算法为%s/100(输出数除100)。配置如下图。
PM2.5传感器
PM2.5传感器的单元ID为2,PM2.5取地址为4,长度为1,数据类型为lnt16BE;PM10读取地址为9,长度为1,数据类型为lnt16BE。配置如下图。
调试节点在右侧调试窗口输出调试结果,无需配置。
电表
电表的单元ID为,电压读取地址为0,长度为2,数据类型为FloatBE;电流读取地址为8,长度为2,数据类型为FloatBE,更多地址配置如下图。
采集
配置好后点击部署按钮进行部署。
之后就能在调试窗口看到采集到的温湿度、PM2.5、PM10和光照强度了,这里的温度为28℃,湿度为60.65%RH;光照为4lux;PM2.5为27μg/m³,PM10为28μg/m³;电压为238V,电流为0.04A,总电能61.83。
三、上报阿里云IOT
在使用海创智能网关采集设备的数据后,需要将采集到的数据上报到阿里云IoT上。
首先打开阿里云物联网平台(网址 https://account.aliyun.com ),创建产品,输入产品名称,所属分类我们选择自定义品类。
创建好之后我们点击功能定义,添加我们所需要的功能,这里我们选择添加光照强度、PM25、PM10、温湿度。具体如下图。
之后在产品中创建设备,创建完成后会生成三个唯一的标识,ProductKey(产品key)、DeviceSecret(产品密钥)、DeviceName(设备名称)。
接下来回到海创微联开发平台在左侧导航栏中拖出阿里云IOT。
在阿里云节IOT输入之前生成好的三个唯一标识和地域(地域为cn-shanghai),插入在modbus和调试节点之间,如下图。
点击部署,这样就成功将数据上传到阿里云IOT了,我们在设备的运行状态中就能查看到采集的数据了。
四、数据对接
实例分析-空调控制
将红外线装置通过RS485连接串口服务器,再将串口服务器用网线连接交换机,最后将红外线装置对准空调。
打开海创微联开发平台,从左侧拖出mqtt、function、request和调试节点。
mqtt用于与前端进行数据对接,接收包体,配置中填入前端的主题和服务端地址即可。
function节点用于对包体中的内容进行识别,具体函数内容见末尾附录。
request节点中输入串口服务器的IP地址和端口。
连接如下图,手机APP发出指令后经过mqtt传给function,function对指令进行判断后控制红外线装置对空调进行控制,实现远程控制。
前端数据同时会上传到阿里云IOT,我们在产品的功能定义中可以自己对指令进行枚举,如对于空调状态:0为关闭,1为开启;对于风速:0为自动档,1为低档,2为中档,3为高档;对于模式:0为制冷,1为制热。如下图。
然后在设备中就能看到空调当前的运行状态了。
此时室内温为26.98℃,空调开启、温度为25、风速自动、模式为制冷。
五、总结
基于海创微联系统与阿里云端的集成,可以很轻松的完成各种感知层设备通信和数据上云端的场景,并且结合数据可视化开发平台,进行各种看板、组态、移端应用的配置,如果你对该分享感兴趣可以通过扫码下方联系我
附录
空调控制 Function节点函数
//实例一个buffer用于存放控制空调指令,长度为8字节
let buf = Buffer.alloc(8);
//写入红外控制协议头
buf.write('A114', 0, 2, 'hex');
//判断电源是否为关闭,如果为关闭发送默认关闭代码即可,不必理会温度以及模式和风速
if (!msg.payload.PowerSwitch) {
buf = Buffer.from('a11400001400006c', 'hex');
}
//判断是否为制冷模式
else if (!msg.payload.WorkMode) {
if (msg.payload.PowerSwitch) {
//判断风速
switch (msg.payload.WindSpeed) {
case 0: buf.write('10', 2, 1, 'hex'); break;
case 3: buf.write('11', 2, 1, 'hex'); break;
case 2: buf.write('12', 2, 1, 'hex'); break;
case 1: buf.write('13', 2, 1, 'hex'); break;
default:
{
node.error('WindSpeed参数有误!');
return;
}
}
}
else {
node.error('PowerSwitch参数有误!');
return;
}
}
//判断是否为制热模式
else if (msg.payload.WorkMode) {
if (msg.payload.PowerSwitch) {
//判断风速
switch (msg.payload.WindSpeed) {
case 0: buf.write('30', 2, 1, 'hex'); break;
case 3: buf.write('31', 2, 1, 'hex'); break;
case 2: buf.write('32', 2, 1, 'hex'); break;
case 1: buf.write('33', 2, 1, 'hex'); break;
default:
{
node.error('WindSpeed参数有误!');
return;
}
}
}
else {
node.error('PowerSwitch参数有误!');
return;
}
}
else {
node.error('WorkMode参数有误!');
return;
}
//控制空调温度,输入为10进制的整数温度
buf.writeInt8(msg.payload.TargetTemperature, 4);
//空调型号,请参考协议表,为整数
buf.writeInt16BE(msg.payload.merchant, 5);
let cont = 0;
for (let i = 0, len = Buffer.byteLength(buf) - 1; i < len; i++) {
cont += buf[i];
}
let CheckSum = cont ^ 0xa5;
buf[7] = CheckSum;
msg.payload = buf;
return msg;
红外线装置协议说明
欢迎大家扫码进群领取物联网最新资料以及获取一手直播资讯。