---
read_when:
    - Добавление поддержки узла геолокации или интерфейса разрешений
    - Проектирование разрешений на доступ к местоположению и поведения приложения в активном режиме на Android
summary: Команда определения местоположения для узлов, режимы разрешений платформы и настройка GeoClue в Linux
title: Команда определения местоположения
x-i18n:
    generated_at: "2026-07-16T16:26:55Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 644229c1eafc8fc7b59bc23ba01d4ba95687ea66c4f9bd4a4cda98a87f2b6085
    source_path: nodes/location-command.md
    workflow: 16
---

## Кратко

- `location.get` — команда Node, вызываемая через `node.invoke` или `openclaw nodes location get`.
- По умолчанию отключено.
- В сторонних сборках для Android используется селектор: Off / While Using / Always. В сборках Play доступны только Off / While Using.
- Precise Location — отдельный переключатель.

## Почему селектор, а не просто переключатель

Разрешения ОС на доступ к местоположению имеют несколько уровней. Точное местоположение также предоставляется отдельным разрешением ОС (в iOS 14+ — «Precise», в Android — «fine» и «coarse»). Селектор в приложении определяет запрашиваемый режим, но фактически предоставляемый уровень по-прежнему определяет ОС.

## Модель настроек

Для каждого устройства 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`: приложение работает в фоновом режиме, но предоставлен доступ только While Using.
- `LOCATION_TIMEOUT`: данные о местоположении не получены вовремя.
- `LOCATION_UNAVAILABLE`: системный сбой или отсутствие поставщиков данных.

## Поведение в фоновом режиме

- Сторонние сборки для Android принимают фоновый запрос `location.get`, только если пользователь выбрал `Always` и Android предоставил фоновый доступ к местоположению. Существующая постоянная служба Node добавляет тип службы `location` и уведомляет об `Location: Always`, пока он активен.
- Сборки Android Play и режим `While Using` отклоняют `location.get` при работе в фоновом режиме.
- На других платформах Node поведение может отличаться.

## Хост Node для Linux

Встроенный плагин Linux Node добавляет `location.get` в службу CLI `openclaw node`, включая безэкранные хосты без приложения Linux для настольных систем. По умолчанию доступ к местоположению отключён. Включите его в записи плагина, затем перезапустите службу Node:

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

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

Плагин использует `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>`.
- Рекомендации для агента: вызывайте только в том случае, если пользователь включил доступ к местоположению и понимает его область действия.

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

- Off: «Передача местоположения отключена».
- While Using: «Только когда OpenClaw открыт».
- Always: «Разрешить запрашиваемые проверки местоположения, когда OpenClaw работает в фоновом режиме».
- Precise: «Использовать точное местоположение по GPS. Выключите этот параметр, чтобы передавать приблизительное местоположение».

## Связанные материалы

- [Обзор Nodes](/ru/nodes)
- [Разбор местоположения в каналах](/ru/channels/location)
- [Съёмка камерой](/ru/nodes/camera)
- [Режим разговора](/ru/nodes/talk)
