Nodes and media

Команда визначення місцезнаходження

Коротко

  • location.get — це команда Node, яку викликають через node.invoke або openclaw nodes location get.
  • За замовчуванням вимкнено.
  • Сторонні збірки Android використовують селектор: Вимкнено / Під час використання / Завжди. У збірках Play залишаються варіанти Вимкнено / Під час використання.
  • Точне місцезнаходження вмикається окремим перемикачем.

Чому селектор, а не просто перемикач

Дозволи ОС на доступ до місцезнаходження мають кілька рівнів. Точне місцезнаходження також є окремим дозволом ОС («Precise» в iOS 14+, «fine» і «coarse» в Android). Селектор у застосунку визначає запитуваний режим, але фактично наданий дозвіл усе одно визначає ОС.

Модель налаштувань

Для кожного пристрою Node:

  • location.enabledMode: off | whileUsing | always
  • location.preciseEnabled: bool

Поведінка інтерфейсу:

  • Вибір whileUsing запитує дозвіл на доступ під час використання.
  • Вибір always у сторонній збірці Android спочатку запитує дозвіл на доступ під час використання, пояснює фоновий доступ, а потім відкриває налаштування застосунку Android для окремого дозволу Allow all the time.
  • Збірки Android Play не оголошують дозвіл на фоновий доступ до місцезнаходження й не показують always.
  • Якщо ОС відхиляє запитаний рівень, застосунок повертається до найвищого наданого рівня та показує стан.

Відповідність дозволів (node.permissions)

Необов’язково. Node для macOS повідомляє location через мапу permissions у node.list/node.describe; iOS/Android можуть не передавати це значення.

Команда: location.get

Викликається через node.invoke або допоміжну команду CLI:

bash
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000

Параметри:

json
{  "timeoutMs": 10000,  "maxAgeMs": 15000,  "desiredAccuracy": "coarse|balanced|precise"}

Прапорці CLI мають пряму відповідність: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.

Дані відповіді:

json
{  "lat": 48.20849,  "lon": 16.37208,  "accuracyMeters": 12.5,  "altitudeMeters": 182.0,  "speedMps": 0.0,  "headingDeg": 270.0,  "timestamp": "2026-01-03T12:34:56.000Z",  "isPrecise": true,  "source": "gps|wifi|cell|unknown"}

Помилки (стабільні коди):

  • LOCATION_DISABLED: селектор вимкнено.
  • LOCATION_PERMISSION_REQUIRED: немає дозволу для запитаного режиму.
  • LOCATION_BACKGROUND_UNAVAILABLE: застосунок працює у фоновому режимі, але надано дозвіл лише на доступ під час використання.
  • LOCATION_TIMEOUT: не вдалося вчасно визначити місцезнаходження.
  • LOCATION_UNAVAILABLE: системна помилка або немає постачальників даних.

Поведінка у фоновому режимі

  • Сторонні збірки Android приймають фонові запити location.get лише тоді, коли користувач вибрав Always, а Android надав дозвіл на фоновий доступ до місцезнаходження. Наявна постійна служба Node додає тип служби location і показує Location: Always, поки вона активна.
  • Збірки Android Play і режим While Using відхиляють location.get, коли застосунок працює у фоновому режимі.
  • На інших платформах Node поведінка може відрізнятися.

Хост Node для Linux

Вбудований Plugin Linux Node додає location.get до служби CLI openclaw node, зокрема на хостах без графічного інтерфейсу, де немає настільного застосунку Linux. Визначення місцезнаходження за замовчуванням вимкнено. Увімкніть його в записі Plugin, а потім перезапустіть службу Node:

json5
{  plugins: {    entries: {      "linux-node": {        config: {          location: { enabled: true },        },      },    },  },}

Установіть GeoClue2 та його демонстраційну програму where-am-i (geoclue-2-demo у Debian і Ubuntu). Політика GeoClue та агент авторизації хоста мають дозволяти доступ користувачу служби Node.

Plugin використовує where-am-i замість послідовності викликів busctl. GeoClue прив’язує створення клієнта, властивості, запуск, оновлення та зупинення до одного клієнтського з’єднання D-Bus; демонстраційна програма зберігає цей життєвий цикл цілісним, тоді як окремі підпроцеси busctl — ні. Жодної залежності npm не додається.

Linux зіставляє coarse, balanced і precise з рівнями точності GeoClue 4, 6 і 8. Значення maxAgeMs перевіряється за повернутою часовою позначкою. Демонстраційна програма GeoClue не вказує вибраного постачальника даних, тому source має значення unknown; isPrecise має значення true лише тоді, коли повідомлена точність становить 100 метрів або краща.

Linux використовує ті самі стабільні помилки: LOCATION_DISABLED, LOCATION_TIMEOUT і LOCATION_UNAVAILABLE.

Інтеграція з моделлю та інструментами

  • Інструмент агента: дія location_get інструмента nodes (потрібен Node).
  • CLI: openclaw nodes location get --node <id>.
  • Рекомендації для агента: викликати лише тоді, коли користувач увімкнув доступ до місцезнаходження та розуміє його обсяг.

Текст інтерфейсу (рекомендований)

  • Вимкнено: «Надання даних про місцезнаходження вимкнено».
  • Під час використання: «Лише коли OpenClaw відкрито».
  • Завжди: «Дозволити запитувані перевірки місцезнаходження, коли OpenClaw працює у фоновому режимі».
  • Точне: «Використовувати точне місцезнаходження за GPS. Вимкніть перемикач, щоб надавати приблизне місцезнаходження».

Пов’язані матеріали

Was this useful?
On this page

On this page