实战能耗和环境的实时监测和控制-阿里云开发者社区

开发者社区> IoT> 正文

实战能耗和环境的实时监测和控制

简介: 本次分享实战的能耗和环境的实时监测,首先需要对主要用能设施、设备进行能耗分项计量。通过对空调机组、插座、风机、照明回路等安装分项能耗计量表,可以实时、准确、详细地掌握每个用能终端的能源消耗数据。在此基础上通过有线、串口或无线NB网路,将实时数据传送系统中,后台通过设备消息订阅方式对数据进行分发处理,数据按照能耗数据模型进行分析多个角度进行统计、分析、评判,采用动态曲线、图表的形式,并结合场景模式实现控制具体设备达到节能减排效果。

本次分享实战的能耗和环境的实时监测,首先需要对主要用能设施、设备进行能耗分项计量。通过对空调机组、插座、风机、照明回路等安装分项能耗计量表,可以实时、准确、详细地掌握每个用能终端的能源消耗数据。在此基础上通过有线、串口或无线NB网路,将实时数据传送系统中,后台通过设备消息订阅方式对数据进行分发处理,数据按照能耗数据模型进行分析多个角度进行统计、分析、评判,采用动态曲线、图表的形式,并结合场景模式实现控制具体设备达到节能减排效果。整个方案实战内容比较多,因为硬件环境达不到,本次主要分享光线传感器、温湿度传感器、PM2.5传感器、电表、红外线装置通信采集为实战例子,并且数据展现已可视化方式完成配置实现。

一、整体系统由三级设备、二级通道以及一套系统构成。

1、三级设备指的是电能表,数据采集终端和设备。
2、二级通道指的是边缘计算网关(设备数据采集、控制)与电能表、空调、灯等传感器设备的数据下行和上行通道。
3、一套系统指的是能耗数据采集系统。

二、建设内容

1、对空调机组、插座、风机、照明回路等安装分项电能表。
2、安装数据采集终端,并在数据采集终端与电能表直接进行485总线连接。
3、将数据采集终端通过有线以太网/RS485总线或无线通讯方式接入系统。
4、在系统设置档案及通讯信息,对上述设备进行联调,对建筑能耗数据进行采集。
5、可通过系统进行建筑能耗数据分析并提出节能策略方案和控制指令。

总体流程如下图:

20190823164708.png

前期准备

硬件(因条件有限本次分享主要如下设备为主)

光线传感器(用于灯光控制策略,数据分析来源)

1566454252(1).png

温湿度传感器(用于空调控制策略,数据分析来源)

1566454293(1).png

PM2.5传感器(用于空气质量分析,并且根据策略模型控制排风等设备)

1566454272(1).png

电表(该电表采用的是Modbus协议,目前主流电表品牌都支持,这里做为一个采集实战例子)
1566525775(1).jpg
红外线装置(应用于不支持通信协议的空调设备)
1566454359(1).png
海创微联系统
20190823164620.png
20190823161631.png
数据可视化,底层原理采用canvas矢量图形渲染引擎,失量图绘制数据采用JSON来表达,美工人员图片绘制可以在线绘制完成,并且由配置人员完成迭代开发,整体应用效率大大提高,在性能上比传统的DOM渲染方式更佳明显。
20190823154809.png

看板整体结构如下图,用户可根据需求编辑看板,自定义添加删除功能模块。这里我们将办公室分为A、B、C 3个区域,每个区域都能对区域内的各种指标进行实时监测,温湿度、光照度、PM2.5、实时电压电流值和能耗,数据可视化,直观,一目了然。
1566264170(1).png
绘制一个控制交互效果
20190823160721.png
由设计人员在线绘制可组合N种不规则形态完成绘制效果,传统方式可能是直接采用一张PNG图片,但设计后无法根据业务场景需求进行灵活变化,我们采用矢量图绘制可灵活调整
20190823161226.png
20190823161251.png

移动端交互

基于canvas原理,我们同样可以完成移动端的交互效果,并且一次实现多端兼容
20190823161736.png
首页设有设备一键关闭按钮,防止下班楼内无人时设备还在运行的情况,一键远程关闭设备,减少不必要的能耗。同时可以对办公室区域进行选择和自定义增减,实现分区域管理,条理清晰。

1566266640(1).png
手机APP除了能够对数据进行实时显示外,还能对区域内的设备进行远程控制,基本页面如下图。

all.jpg

区域页

区域页中显示当前区域的温度、湿度、光照强度和PM2.5空气值,同时还能对区域内的设备进行添加,显示设备当前的运行状态。
1566266966(1).png

二、数据采集

连线

首先我们要把传感器和海创智能网关按照下图所示连接起来,这里以一台光线传感器为例,(温湿度传感器、PM2.5传感器和电表连接方法大致相同)光线传感器通过RS485连接串口服务器,需要注意正负。然后将串口服务器和海创智能网关用网线连接交换机,如下图。
20190823165252.png

接着打开海创微联开发平台在左侧导航栏中分别拖出定时器、Modbus和调试节点。

1565850758(1).png
1565850944(1).png
1565851044(1).png

按下图连接。

20190820152603.png

节点配置

定时器设置成周期性触发,主要当触发流程使用,这里设置成每30s一次,具体配置如下图。

1565851918(1).png

Modbus需要设置串口服务器对应设备设置的相应端口以及IP,协议选择Modbus-TCP,通讯模式选择Telnet,使用功能码FC3读取数据,电表功能码为FC4,添加相应的寄存器地址、单元ID以及数据类型和相应的算法即可。

光线传感器

光线传感器的单元ID为255,地址为1,长度为1,数据类型为lnt16BE。配置如下图。

1565852666(1).png

20190820152809.png

温湿度传感器

温湿度传感器的单元ID为1,温度读取地址为0,长度为1,数据类型为lnt16BE,算法为%s/100;湿度读取地址为1,长度为1,数据类型为lnt16BE,算法为%s/100(输出数除100)。配置如下图。

1565854994(1).png

20190820152720.png

PM2.5传感器

PM2.5传感器的单元ID为2,PM2.5取地址为4,长度为1,数据类型为lnt16BE;PM10读取地址为9,长度为1,数据类型为lnt16BE。配置如下图。

1566006175(1).png

20190820152846.png

调试节点在右侧调试窗口输出调试结果,无需配置。

电表

电表的单元ID为,电压读取地址为0,长度为2,数据类型为FloatBE;电流读取地址为8,长度为2,数据类型为FloatBE,更多地址配置如下图。

20190823101514.png

20190823101611.png

20190823101858.png

采集

配置好后点击部署按钮进行部署。

1565852906(1).png

之后就能在调试窗口看到采集到的温湿度、PM2.5、PM10和光照强度了,这里的温度为28℃,湿度为60.65%RH;光照为4lux;PM2.5为27μg/m³,PM10为28μg/m³;电压为238V,电流为0.04A,总电能61.83。

20190820154820.png
1566526997(1).png

三、上报阿里云IOT

在使用海创智能网关采集设备的数据后,需要将采集到的数据上报到阿里云IoT上。

首先打开阿里云物联网平台(网址 https://account.aliyun.com ),创建产品,输入产品名称,所属分类我们选择自定义品类

20190820151432.png

创建好之后我们点击功能定义,添加我们所需要的功能,这里我们选择添加光照强度、PM25、PM10、温湿度。具体如下图。

20190820151800.png

之后在产品中创建设备,创建完成后会生成三个唯一的标识,ProductKey(产品key)、DeviceSecret(产品密钥)、DeviceName(设备名称)

20190820152033.png

接下来回到海创微联开发平台在左侧导航栏中拖出阿里云IOT。

1566179351(1).png

在阿里云节IOT输入之前生成好的三个唯一标识和地域(地域为cn-shanghai),插入在modbus和调试节点之间,如下图。

20190820152259.png

点击部署,这样就成功将数据上传到阿里云IOT了,我们在设备的运行状态中就能查看到采集的数据了。

20190820152457.png

20190821104253.png

四、数据对接

实例分析-空调控制

将红外线装置通过RS485连接串口服务器,再将串口服务器用网线连接交换机,最后将红外线装置对准空调。

1566454389(1).png

1566454359(1).png

打开海创微联开发平台,从左侧拖出mqtt、function、request和调试节点。

mqtt用于与前端进行数据对接,接收包体,配置中填入前端的主题和服务端地址即可。

20190822111354.png

function节点用于对包体中的内容进行识别,具体函数内容见末尾附录。

20190822105317.png

request节点中输入串口服务器的IP地址和端口。

20190822105530.png

连接如下图,手机APP发出指令后经过mqtt传给function,function对指令进行判断后控制红外线装置对空调进行控制,实现远程控制。

20190822111417.png

前端数据同时会上传到阿里云IOT,我们在产品的功能定义中可以自己对指令进行枚举,如对于空调状态:0为关闭,1为开启;对于风速:0为自动档,1为低档,2为中档,3为高档;对于模式:0为制冷,1为制热。如下图。

20190822113041.png

然后在设备中就能看到空调当前的运行状态了。

20190822112913.png

此时室内温为26.98℃,空调开启、温度为25、风速自动、模式为制冷。

五、总结

基于海创微联系统与阿里云端的集成,可以很轻松的完成各种感知层设备通信和数据上云端的场景,并且结合数据可视化开发平台,进行各种看板、组态、移端应用的配置,如果你对该分享感兴趣可以通过扫码下方联系我
20190823163056.png

附录

空调控制 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;

红外线装置协议说明

20190823164003.png
20190823164303.png
20190823164057.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
IoT
使用钉钉扫一扫加入圈子
+ 订阅

物联网软硬件开发者一站式基地

其他文章