黄 涛, 熊国灿
(北京经济管理职业学院工程技术学院, 北京 102602)
空调、照明、实验室等是学校用电大户,存在用电浪费现象,有的还存在用电安全隐患。对这些设备和设施的电源进行信息化管理可以缓解上述问题,有助于提高学校对设备的科学管理水平。
对电源进行控制,需要用到电源智能开关。智能开关一方面可以将目前所连接的开关状态传送出去,另一方面可以接受指令控制开关的启动和关闭。智能开关集成了通信模块、通信程序和固态继电器,是一个带CPU的微型控制设备[1]。
智能开关带有WiFi模块,它可以接入校园WiFi网络,成为其中的一个节点。智能开关和控制服务器之间在WiFi基础上定义一种协议,协议要考虑彼此认证的能力及加密算法,保证数据和控制的安全传输。
ESP8266带完整WiFi功能,同时带一个32bit MCU的SoC模块,可以直接在该模块上编写程序进行二次开发。也可以将ESP8266当成一个单纯的通信模块,另用一块Arduino Uno开发板作智能单元。ESP8266本身也是一个Arduino模板。
Arduino UNO的处理器核心是ATmega328,具有14路数字输入/输出口,其中6路可作为PWM输出,6路模拟输入,一个16 MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮,可以作为控制元件连接固态继电器等外设。这种Arduino UNO加ESP8266的结构可以在Arduino UNO上使用乐鑫AT固件,通过串口用AT指令来实现WiFi连接和网络通迅。
如果只用ESP8266构造智能开关,可以使用乐鑫SDK开发包,直接用C编程,开发BIN文件下载到ESP8266里[2];也可以使用NODEMCU固件,用图形化LUA语言编程;还可以使用Arduino的IDE进行直接编程,也就是Arduino IDE for ESP8266。用Arduino IDE编程ESP8266,首先要下载相应的库[3]。
智能开关需要直流5 V的独立供电。智能开关是一个无线控制的设备,能比较简便地接入现有电源系统,可以大量减少土建和电气方面的现场施工工作。
控制服务器是一个WEB服务器,装有MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)服务和mongoDB数据库。智能开关通过MQTT协议按照一定时间间隔将状态推送给控制服务器;智能开关通过MQTT服务的订阅机制响应对自身连接的固态继电器的状态的改变命令。mongoDB数据库保存控制规则和智能开关的实时状态数据,业务逻辑根据控制规则和实时状态数据把改变命令推送给智能开关。
如下页图1所示,控制服务器是一个Linux系统的PC,它连接在校园网上,智能手机通过校园WiFi连接到校园网,从而可以访问控制服务器。客户端不需要APP,使用浏览器访问控制服务器,智能手机通过浏览器可以访问控制服务器的页面,授权用户可以访问特定页面,该页面可以定义、修改控制规则并保存在数据库中。规则的改变会引起逻辑业务重新计算。智能手机用户在校园WiFi覆盖的区域内,可以浏览各特定位置电源的开关状态,有权限的智能手机用户可以启动或者闭合某些位置的电源开关。
MQTT是物联网的事实标准,被用来作为传感器和控制器之间的通信协议[4]。它使用发布/订阅的消息模式,提供一对多的消息发布。它建立在TCP/IP网络协议之上,能克服底层不可靠的网络通信带来的问题。它有三种服务质量的消息发布:“至多一次”的消息发布可能会发生消息丢失,适合数据不断重复采集更新的场合;“至少一次”的消息发布能确保消息到达,但可能导致数据重复,适合重要和关键数据的采集;“只有一次”的消息发布能确保消息到达一次,适合支付、身份认证等有且只能有一次的数据传输。MQTT适合小型数据的传输,它还有特殊机制处理客户端的异常中断。在智能开关和控制服务器之间采用MQTT服务[5]。
图1 电源管理系统结构示意图
MongoDB是基于分布式文件存储的数据库,是一种非关系数据库,支持json格式的二进制数据,能存储复杂结构的数据类型,有较强大的查询语言,它面向集合存储,能存储对象类型的数据。MongoDB适合实时数据处理。
控制服务器的业务逻辑程序使用node.js编写。node.js是一个让JavaScript运行在服务器端的开发平台,使用事件驱动、非阻塞IO模型、单线程实现并发数据的高效、轻便处理,应用node.js可以快速构建web服务器,适合分布式系统数据密集的实时应用。
在开发web服务中,还会用到Express、Ejs、Redis等开源的模板框架或中间件。
云技术是分布式、并行系统、网络计算的发展。通过WiFi和校园局域网,智能开关、控制服务器、智能手机等构成一个云计算的电源控制系统,各个智能设备做适合自己的计算,各个智能设备还可以根据需要连接各种输入输出设备。大量数据传送到后台控制服务器后,统一的业务逻辑程序有利于系统的修改与维护[6]。
电源管理系统的主要功能有:远程浏览、监督和控制空调、照明、实验室设备的电源;对空调、照明、实验室的电源开关进行授权管理;用户通过手机、校园卡、指纹、上级赋权等多种认证手段确定电源管理权限;有管理权限的用户可以远程修改控制规则;数据库保存历史数据,日志文件记录各种事件;对用电异常进行记录和报警;对各类报警行统计和打印。
基于校园WiFi及云技术的电源管理系统是一个轻型web应用,开发快速、软硬件可扩展性好,性能稳定可靠。