
AirBattery 是一款功能强大的 macOS 应用程序,专门设计用于监控和显示您所有苹果设备的电池使用情况。通过创新的"Nearbility Engine"技术,它能够自动搜索并显示周边支持设备的电量信息,无需复杂的配置过程。无论是 iPhone、iPad、Apple Watch 还是其他蓝牙设备,AirBattery 都能在 Dock 栏、状态栏或小组件中实时展示它们的电池状态。
方法一:直接下载
前往 发布页面 下载最新版安装文件。
方法二:Homebrew 安装
brew install lihaoyun6/tap/airbattery# 从系统日志中提取蓝牙设备的电池信息
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的电池信息
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原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。