亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

具有 Gnuplot 图像输出和电子邮件警报功能的 Raspberry Pi 控制室温监控

我工作的地方有一个非常重要的房间,里面有很多电脑。这个房间的环境温度必须非常低才能优化这些系统的性能。
我被要求设计一个监控系统,该系统能够向少数人发送某种形式的警报,通知他们那个房间的空调出了问题。
这个构建的硬件,我使用了树莓派和一个 USB 温度和湿度传感器。

为了进行监控,我使用 Gnuplot 绘制了三个温度图并创建了这些图的图像。然后我创建了一个专用的 HTML 页面,该页面将托管在 Raspberry pi 上,以便可以从我们网络中的网页监控当前条件,即那些 gnuplot 输出图像。

对于提醒,我选择使用 Gmail。我在 Linux 用户杂志中找到了一些示例代码。 (当然,一旦您知道必要的端口分配,您就可以使用任何邮件服务器。)
为此,我为这些警报创建了一个专用的 Gmail 电子邮件帐户。另外作为一项附加功能,当警报被触发时,我会在电子邮件中附上一张图表,以便收到电子邮件的人可以了解导致警报的增加幅度有多大。

第一步:硬件设置

没有太多设置硬件。 Raspberry pi 正在运行 Raspian,USB 温度传感器只需直接插入 USB 端口之一。

该传感器的功耗极小,因此我直接从 Raspberry pi 为其供电。但是,对于功耗稍高的 USB 供电设备,我建议通过有源 USB 集线器为它们供电,而不是直接从 Raspberry pi 的 USB 端口供电。

一旦温度传感器通电,它会提供一个串行字符串,其中包含当前条件的温度和湿度读数。

温度=20.9°C 湿度=62.7% 露点=13.0°C

一个python脚本每五分钟解析这个字符串并将温度和湿度值存储到三个文本文件中;每天、24 小时和 48 小时的文本文件(稍后将在 HTML 部分讨论差异)。从这些文件中,Gnuplot 将生成图形,随后生成每个文件中数据集的图像。

在讨论 python 脚本之前,我先谈谈准备树莓派。

由于监控是在线完成的,所以需要安装一个Web服务器。我在 Raspberry pi 上尝试过其中的一些,但虽然它有点大,但我更喜欢 Apache。要在您的 Raspberry pi 上安装 Apache,您只需键入:

sudo apt-get install apache2

它会在安装前提示您,按“y”表示是,
Apache 将根据您的 Raspberry pi 安装几分钟。

完成后,您必须安装两个 python 插件:python-serial 和 python-gnuplot 插件。 (虽然我已经意识到最近的 Raspian 构建具有 python 串行插件标准,但只是为了安全。)

要安装您键入的内容:

sudo apt-get install python-serial python-gnuplot

再次确认提示后,将安装这些插件。

至此,硬件设置完成。

第 2 步:软件设置 - 电子邮件设置和收件人

创建电子邮件地址

在我们深入了解该软件之前,现在是创建 Gmail 帐户以从中发送电子邮件警报的好时机。 (这个例子使用GMail,但是一旦我们知道smtp端口设置,任何邮件服务器都可以使用)

python 代码非常简单,但所需的导入至关重要。没有它们,什么都行不通。

从时间导入 *
导入时间

导入序列

导入smtplib

导入 Gnuplot

导入操作系统

导入系统

最后是邮件列表。当然,我们必须添加电子邮件的收件人。每个电子邮件地址都保存在一个变量中。

from_address =‘[email protected]’
to_address1 =‘recipient1.mail.com’

to_address2 =‘recipient2.mail.com’

用户名 =‘[电子邮件受保护]@gmail.com’

密码 =‘custom_email_password’

第 3 步:软件设置 - 串行设置和解析

接下来我们看看串口设置。

只需设置与传感器串行输出相匹配的参数即可。传感器以9600 8 N 1 的标准格式输出串行字符串。

收到字符串后,有几种方法可以在 python 中解析这个字符串,而且很可能更可靠。我这样做的方法是在串行字符串中查找“临时”字符。定位后,只需将接下来的 46 个串行字符读入字符串即可。

收集的字符串现在可以像数组中的元素一样进行寻址。从字符串中解析出想要的数据,连同对应的时间戳保存到三个文件中。

时间戳 =strftime(“%d%b%Y %H:%M:%S”,localtime())

第 4 步:软件设置 - Gnuplot

Gnuplot 是一个命令行图形工具。一旦你弄清楚了基础知识,它就可以成为一个非常强大的数据集图形显示工具。

Gnuplot 可以直接从格式化的文本文件中绘图,而我们恰好从之前的解析步骤中得到了一个。

一旦我们向 gnuplot 指明数据在文件中的位置,我们就可以绘制所需的值。我将在 X 轴上使用时间,在 Y 轴上使用我们的温度。

根据我的经验,绘制时间是最困难的,因为您必须在 gnuplot 中获取时间格式以匹配文本文件的格式。

在完成所有图形选项并根据您的喜好完成后,Gnuplot 可以在此图形上创建一个图像。这将是我们稍后将在 Web 页面上使用的图像。我选择使用 .png 图片,因为我想替换网页上的旧图片,每个图片都有相同的名称,所以这行代码不必更改。

图像大小设置与 html 页面优化相关联。我首先尝试使用标准尺寸,然后尝试使图像适合我的屏幕。对于这个项目,我不存储旧图像,因此存储中文件的物理大小不是宝贵的 Raspberry pi 存储的主要因素。

这是用于创建和存储 daily.png 图形图像的代码片段。

g =Gnuplot.Gnuplot(debug=debug)

g(‘cd “‘ + path + ‘”‘ )
g(‘设置 xdata 时间’)

g('设置时间fmt “%d%b%Y %H:%M:%S”')

g('设置格式 x “%H:%M\\n%d%b”')

g('设置标题“每日当前温度显示”')

g('set key off')

g(‘set grid’) g(‘set xlabel “Time\\nDate”‘)

g('设置yrange [15.0:35.0]')

g('set ylabel ' 温度'')

g('设置数据文件缺少“NaN”')

g('设置终端 png 大小 800,400')

g('设置输出“daily.png”')

g('使用 1:($3) 绘制“daily.dat”与线')

注意:读取 g('set datafile missing “NaN”') 的行,该行的目的是在图中绘制一个空白区域。如果 Python 脚本检测到给定读数或串行传输的任何异常情况,则“NaN”变量将写入文件。

从上面的三个图表中可以看出,daily.png 为您提供了数据的当前时间显示,而 24_hour.png 具有以 24 小时为单位显示的相同信息。 48_hour.png 图表显示了您过去 48 小时内来自传感器的数据。

欲了解更多详情:Raspberry Pi 控制室温监控,具有 Gnuplot 图像输出和电子邮件警报功能


制造工艺

  1. 带二维码、RFID 和温度验证的访问控制
  2. 使用 1 线 DS18B20 传感器和 Raspberry Pi 测量温度
  3. 使用 Raspberry Pi 和 Nagios 监测室温
  4. 使用 DS18B20 读取温度 |树莓派 2
  5. 带有基于 Web 的图表的家庭(房间)温度和湿度监视器 – Raspberry Pi
  6. Raspberry Pi 上的温度监控
  7. 使用 RASPBERRY PI 测量温度
  8. Python 和 Raspberry Pi 温度传感器
  9. 使用 Moteino 和 Raspberry Pi 监测室温
  10. Raspberry Pi 上的简易温度和湿度
  11. 使用 Raspberry Pi 监测温度
  12. DIY:HomeBrew 的温度监控和调节