WattWise:使用智能插座的基于终端的功率监控

2025 年 3 月 31 日

WattWise CLI Energy Monitor CLI 仪表盘显示来自一个 Kasa 智能插座的实时和历史功率消耗读数

挑战:性能 vs. 电力成本

高性能计算通常意味着高昂的电费,尤其是在采用分时电价的地区。在运行资源密集型工作负载时,找到计算能力和能源效率之间的平衡至关重要。

了解功耗

我一直在设置一个工作站,用于从我的桌面卸载计算密集型的 LLM 工作流程。该构建包括双 Epyc CPU,并计划添加 4 个 GPU,以提供高达 128GB 的 VRAM 来并行运行多个代理。一个关键的约束是确保系统能够在标准的 120V 家用电源插座上舒适地运行。

由于我已经在家中使用智能插座,因此我添加了一个来监控工作站的功耗。然而,使用 Kasa 手机应用或 Home Assistant 仪表盘检查功率统计数据证明很麻烦,尤其是我已经在辅助显示器上的 2×2 网格中维护了一个包含 htop、nvtop 和 nload 等监控工具的终端窗口。

TP-link Kasa EP25 Smart Plug TP-link Kasa EP25 智能插座

构建基于终端的解决方案

在为我想要的东西勾勒出一个简单的线框图后:一个干净的、基于终端的 UI,它将显示已经通过 TP-Link 集成从我的 Home Assistant 实例收集的功耗数据。在对数据访问进行排序后,我花了一些时间使用 ‘Claude 3.7 Sonnet Thinking’ 来迭代 CLI 结构和功能。

结果:WattWise,一个轻量级的 CLI 工具,可以从智能插座(直接或通过 Home Assistant)提取功耗数据,并在终端中以干净、信息密集的仪表盘形式呈现。

WattWise CLI Monitor WattWise 演示

主要功能

监控功能

电源管理功能

部署选项

动态电源管理

由于我的公用事业提供商使用分时 (ToU) 定价。多年来,我已经构建了各种家庭自动化来最大限度地减少高峰时段的电力使用。由于我的工作站可能在满负载时消耗高达 1400W 的功率,因此在昂贵的费率时段添加自动 CPU 和 GPU 节流是有意义的。

WattWise System Architecture Power Optimizer: 系统架构

我的测试表明,在我的特定设置上,将 CPU 频率从 3700MHz 降低到 1500MHz 可以节省大约 225W 的负载,但结果会因硬件而异。功率优化器服务根据以下因素动态调整时钟速度:

  1. 系统负载(来自 os.getloadavg())
  2. 当前功耗(来自智能插座)
  3. 一天中的时间(以考虑 ToU 时段)

Time of Use Adaptation Chart Power Optimizer: ToU 适应图

自适应性能控制

最初,我探索了一个完整的 PID(比例-积分-微分)控制器,但事实证明,更简单的 PI(比例-积分)方法更适合电源管理。

PI 控制器侧重于两个关键方面:

通过删除微分项,我们:

对于具有功率管理等渐进状态变化的系统,微分项通常会引入不必要的复杂性,而没有有意义的好处。

控制器通过考虑以下因素动态调整系统参数:

这种方法确保了节能的过渡,而没有完整 PID 实现的复杂性。

Power Optimizer Control Flow Power Optimizer: 控制流程 (带有 PID)

实现和限制

终端界面

仪表盘设计很简单,具有:

数据源

该工具支持两个主要数据源:

  1. 直接 Kasa 连接:直接与 TP-Link Kasa 智能插座通信
  2. Home Assistant 集成:使用现有的 HA 设置和身份验证令牌

代码具有足够的模块化,因此添加对其他智能插座系统的支持应该不会太困难。

当前限制

这在很大程度上是一个个人项目,有一些限制:

如何使用

基本设置:

git clone https://github.com/naveenkul/WattWise.git
cd WattWise
pip install -r requirements.txt
pip install .

基本用法:

# Quick power view (single reading)
wattwise
# Continuous monitoring with charts
wattwise --watch

未来改进

最后的想法

WattWise 最初只是一个简单的实用程序,用于解决我的特定需求:从我已经打开的终端监控一个耗电的工作站。在高峰 ToU 时段添加自动电源管理已经使我免于在一天中手动调整系统性能。

该项目的仪表盘部分在 MIT 许可证下开源。文档和安装说明可在存储库中找到。欢迎贡献和反馈!

naveenkul/WattWise 随意 fork 并使其适应您的特定需求——我很想看看其他人用它构建什么。

Github LinkedIn © 2025 Naveen Kulandaivelu. 版权所有。