> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Команда определения местоположения

## Кратко

* `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 theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw nodes location get --node <idOrNameOrIp>
openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
```

Параметры:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "timeoutMs": 10000,
  "maxAgeMs": 15000,
  "desiredAccuracy": "coarse|balanced|precise"
}
```

Флаги CLI сопоставляются напрямую: `--location-timeout` -> `timeoutMs`, `--max-age` -> `maxAgeMs`, `--accuracy` -> `desiredAccuracy`.

Полезная нагрузка ответа:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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](https://docs2.openclaw.ai/ru/nodes.md)
* [Разбор местоположения в каналах](https://docs2.openclaw.ai/ru/channels/location.md)
* [Съёмка камерой](https://docs2.openclaw.ai/ru/nodes/camera.md)
* [Режим разговора](https://docs2.openclaw.ai/ru/nodes/talk.md)
