mac可通过快捷指令+applescript读取电池电量,达阈值后调用api关闭支持http控制的智能插座;需开启插座远程控制、配置正确ip与路径、授予快捷指令完全磁盘访问权限并重启app,否则自动化静默失效。

Mac电量充到指定比例时自动切断充电回路,需绕过系统无法直接控制硬件插座的限制,用电池状态触发快捷指令→调用AppleScript读取实时电量→满足阈值后执行终端命令关闭智能插座API接口。这一步必须依赖支持HTTP控制的智能插座(如BroadLink RM4、TP-Link Kasa或HomeKit兼容设备),普通定时插座无法响应Mac指令。
确认智能插座是否支持远程断电
打开智能插座配套App(如Kasa、Home或BroadLink),进入设备设置页,查找“远程控制”“HTTP API”“开发者模式”或“本地局域网控制”开关并开启。若无此类选项,该插座不支持本方案,需更换为支持LAN控制的型号。HomeKit配件可跳过此步,直接进入家庭自动化配置。
在终端中执行 curl -X POST "http://[插座IP]:8080/switch?state=off"(示例地址,以实际API文档为准),观察插座是否断电。成功返回{"status":"off"}即表示可用;返回超时或404说明IP错误、端口未开放或固件版本过旧。
用快捷指令读取当前电池百分比并判断阈值
打开“快捷指令”App → 点击右上角“+” → 选择“自动化” → “创建个人自动化” → 搜索并选择“特定时间” → 设为“每15分钟” → 关闭“运行前询问”。
点击“下一步” → 添加操作 → 搜索“运行AppleScript” → 粘贴以下脚本:
set battLevel to do shell script "pmset -g batt | grep -oE '[0-9]+%' | head -n 1 | tr -d '%'"
if battLevel as integer ≥ 80 then
do shell script "curl -X POST 'http://192.168.3.105:9999/power/off' --max-time 3"
end if
⚠️注意:脚本中192.168.3.105:9999/power/off需替换为你插座的真实局域网IP和关断路径;若使用HomeKit设备,请改用“控制家庭配件”操作并选取对应插座→设为“关闭”。
为快捷指令授予必要权限
前往“系统设置” → “隐私与安全性” → 滚动到底部点“完全磁盘访问” → 点击右下角锁形图标输入密码解锁 → 点击“+” → 依次添加:“快捷指令”、“终端”、“脚本编辑器”。
【必须重启快捷指令App才能使权限生效】。不重启会导致AppleScript执行失败且无报错提示,自动化静默失效。
验证与故障排查
手动运行该自动化一次:长按自动化条目 → “运行” → 观察状态栏电池图标旁是否短暂出现闪电符号(表示正在执行)→ 查看插座是否断电。
若失败,在终端中单独运行 pmset -g batt,确认输出含“; charged”或“%; discharging”,否则说明Mac未识别电池状态,可能处于外接UPS或SMC异常状态。此时需重置SMC(M系列芯片无需此步)或断开所有外设后重启。
执行 battery status(需已安装battery工具)确认当前充电上限未被锁定在80%,否则系统会主动暂停充电,导致脚本读取的battLevel长期卡在80%而无法触发后续动作。











