写点什么

AirBattery - 在 Mac 上实时监控所有苹果设备电量

作者:qife122
  • 2025-10-10
    福建
  • 本文字数:1907 字

    阅读完需:约 6 分钟

AirBattery - 在Mac上实时监控所有苹果设备电量

项目简介

AirBattery 是一款功能强大的 macOS 应用程序,专门设计用于监控和显示您所有苹果设备的电池使用情况。通过创新的"Nearbility Engine"技术,它能够自动搜索并显示周边支持设备的电量信息,无需复杂的配置过程。无论是 iPhone、iPad、Apple Watch 还是其他蓝牙设备,AirBattery 都能在 Dock 栏、状态栏或小组件中实时展示它们的电池状态。

功能特性

  • 多设备电池监控:自动检测并显示 iPhone、iPad、Apple Watch 等苹果设备的电池电量

  • 多种显示方式:支持在 Dock 栏、状态栏和小组件中显示电池信息

  • 智能设备发现:基于"Nearbility Engine"自动搜索周边设备,无需手动配置

  • Nearcast 功能:支持在局域网内查看其他 Mac 及其外设的电量信息

  • 实时状态栏图标:可配置为实时显示电量图标,类似系统原生风格

  • 设备隐藏管理:可根据需要隐藏特定设备,随时恢复显示

  • 蓝牙设备支持:通过蓝牙权限获取周边设备数据包并解析电池信息

安装指南

系统要求

  • macOS 11.0 及更高版本

安装方法

方法一:直接下载前往 发布页面 下载最新版安装文件。


方法二:Homebrew 安装


brew install lihaoyun6/tap/airbattery
复制代码

使用说明

基础使用

  1. 启动 AirBattery 后,默认会同时显示在 Dock 栏和状态栏上

  2. 应用程序会自动搜索所有支持隔空电量获取的设备

  3. 点击 Dock 图标、状态栏图标或添加小组件即可查看设备电量

高级功能

  • 在偏好设置中可切换状态栏图标为实时电量显示

  • 使用 Dock 栏菜单或状态栏菜单隐藏/显示特定设备

  • 利用 Nearcast 功能查看局域网内其他设备的电量状态

核心代码解析

蓝牙设备电池数据解析

# 从系统日志中提取蓝牙设备的电池信息PRED='subsystem == "com.apple.bluetooth" AND (category == "CBStackDeviceMonitor" OR category == "Server.GATT") AND (eventMessage CONTAINS "Battery" OR eventMessage CONTAINS "statedump: 0x001A" OR eventMessage CONTAINS "statedump: 0x001D")'
# 查询系统日志获取蓝牙设备数据data=$(/usr/bin/nice -n 19 /usr/bin/log show $STYLE $LVL --predicate "$PRED" --last "$WINDOW")
# 解析电池信息并生成JSON格式输出for i in `echo "$data"|grep "Battery"|grep -v "VID 0x004C"`do time=`echo $i|awk '{print $1"T"$2}'` name=`echo $i|grep -o ", Nm '.*', PID"|sed "s/, Nm '//g;s/', PID//g"` type=`echo $i|grep -o ", DvT [A-z]*"|sed "s/, DvT //g"` batt=`echo $i|grep -o ", Battery M [+-]*[0-9]*%"|grep -o "\d*"` stat=`echo $i|grep -o ", Battery M [+-]*[0-9]*%"|grep -Eo "\+|\-"` mac=`echo $i|grep -o ", BDA [A-z0-9:]*"|sed "s/, BDA //g"` # 输出格式化JSON数据 echo "{\"time\": \"$time\", \"vid\": \"$vid\", \"pid\": \"$pid\", \"type\": \"$type\", \"mac\": \"$mac\", \"name\": \"$name\", \"level\": $batt, \"status\": \"$stat\"}"done
复制代码

Apple Pencil 电池监控

# 查询Apple Pencil的电池信息data=`$syslog $type -u $id --process SpringBoard -m '"Accessory Category" = Pencil;' -T SpringBoard`
# 解析电池容量和充电状态batt=`echo "$data"|grep "Current Capacity"|grep -o "[0-9]*"|sed -n '$p'`stat=`echo "$data"|grep "Is Charging"|grep -o "[0-9]*"|sed -n '$p'`model=`echo "$data"|grep "Product ID"|grep -o "[0-9]*"|sed -n '$p'`vendor=`echo "$data"|grep "Vendor ID"|grep -v Source|grep -o "[0-9]*"|sed -n '$p'`
# 输出Pencil设备信息echo "{\"level\": $batt, \"status\": $stat, \"model\": \"$model\", \"vendor\": \"$vendor\"}"
复制代码

设备特征值数据解析

# 解析GATT特征值数据获取设备信息devData=`echo "$data"|grep -E "statedump: 0x001A Characteristic Value|statedump: 0x001D Characteristic Value"|grep -o "\[[A-z0-9 ]*\]"|sed 's/\[ //g;s/ \]//g'|awk '{if (NR%2==1) {line=$0} else {print line, $0}}'|awk 'length($0) == 23'`
# 结合系统蓝牙配置信息完善设备数据btData=`/usr/sbin/system_profiler SPBluetoothDataType`for i in `paste -d ' ' <(echo "$times") <(echo "$devData")`do # 提取设备VID、PID并匹配设备名称 vid=`echo $i|awk '{print "0x"$4$3}'` pid=`echo $i|awk '{print "0x"$6$5}'` name=`echo "$btData"|grep -B3 $pid|sed -n '1p'|sed 's/^ *//g;s/:$//g'` type=`echo "$btData"|grep -A5 $pid|grep "Minor Type: "|sed 's/^ *Minor Type: //g'`done
复制代码


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
AirBattery - 在Mac上实时监控所有苹果设备电量_macos_qife122_InfoQ写作社区