核心用法
location-awareness 是一个命令行驱动的位置感知技能,通过统一封装 scripts/location.sh 脚本,提供从基础定位到复杂地理围栏自动化的一站式解决方案。用户可通过自然语言触发查询——如"步行回家多久"自动解析为 eta home --mode walk,返回距离与预估时间;支持保存自定义地点、设置基于位置的提醒(到达某处时触发)、查询历史轨迹("上周我在公司待了多久")等功能。
架构上采用 Provider 模式解耦数据源,默认对接 Home Assistant 的 device_tracker 实体,同时支持 OwnTracks、通用 HTTP API 及 GPSLogger 本地文件四种接入方式,配置集中于 scripts/config.json,密钥支持环境变量、密码管理器或命令动态获取。地理围栏系统为核心亮点:每个围栏包含经纬度、半径、冷却时间、关联动作及启用状态,配合 systemd 定时器可实现全自动化的 cron 检查与多渠道通知(Signal/Telegram 等)。
显著优点
- 多源兼容性强:覆盖主流自托管方案(HA/OwnTracks)与极简文件模式,降低接入门槛
- 隐私优先设计:数据可完全本地流转(GPSLogger 模式),不依赖第三方云服务
- 响应极简:设计哲学要求"Terse"输出,直接返回结果无废话,适合自动化脚本和消费
- 灵活扩展:JSON 输出模式、
speeds_kmh自定义速度、区域/分类标签系统支持复杂查询 - 自动化闭环:systemd 定时器 +
clawdbot message send实现"到达即通知"的完整工作流
潜在缺点与局限性
- 依赖外部 GPS 源:本身不具备定位能力,需预先配置稳定的 Provider,断链即失效
- 配置门槛较高:
config.json/geofences.json手动编辑 + systemd 服务管理,对非技术用户不够友好 - 地理编码依赖 OpenStreetMap:
eta对陌生地点的解析质量受 OSM 数据完整性制约 - 无内置持久化数据库:历史查询依赖 Provider 或本地文件,长期轨迹存储能力有限
- 权限管理粗放:仅通过文件系统权限保护配置,缺乏多用户或细粒度访问控制
适合人群
- Home Assistant 深度用户:已有设备追踪实体,希望扩展 CLI 自动化场景
- 隐私敏感的技术从业者:追求自托管、最小化云端暴露的位置管理方案
- 量化自我爱好者:需要统计驻留时长、到访频率等维度的个人数据分析师
- 地理位置自动化需求者:如"到达超市推送购物清单"、"离开办公室发送通知"等场景
常规风险
- 位置数据泄露:
config.json若包含明文 token 且权限配置不当,存在敏感信息泄露风险;建议配合pass:或env:模式管理密钥 - 地理围栏漂移:GPS 精度与半径设置不匹配可能导致误触发或漏触发,需根据场景微调
radius_m - 依赖链故障:Provider 服务中断、systemd 定时器未启用或通知渠道配置错误会导致自动化静默失效
- 历史数据精度:基于采样点的驻留统计可能遗漏短时停留,不适用于精确考勤或法律举证