《第一次实战》那篇的结尾许过愿:电池剩余接入监控。这次兑现。完整链路三步:读取状态 → 定时聚合 → 面板展示,每一步都比想象中简单,也比想象中讲究。
读取:从 USB 到 JSON
大多数家用 UPS 都支持 USB 通信,nut 或 apcupsd 这类守护进程能把状态暴露成标准接口。我取的是三个字段:电池剩余百分比、预估续航、市电状态。采集频率五分钟一次——和站点统计同一个定时器,能复用的调度器就不新建。
聚合:写进 stats.json
# 伪代码:三行说完采集逻辑
battery = read_ups_battery()
history[date] = battery
panel["ups_percent"] = battery
聚合时做了两件小事:历史值写进本地文件做滚动保留(画趋势图用),当前值只保留最新一份。监控数据的写入永远用"临时文件 + 原子替换",避免面板读到写了一半的文件。
展示:首页一行字
面板上它只是一行小字:"市电 · 电池 100%"。安静、不闪、不弹。所有监控展示都应该这样:正常时低调存在,异常时高声呐喊——这才是"电池剩余"四个字该有的性格。
监控的上限不是技术,是克制:展示你能解释的,隐藏你只是能采集的。
至此,首页控制台的每一格数据都有了自己的采集故事。据点的"神经系统"又长了一根末梢。