Show HN: 终端仪表盘,用于在高峰电价时节流我的 PC(基于 WattWise)
WattWise:使用智能插座的基于终端的功率监控
2025 年 3 月 31 日
CLI 仪表盘显示来自一个 Kasa 智能插座的实时和历史功率消耗读数
挑战:性能 vs. 电力成本
高性能计算通常意味着高昂的电费,尤其是在采用分时电价的地区。在运行资源密集型工作负载时,找到计算能力和能源效率之间的平衡至关重要。
了解功耗
我一直在设置一个工作站,用于从我的桌面卸载计算密集型的 LLM 工作流程。该构建包括双 Epyc CPU,并计划添加 4 个 GPU,以提供高达 128GB 的 VRAM 来并行运行多个代理。一个关键的约束是确保系统能够在标准的 120V 家用电源插座上舒适地运行。
由于我已经在家中使用智能插座,因此我添加了一个来监控工作站的功耗。然而,使用 Kasa 手机应用或 Home Assistant 仪表盘检查功率统计数据证明很麻烦,尤其是我已经在辅助显示器上的 2×2 网格中维护了一个包含 htop、nvtop 和 nload 等监控工具的终端窗口。
TP-link Kasa EP25 智能插座
构建基于终端的解决方案
在为我想要的东西勾勒出一个简单的线框图后:一个干净的、基于终端的 UI,它将显示已经通过 TP-Link 集成从我的 Home Assistant 实例收集的功耗数据。在对数据访问进行排序后,我花了一些时间使用 ‘Claude 3.7 Sonnet Thinking’ 来迭代 CLI 结构和功能。
结果:WattWise,一个轻量级的 CLI 工具,可以从智能插座(直接或通过 Home Assistant)提取功耗数据,并在终端中以干净、信息密集的仪表盘形式呈现。
WattWise 演示
主要功能
监控功能
- 实时功率监控,带有瓦特和电流显示
- 颜色编码的功率值(绿色表示低使用率,黄色表示中等,红色表示高)
- 直接在终端中显示历史消耗图表
- 虽然智能插座测量结果不是实验室级的(通常为 ±1-3% 的精度),但它们对于实际使用监控来说已经足够了
电源管理功能
- 基于分时电价自动进行 CPU/GPU 节流
- 可配置的功率阈值和性能配置文件
- 通过交互式设置过程进行简单配置
部署选项
- 直接从源代码安装
- Docker 支持容器化部署
- 用于直接 Kasa 智能插座访问和 Home Assistant 集成的连接选项
动态电源管理
由于我的公用事业提供商使用分时 (ToU) 定价。多年来,我已经构建了各种家庭自动化来最大限度地减少高峰时段的电力使用。由于我的工作站可能在满负载时消耗高达 1400W 的功率,因此在昂贵的费率时段添加自动 CPU 和 GPU 节流是有意义的。
Power Optimizer: 系统架构
我的测试表明,在我的特定设置上,将 CPU 频率从 3700MHz 降低到 1500MHz 可以节省大约 225W 的负载,但结果会因硬件而异。功率优化器服务根据以下因素动态调整时钟速度:
- 系统负载(来自 os.getloadavg())
- 当前功耗(来自智能插座)
- 一天中的时间(以考虑 ToU 时段)
Power Optimizer: ToU 适应图
自适应性能控制
最初,我探索了一个完整的 PID(比例-积分-微分)控制器,但事实证明,更简单的 PI(比例-积分)方法更适合电源管理。
PI 控制器侧重于两个关键方面:
- 比例 (P) 项:提供对当前误差的即时比例响应
- 积分 (I) 项:累积过去的误差以消除长期稳态偏差
通过删除微分项,我们:
- 简化控制逻辑
- 减少计算开销
- 保持平滑的性能过渡
- 避免来自导数计算的潜在过度优化
对于具有功率管理等渐进状态变化的系统,微分项通常会引入不必要的复杂性,而没有有意义的好处。
控制器通过考虑以下因素动态调整系统参数:
- 当前系统利用率(CPU/GPU 负载)
- 瞬时功耗
- 分时电价时段
这种方法确保了节能的过渡,而没有完整 PID 实现的复杂性。
Power Optimizer: 控制流程 (带有 PID)
实现和限制
终端界面
仪表盘设计很简单,具有:
- 一个大的、易于阅读的当前瓦数显示
- 基于消耗阈值的颜色编码元素
- 具有可配置刷新间隔的实时更新
- 使用 Unicode 块字符的历史图表,以实现跨终端的兼容性
数据源
该工具支持两个主要数据源:
- 直接 Kasa 连接:直接与 TP-Link Kasa 智能插座通信
- Home Assistant 集成:使用现有的 HA 设置和身份验证令牌
代码具有足够的模块化,因此添加对其他智能插座系统的支持应该不会太困难。
当前限制
这在很大程度上是一个个人项目,有一些限制:
- 目前一次仅支持一个智能插座
- 仅适用于具有能源监控功能的 Kasa 智能插座(例如:EP25)
- 需要直接网络访问插座或 Home Assistant 集成
- 电源管理功能需要具有适当 CPU/GPU 频率控制功能的 Linux 系统
如何使用
基本设置:
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. 版权所有。