核心功能
location-awareness 是一套完整的本地优先位置感知系统,通过 scripts/location.sh 统一入口提供:
- 实时定位:查询当前位置、坐标、所在区域及地图链接
- 智能ETA计算:步行、骑行、驾车三种模式的到达时间预估(基于OpenStreetMap地理编码,可自定义速度)
- 地理围栏(Geofences):持久化保存的地点,支持半径、区域标签、分类标签,可触发自动化动作
- 位置提醒:单次提醒(到达某地时触发,自动删除)与接近警报(proximity alerts)
- POI发现:基于类别的周边兴趣点搜索(咖啡馆、酒吧、餐厅等),支持距离过滤
- 历史统计:到访记录查询、停留时长统计、本周/本月活动分析
显著优点
1. 隐私架构:纯本地运行,支持多种自托管数据源(Home Assistant、OwnTracks、GPSLogger),无需依赖第三方云服务
2. 灵活配置:支持环境变量、密码管理器(pass:)、命令输出(cmd:)等多种密钥注入方式
3. 自动化就绪:systemd定时器集成,实现真正的"到达某地自动通知"工作流
4. 响应式输出:默认人类可读,加--json即转为机器可解析,适合脚本管道
局限性与风险
- 依赖外部基础设施:需自行部署Home Assistant或OwnTracks服务端,初始配置门槛较高
- 精度受数据源限制:GPSLogger文件模式存在刷新延迟;HTTP模式依赖网络稳定性
- 地理编码偏见:ETA查询虽偏向当前位置,但OpenStreetMap数据覆盖度因地区而异
- 单一失败点:所有功能集中在一个shell脚本,若脚本损坏则全技能失效
适合人群
- 已运行Home Assistant的智能家居用户
- 对位置隐私敏感、拒绝Google/Apple位置服务的用户
- 需要"到达办公室自动开启勿扰模式"等自动化场景的技术爱好者
- 希望量化通勤时间、停留习惯的自我追踪者
常规风险
| 风险项 | 等级 | 说明 |
|--------|------|------|
| 位置数据泄露 | 中 | 配置文件需妥善保管,建议用`env:`或`pass:`而非明文 |
| 误触发通知 | 低 | 地理围栏半径建议≥30米,避免GPS漂移导致频繁进出 |
| 依赖失效 | 中 | 定期检查systemd timer状态,避免静默停止更新 |