使用树莓派和WhatsApp通知对服务器房间进行智能监控温度和湿度
摘要
服务器机房是用于存储数据的房间,其中包含公司信息(数据中心)。服务器机房温度过高会导致设备和网络性能下降。因此,管理员必须保持服务器空间环境稳定,以维持服务器和网络的性能。温度监控系统可用于监控服务器机房内的温度和湿度。此外,当服务器机房温度升高时,该系统还能做出响应以降低温度。本研究采用物联网(IoT)技术,使用树莓派和Wemos DHT Shield无线传感器作为能够读取房间温度和湿度状况的设备。温度和湿度的日志数据存储在MySQL数据库中,并以图表形式实时显示。物联网系统根据预设的温度标准进行响应,并通过移动设备上的WhatsApp应用程序向用户发送通知。
引言
服务器机房是一个非常敏感的空间,因为其中包含了公司[1]的服务器计算机和数据中心基础设施。因此,必须始终保护服务器机房的温度和湿度条件。服务器机房通常配备有空调(AC),其在维持室温方面起着重要作用。如果空调发生故障,可能导致室温升高。空调损坏还可能引起服务器机房内湿度增加,例如氟利昂气体泄漏。此类空调故障往往无法被及时发现,因为空调本身缺乏提示故障的预警系统,从而导致室温异常下降。因此,有必要增加额外的设备,以提供关于服务器室温度的预警信息。
另一个情况是当服务器机房的主电源断电时,应将主电源切换至不间断电源(UPS)[2]。当印度尼西亚国家电力公司(PLN)的主电力来源中断时,空调将被关闭,以确保不间断电源(UPS)电池的功耗足以维持服务器计算机运行,直到PLN主电源恢复供电。因此,需要一个实时的服务器机房监控系统[3]。通过使用树莓派微型计算机设备获取服务器机房内的温度信息,可维持服务器机房的标准温湿度。当服务器机房管理员不在机房附近时,需要一个能够发送通知的系统,管理员可以了解服务器机房温度的实时状况。当室温过高时,管理员可控制关闭服务器计算机[4],当室温恢复正常后,再重新开启服务器。
一些相关研究,例如基于Atmega8535微控制器设计室温控制装置[5]、在基于网页的压力和体积校准实验室中实时监控温度和湿度[6]、基于物联网(IoT)实现服务器机房温度监控系统[7]、使用消息队列遥测传输(MQTT)通信协议[8][9][10][11]、基于短信网关利用LM35传感器设计测温设备[12]、侧重于通过移动设备发送通知[13][14][15]、基于Arduino的监控系统及实验室空间控制设计[16][17]。其中部分研究在系统集成方面存在不足,例如仅关注通过短信发送通知但缺乏控制功能,或具备控制功能却缺少实时监控。因此,本研究尝试将系统进行集成,实现基于网页的监控、通过WhatsApp发送通知、对服务器计算机进行开关控制以及查看服务器机房温度的日志历史记录。
2. 文献综述
2.1. 树莓派
树莓派是一种信用卡大小的小型计算机设备。像普通计算机一样,我们可以在该设备上安装Linux操作系统。树莓派可用作网络服务器、路由器、媒体中心等。树莓派的输入输出接口包括USB端口、局域网、高清多媒体接口和40针GPIO接口,可根据需要进行优化使用。树莓派运行时采用Apache、MySQL、网络服务器以及Python库Yowsup服务。所使用的树莓派规格配备了内置WiFi设备,用于连接传感器并与树莓派之间传输数据。树莓派耗电量较低,仅需2.5A和5V即可开机运行。树莓派的数据存储不使用计算机中的硬盘等磁盘设备,而是采用Micro SD卡,这种存储方式也常见于智能手机。
2.2. 带DHT扩展板的Wemos D1 Mini ESP8266传感器
本研究使用微型Wemos D1传感器。Wemos D1 mini是一种低成本微控制器设备。微型D1调制解调器配备有WiFi模块,使其能够与TCP/IP协议进行交互。Wemos D1配备了DHT传感器,该传感器用于读取房间的温度和湿度。DHT传感器为模拟传感器,需要树莓派来处理数据。DHT传感器在0°–50°温度范围内的温度数据精度约为5%,而在20%–80%相对湿度范围内测量湿度时,其精度约为±2°C。选择该Wemos传感器的原因在于其经济实惠。
2.3. 机房温湿度标准
服务器机房必须具备足够的温度控制,以维持机房内硬件设备正常运行所需的指定操作范围。服务器机房应配备足够且高效的空调系统,以保持机房的温度和湿度。室温标准还依据ANSI / TIA‐942‐A(数据中心电信基础设施标准)[18][19]中的规定,具体条件如下:
- 温度:18–27 °C(64–81 °F)干球温度。
- 最大相对湿度:60%
- 最大露点:15 °C(59 °F)
- 最高温度变化率:每小时 5 °C(9 °F)
除了ANSI / TIA‐942‐A标准[19]外,温度和湿度的限值还依据标准操作程序(SOP)来维持服务器安全与弹性。服务器机房的温度也必须按照机房卫生标准进行维护。以下为获取温度和湿度数据并实现自动预警的公式:
- if: 温度值 => 30 ° 系统将发送通知 (1)
- if: 湿度值 => 60 ° 系统将发送通知 (2)
其中,temp 是温度值,humid 是湿度值。temp 和 humid 的值通过 DHT传感器 实时获取,并由树莓派发送和处理。通知系统将使用 Yowsup库。Yowsup库 是树莓派上的一个 Python库,可使系统通过 WhatsApp应用程序 向智能手机发送通知。
3. 方法
整体系统设计采用无线技术,以避免在服务器空间内布线。树莓派设备使用DHT传感器来读取房间的温度和湿度。树莓派在读取并处理温度和湿度数据后,将启动Web服务器服务,从而能够显示网站页面,使得该网站可通过本地无线网络(私有网络)或互联网(公共网络)进行访问。
第一步是配置无线网络,使ESP8266连接到树莓派。可以在树莓派上的本地网络中通过执行命令
iface eth0
来完成配置。接下来,在树莓派上配置
route -n
网关,以便可以通过互联网(公共网络)进行访问。然后,根据之前在ESP8266 Wemos上传脚本中设置的SSID,为树莓派WiFi设置相应的SSID名称。
下一步建议在树莓派上安装程序前,先更新树莓派的系统。可通过执行命令
sudo apt-get update
进行配置。然后继续在树莓派上通过提示安装 Apache web server:
apt-get install apache-2 -y
。接下来配置网络服务器,使树莓派主机可通过本地网络被访问。
为确保网络服务器正确配置,可通过网页浏览器访问树莓派上的主机地址。在Web服务器运行后,接着通过执行命令
apt-get install mysql-server
安装 MySQL-server 服务。为了便于管理 MySQL 中的数据,需要安装 phpMyAdmin,执行命令
apt-get install phpmyadmin
,以便通过 phpMyAdmin网页图形界面(Graphical User Interface)访问 MySQL 上的数据。
ESP8266与树莓派连接后,进入PHP配置阶段,以便在树莓派上处理来自ESP8266上传的数据,并将数据存入MySQL数据库。通过使用PHP POST,ESP8266脚本可直接将温度和湿度数据发送到 MySQL。MySQL能够利用当前时间戳系统直接记录ESP8266发送数据的时间。当ESP8266的数据成功录入数据库后,创建主网页以将数据可视化为图表和数值。图表可视化将使用Highcharts库,因此需先准备一个数据服务器,以便Highcharts能够显示数据。网页布局采用Bootstrap库,确保通过移动设备或智能手机访问时页面布局保持整齐。要显示存储在MySQL数据库中的温度和湿度数据记录,将使用Datatables脚本库。Datatables使得查找数据更加便捷,并使数据显示更动态[20]。
下一步是在树莓派上安装Yowsup库。Yowsup使用一个基础的Python脚本。
1) 在终端中输入以下命令来安装Yowsup所需的包。
sudo apt-get install python-dateutil
sudo apt-get install python-setuptools
sudo apt-get install python-dev
sudo apt-get install libevent-dev
sudo apt-get install ncurses-dev
2) 然后进入将要克隆 Yowsup 的目录。
cd / home / pi / git clone https://github.com/tgalal/yowsup.git
3) 然后进入 Yowsup 安装的目录并进行安装。
cd yowsup
sudo python setup.py install
4) 安装完成后,您可以继续注册将由 Yowsup 使用的手机号码。
yowsup-cli register –questcode sms –phone 628xxxxxxxxxx –cc 62 –mcc 510 –mnc
5) 在收到 WhatsApp 发送的注册码短信后,继续进行验证阶段的注册。
yowsup-cli register –register xxx-xxx –phone 628 62 6 xxxxxxxxx –cc
6) 正确输入注册码后,将显示创建的 WhatsApp 账户信息,例如手机号码和密码,将这些数据保存到一个文本文件中,用于 Yowsup 登录,格式如下:
phone = 628XXXXXXXXXX
password = AzQ1XXXX
7) 保存凭据后,我们使用 Yowsup 提供的示例进行测试。
yowsup-cli demos –config / home/pi/yowsup/whatsapp_config.txt –end 628XXXXXX "TEST123"
8) 如果成功接收到消息,则表示安装成功。Yowsup 的首次配置是注册一个电话号码,该号码将用作从树莓派发送数据的号码。然后配置将添加到 Yowsup 的命令。确保添加到 Yowsup 的脚本能够通过在智能手机上的 WhatsApp 应用程序中运行而正常执行。
Yowsup 的工作原理类似于通过 Python 脚本在树莓派上创建一个虚拟移动设备。因此,该 Yowsup 程序会处理从 WhatsApp 发送的聊天数据,并触发已设定的命令。
4. 测试与结果
树莓派启动后,会确保树莓派上的网络配置不会改变,并且无线主机服务也会正常运行。将ESP8266通过Micro USB连接到5伏电源的USB电源上。设备将自动连接到先前配置好的Wi-Fi网络。ESP8266上的LED灯将亮起,并在向树莓派发送数据时蓝色闪烁。要查看传感器读数的结果,可以通过访问树莓派上的MySQL数据库进行查询,因为ESP8266模块会立即通过add.php脚本将数据提交到MySQL数据库。
ESP8266 作为将传感器的模拟数据传输到树莓派的模块。通过 get.php 文件接收 ESP8266 发送的数据。该数据被记录到名为 SMRT 的数据库和 tempLog 表中的 MySQL 数据库中。
tempLog中的数据包含时间和日期、温度和湿度的传感器节点。timeStamp中的时间和日期首先被转换为Unix时间,以便于在JavaScript中显示时间序列数据。温度和湿度数据将使用Highcharts库以图形形式实时显示在网页上。通过本地或公共URL地址访问网络主机,以显示Unix时间、传感器1的温度、传感器2的温度数据。这些数据通过PHP页面 server-data.php获取,其中包含(unix-time、温度、湿度、传感器)数据,变量采用标准 JSON格式。图4显示了监控服务器机房温度和湿度的网页。红色框显示温度为22°C,蓝色框显示湿度为32.5%。温度和湿度值取自传感器1和传感器2的平均值。框下方是两个传感器的实时图表,红色曲线代表传感器1,蓝色曲线代表传感器2。
监控系统通过在MySQL中基于预设值创建触发器或计数器,向用户发送WhatsApp通知。通知功能使用来自GitHub的Yowsup库。Yowsup 使用带有编程层的 Python 脚本。要激活它,需要一个电话号码来确认 WhatsApp 上的新账户。配置 Yowsup 后,可以定义用于向树莓派上的网络服务器请求传感器数据的关键词。例如,发送获取命令后,Yowsup 将向网络服务器请求数据并进行处理,然后将信息发送到 WhatsApp 群组。获取命令用于获取温度和湿度信息。检查(主机)命令用于检查状态。关闭(主机)命令用于关机。唤醒(主机)命令用于开机。
5. 结论
系统设计的结果已经能够通过ESP8266与树莓派之间的无线网络,将温度和相对湿度信息实时发送到位于树莓派上的数据库。数据将在由树莓派托管的PHP网站页面上显示。温度和湿度数据被相对存储在MySQL数据库中,并可以以报告形式展示。数据包括时间、Unix时间、温度、湿度和传感器类型。当温度上升超过指定值时,监控系统将以通知形式向用户发出提醒。通知通过智能手机上的WhatsApp应用程序发送。该系统可以通过已注册到Yowsup的号码,在WhatsApp应用程序中执行命令来检查主机服务器状态,或直接关闭服务器。
2万+

被折叠的 条评论
为什么被折叠?



