OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  location-awareness:通过隐私友好的 GPS 追踪实现位置感知

location-awareness:通过隐私友好的 GPS 追踪实现位置感知

 
  training ·  2026-02-04 23:25:50 · 3 次点击  · 0 条评论  

名称: location-awareness
版本: 1.2.0
描述: 通过隐私友好的 GPS 追踪(支持 Home Assistant、OwnTracks、GPS Logger)实现位置感知。可设置基于位置的提醒,并查询移动历史、行程时间和附近兴趣点。
元数据: {"clawdbot":{"emoji":"📍","requires":{"bins":["python3"]}}}


位置感知

本技能提供可执行的命令。当用户询问位置信息时,请运行下方对应的命令。

⚠️ 重要提示:所有命令均使用 scripts/location.sh

每条命令都必须通过 scripts/location.sh 运行。例如:

用户提问: “步行回家要多久?”
你应运行:

scripts/location.sh eta home --mode walk

输出: 4.6 km,步行约 45 分钟
你直接回复输出内容即可。

请勿直接运行 eta 或其他子命令——它们并非独立的可执行命令。

快速参考 —— 运行什么

用户提问 运行此命令(请精确复制) 回复内容
“我在哪?” scripts/location.sh status 仅区域名称
“地图” / “地图链接” scripts/location.sh herewego 仅返回 URL
“我的坐标是多少?” scripts/location.sh status 输出中的经纬度
“步行回家要多久?” scripts/location.sh eta home --mode walk 距离 + 时长
“骑自行车到 X 要多久?” scripts/location.sh eta X --mode bike 距离 + 时长
“开车到 X 有多远?” scripts/location.sh eta X --mode car 距离 + 时长
“当我到达 Y 时,提醒我 X” scripts/location.sh remind "X" Y 简短确认
“我有哪些提醒?” scripts/location.sh reminders 项目列表或“无”
“列出我的地点” scripts/location.sh places 项目列表
“列出附近的地点” scripts/location.sh places --near 按距离排序
“列出我在市中心的酒吧” scripts/location.sh places --region downtown --category pub 筛选后的列表
“将此处保存为 X” scripts/location.sh addplace "X" 确认
“删除地点 X” scripts/location.sh delplace X 确认
“禁用杂货店规则” scripts/location.sh disable grocery 确认
“列出我的地理围栏规则” scripts/location.sh geofences 项目列表
“我上次在 X 是什么时候?” scripts/location.sh history X 日期/时间
“我今天去过哪些地方?” scripts/location.sh history --days 1 地点列表
“在附近找一家咖啡馆” scripts/location.sh nearby cafe 带距离的兴趣点列表
“1 公里内有酒吧吗?” scripts/location.sh nearby pub 1000 筛选后的兴趣点列表
“我这周在工作地点待了多久?” scripts/location.sh stats --days 7 各地点停留时长

回复风格: 简洁。无需前言。不要说“这是你的位置:”。直接给出答案。

所有命令

所有命令均通过 scripts/location.sh <命令> 执行:

命令 描述
status 当前位置、进入的地理围栏、地图链接
herewego 仅返回 HERE WeGo 地图链接
check 检查是否有触发的动作/提醒(由 cron 使用)
places [--near] [--region R] [--category C] 列出已保存的地点
geofences 列出所有地理围栏的完整详情
remind <文本> <地点ID> 添加一次性位置提醒
reminders 列出待处理的提醒
addplace <名称> [半径] [--region R] [--category C] 保存当前位置
editplace <ID> [--name] [--radius] [--region] [--category] [--action] [--cooldown] 修改地点
delplace <ID> 删除地点
enable <ID> / disable <ID> 启用/禁用地理围栏
history [地点] [--days N] 我上次在某个地点是什么时候?
nearby <类别> [半径] 查找附近兴趣点(咖啡馆、酒吧、餐厅等)
stats [--days N] 在每个地点花费的时间、访问次数
proximity <文本> <地点/纬度> [经度] [半径] 接近某位置时发出警报
eta <地点> [--mode walk\|bike\|car] 前往某地点的行程时间和距离

注意: eta 接受已保存的地点名称、坐标(纬度,经度)或任何地点名称(通过 OpenStreetMap 进行地理编码,偏向当前位置)。

注意: status 如果在已知地点内,则返回区域名称,否则通过反向地理编码返回街道地址(例如,“市中心,主街 123 号”)。

概念

地理围栏 —— 包含经纬度、半径和可选动作的已保存地点。持久化存储。

提醒 —— 与地点绑定的一次性提醒。送达后删除。

区域/类别 —— 用于筛选的可选标签(例如,“市中心”、“酒吧”)。


设置(供管理员使用)

提供程序配置

编辑 scripts/config.json

Home Assistant(默认):

{
  "provider": "homeassistant",
  "homeassistant": {
    "url": "https://your-ha.example.com",
    "token": "your-long-lived-token",
    "entity_id": "device_tracker.phone"
  }
}

OwnTracks:

{
  "provider": "owntracks",
  "owntracks": {
    "url": "https://owntracks.example.com",
    "user": "username",
    "device": "phone"
  }
}

通用 HTTP:

{
  "provider": "http",
  "http": {
    "url": "https://your-api.com/location",
    "headers": {"Authorization": "Bearer token"}
  }
}

GPSLogger(基于文件):

{
  "provider": "gpslogger",
  "gpslogger": {
    "file": "/path/to/location.json"
  }
}

支持密钥管理:"env:变量名"(从环境变量读取)或纯字符串。

替代方案: 完全通过环境变量配置(无需 config.json):

提供程序 环境变量
LOCATION_PROVIDER homeassistantowntrackshttpgpslogger(默认:homeassistant
Home Assistant HA_URLHA_TOKENHA_ENTITY_ID
OwnTracks OWNTRACKS_URLOWNTRACKS_USEROWNTRACKS_DEVICEOWNTRACKS_TOKEN
HTTP LOCATION_HTTP_URL
GPSLogger GPSLOGGER_FILE

环境变量的优先级高于 config.json 中的值。请在 ~/.openclaw/.env 或你的 shell 环境中设置它们。

输出格式: 大多数查询命令默认输出人类可读的文本。添加 --json 参数可获取 JSON 输出(适用于脚本处理)。

出行速度

scripts/config.json 中自定义步行/骑行速度以进行 ETA 计算:

{
  "speeds_kmh": {
    "walk": 6,
    "bike": 15
  }
}

地理围栏配置

编辑 scripts/geofences.json

{
  "geofences": [
    {
      "id": "grocery",
      "name": "杂货店",
      "lat": 40.7128,
      "lon": -74.0060,
      "radius_m": 30,
      "action": "shopping_tasks",
      "cooldown_hours": 4,
      "enabled": true,
      "region": "downtown",
      "category": "shop"
    }
  ],
  "location_reminders": [],
  "proximity_alerts": []
}

自动通知(OpenClaw Cron)

使用 OpenClaw 内置的 cron 运行定期位置检查。在 ~/.openclaw/cron/jobs.json 中添加一个任务:

{
  "name": "位置检查",
  "schedule": "*/5 * * * *",
  "prompt": "运行 scripts/location.sh check --json 并通知我任何触发的动作、提醒或接近警报。",
  "channel": "signal",
  "to": "+1234567890",
  "wakeMode": "now"
}

这可以将调度保留在 OpenClaw 内部,无需依赖外部 systemd 服务。

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor