Skip to content

sulimu2/Mac-mini-PowerMonitor

Repository files navigation

Mac mini Power Monitor

一个专为 Apple Silicon Mac mini 设计的电源监控应用,实时监测设备功耗、能耗统计和电费估算。

功能特性

  • 🔋 实时功率监控: 通过 IOKit 获取 Mac mini 的实时功耗数据,2秒更新频率
  • 📊 能耗统计: 累计能耗计算(千瓦时)和实时电费估算
  • 📈 历史数据: 支持日、周、月时间范围的历史数据查看和统计分析
  • 🎯 菜单栏集成: 在菜单栏显示实时功率和快捷操作,支持快捷键
  • ⚙️ 集成设置: 主页面选项卡式设置界面,支持电费配置、主题切换和数据管理
  • 🌙 深色模式: 支持系统深色/浅色主题自动切换
  • 💾 数据持久化: 使用 UserDefaults 安全存储历史数据,支持数据导出
  • 🗑️ 数据管理: 支持清除历史数据和导出CSV格式数据
  • 🔄 实时更新: 历史数据页面自动刷新,数据变化即时可见

系统要求

  • macOS 12.0 或更高版本
  • Apple Silicon Mac (M1/M2/M3 系列芯片)
  • Xcode 14.0 或更高版本

安装方法

从源码编译

  1. 克隆仓库:
git clone https://github.com/sulimu2/Mac-mini-PowerMonitor.git
cd Mac-mini-PowerMonitor
  1. 使用 Xcode 打开项目:
open PowerMonitor.xcodeproj
  1. 选择编译目标为 "My Mac" (使用 Apple Silicon)
  2. 点击运行按钮 (⌘R) 编译并运行应用

直接安装

Releases 页面 下载最新版本的 .dmg 安装包,拖拽应用到 Applications 文件夹即可。

使用方法

首次启动

  1. 启动应用后,菜单栏会出现功率显示图标
  2. 点击菜单栏图标可以查看实时数据和快捷操作
  3. 点击"打开主窗口"查看完整的仪表盘界面

主界面功能

  • 仪表盘标签: 显示实时功率仪表、能耗统计和电费估算
  • 历史记录标签: 查看不同时间范围的历史数据图表
  • 设置标签: 配置电费单价、外观主题和数据管理(集成到主页面)

菜单栏功能

  • 显示当前实时功率
  • 快速打开主窗口 (⌘O)
  • 打开设置界面 (⌘,)
  • 重置统计数据 (⌘⇧R)
  • 退出应用 (⌘Q)

配置说明

电费设置

在设置界面中可以配置当地的电费单价(元/千瓦时),默认值为 0.6 元。

数据管理

  • 自动保存: 应用会自动保存最近30天的详细功耗数据
  • 数据清除: 支持一键清除所有历史数据,释放存储空间
  • 数据导出: 支持导出CSV格式的历史数据,方便分析和存档
  • 实时同步: 所有数据变化实时同步到各个界面,确保数据一致性

技术架构

核心框架

  • SwiftUI: 现代化声明式UI框架,支持macOS 12.0+
  • IOKit: Apple官方硬件访问框架,用于获取电源信息
  • Combine: 响应式编程框架,实现数据流管理
  • UserDefaults: 轻量级数据持久化存储

数据流与通信

  1. 数据采集层: IOKit.power_sources → PowerService (实时电源数据获取)
  2. 业务逻辑层: PowerMonitor → DataModel (数据处理和存储管理)
  3. UI展示层: SwiftUI Views + @EnvironmentObject (响应式UI更新)
  4. 通知系统: NotificationCenter (跨组件数据同步和状态更新)

项目结构

Mac-mini-PowerMonitor/
├── PowerMonitor/
│   ├── Models/              # 数据模型层
│   │   ├── PowerMonitor.swift      # 核心监控逻辑
│   │   ├── DataModel.swift        # 数据持久化管理
│   │   └── SettingsManager.swift  # 设置管理
│   ├── Services/            # 服务层
│   │   └── PowerService.swift     # IOKit电源服务
│   ├── Views/              # 视图组件层
│   │   ├── ContentView.swift     # 主界面(选项卡导航)
│   │   ├── DashboardView.swift   # 仪表盘视图
│   │   ├── HistoryView.swift     # 历史记录视图
│   │   ├── SettingsView.swift    # 独立设置视图
│   │   └── MenuBarView.swift     # 菜单栏组件
│   ├── Utilities/           # 工具类
│   │   ├── Constants.swift      # 常量定义
│   │   ├── Extensions.swift     # 扩展方法
│   │   └── AppDelegate.swift    # 应用委托
│   └── Resources/          # 资源文件
│       ├── Assets.xcassets      # 应用图标和资源
│       ├── entitlements.entitlements # 权限配置
│       └── LaunchAgent.plist   # 启动代理配置
├── build.sh               # 构建脚本
├── Package.swift          # Swift包管理配置
├── README.md             # 项目说明文档
├── CHANGELOG.md          # 版本变更日志
├── INSTALL.md           # 安装指南
├── RELEASE_NOTES.md     # 发布说明
└── .gitignore           # Git忽略规则

开发说明

编译选项

  • 确保使用 Apple Silicon 架构编译
  • 需要启用 App Sandbox 和硬件访问权限

调试技巧

  • 查看控制台输出获取详细日志
  • 使用模拟数据模式进行UI测试
  • 监控内存使用情况避免泄漏

常见问题

Q: 为什么功率显示为0?

A: 请确保应用有权限访问电源信息,通常在首次运行时系统会提示授权。

Q: 数据存储在哪里?

A: 应用使用 UserDefaults 存储数据,位置在 ~/Library/Containers/com.tencent.PowerMonitor/Data/Library/Preferences/

Q: 支持 Intel Mac 吗?

A: 目前仅优化支持 Apple Silicon Mac,Intel Mac 可能无法准确获取功耗数据。

贡献指南

欢迎提交 Issue 和 Pull Request!请确保:

  1. 遵循现有的代码风格
  2. 添加适当的测试用例
  3. 更新相关文档

许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

支持与反馈

如有问题或建议,请通过以下方式联系:


⭐ 如果这个项目对你有帮助,请给它一个 Star!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published