使用Smart Plug和Raspberry Pi进行能量监控

2021-01-15 20:03:57

最近,我对测量家里的电子设备(尤其是计算机)的电耗产生了兴趣。计算机电源的额定功率通常为400W至800W。我想看看日常计算实际上需要多少功能-编写代码,浏览Internet,玩游戏,运行ML作业。以及与笔记本电脑和其他移动设备的比较。

小时候,一位工程师告诉我,显示器消耗的能量很大,而台式机本身消耗的能量更少。因此,如果关闭显示器,我可以播放音乐,在一夜之间下载东西而不会浪费太多能量。随着时间的流逝,随着笨拙的CRT显示器被时尚的LED显示器取代,而强大的250W GPU被添加到了我的台式机中,这一说法一直困扰着我。是时候我测量所有内容并确定工程师的声明是否仍然成立。

快速搜索显示,Kill A Watt电表是测量能耗的最流行方法之一。我想记录消耗量,以便可以分析一段时间内的趋势。这就是为什么我要通过这些仪表。但是这些仪表具有内置屏幕,不需要移动或网络访问,因此,如果有人正在寻找一种快速查看消耗量的方法,它们可能是一个很好的解决方案。另一方面,有些设备可以直接插入房屋的电路板,它们可用于分析房屋中所有电器的消耗。对于我测量计算机能耗的目标来说,这简直太过分了,并且无法提供我需要的细粒度监视功能(而且我有点害怕弄乱交流电源)。

我终于选择了TP-Link电源板:HS300。该智能配电盘具有通常的智能插头功能,例如,可以使用移动应用程序对其进行控制,但还内置有能量监控功能。最重要的是,在Github上有一些很棒的项目-python-kasa,pyHS100-对通信协议进行了反向工程,并提供了一个很好的与他们进行通讯的接口。

图2 2显示了如何获取,存储和可视化能耗值的高级视图。

python-kasa项目提供了一个很好的接口来控制TP-Link设备,但是在查询子插头的能量监视器方面存在一个问题。这就是为什么我使用了pyHS100项目的原因,该项目看起来像是python-kasa项目的旧版本。我添加了一个cron作业,每隔5分钟查询一次配电盘,然后使用简单的bash脚本将数据转储到文本文件中:

#! /bin/bashpower=$(/home/pi/.local/bin/pyhs100 --strip --host<配电盘的IP> emeter | tail -n 1)timestamp = $(date +%s)echo- e&#timestamp,$ power"

这会为它记录的每个样本创建一个庞大的行,当然还有很多压缩空间。我目前每5分钟对它进行一次采样,因此我不介意,但是如果您打算每隔一分钟或每隔几秒采样一次,则可能需要对其进行精简。

我正在使用Grafana可视化此数据,以查看一段时间内的使用趋势。我们可以将所有数据转储到Grafana默认支持的数据源之一中,但是我不喜欢这种简单数据的额外步骤。因此,我编写了自己的后端数据源,该数据源直接服务于Grafana,这些数据来自我们收集的日志。这使用SimpleJson数据源插件。

结果是有益的,对我来说无非是大开眼界。某些设备(例如计算机,充电器)消耗的能量数量不同,而某些设备(例如灯,显示器)消耗的能量恒定。我可能会写一篇关于我的计算机运行各种工作负载和应用程序的消耗情况的后续文章。

在上半年,该计算机用于通过简单的文本编辑器进行轻度浏览的方式进行编码。

显示器的能耗一直保持不变,直到我将亮度从15%增加到20%

还要注意尖峰信号,可能与拿起电话的时间相对应。

显示器的能耗仅为台式机能耗的10%-25%。因此,尽管在后台运行时关闭显示器可能仍然是一个好主意,但显示器不再是主要的消费者(如果他们是更早)。有趣的是,实际消耗量远远小于设备的额定功率。

有趣的是还注意到了消耗量的差异。因此,获得金牌PSU的影响将比拥有效率更高的iPhone充电器大得多。 但是,当您坐在3KW空间加热器旁边时,这些都不重要;) 1我不太清楚确切的说法,但是我怀疑我十几岁的想法可能将规模从显示器消耗的比台式机多了一些,到显示器消耗的比台式机大得多。 以适应其需求。