====== Команды Wear Tracker ======
===== Термины =====
**Место** - местонахождение объекта, идентифицируемое с помощью видимых устройством точек доступа Wi-Fi.
**Известная точка доступа Wi-Fi** - точка доступа, к которой смартфон когда-либо подключался.
**Видимая точка доступа Wi-Fi** - точка доступа, видимая смартфоном в том месте, к которому нужна привязка.
===== lock =====
Команда lock N переводит трекер в непрерывный режим на N минут.
===== get log/msglog =====
Недоступно при использовании UDP-транспорта!
Запрашивает с устройства журнал Wear Tracker (log) или Wear Messages (msglog) в zip-архиве. Команда без параметров передаёт текущий журнал, get log N - упакованный архив, где N может быть от 0 до 9, 0 - самый свежий архив.
Результат запроса доступен через API.
===== get config =====
Запрашивает текущие параметры конфигурации. Рузультат передаётся в ответе команды в виде списка ключ=значение.
Пример ответа на команду:
get_config
is_watch=false
device_id=akwt-c629-c20c-4924-dca2
device_version=1.1.09.M
service_enabled=true
continuously_tracking=true
use_places=true
tracking_period=300
tracking_fast_period=60
tracking_server=udps://rosnavi.pro:8080
block_incoming_calls=false
ok
===== set config =====
Изменение одного или нескольких параметров конфигурации. Внутри пары ключ=значение не должно быть пробелов.
set config
continuously_tracking=false
===== get places =====
Запрашивает с устройства список Мест, известных и видимых точек доступа Wi-Fi.
Команда возвращает список строк вида ключ=значение, где значение - json-объект.
=== Ключи ответа ===
^ Ключ ^ Описание ^
| wifi_N | Известная точка доступа. |
| vifi_N | Видимая (на момент выполнения команды) точка доступа. |
| place_N | Место. |
| wifi_place_N_W | Точки доступа Места N, если они заданы для Места с BSSID-ами. |
=== Ключи JSON-объекта place ===
^ Ключ ^ Описание ^
| name | Название Места. |
| ssid | Массив идентификаторов (SSID) точек доступа, видимых в данном месте. |
| wifi | Массив объектов wifi. |
=== Ключи JSON-объекта wifi ===
Применимо к объектам wifi_XX, vifi_XX, wifi_place_XXX.
^ Ключ ^ Описание ^
| ssid | Идентификатор точки доступа. |
| bssid | Адрес точки доступа. |
| std | Стандарт точки доступа: 0=unknown, 1=legacy, 4=WiFi4(.11n), 5=WiFi5(.11ac), 6=WiFi6(.11ax), 7=WiGi(.11ad), 8=WiFi7(.11be) |
| lvl | Уровень сигнала (на момент последнего наблюдения). |
| upd | Время обновления. |
=== Пример ответа ===
get_places
wifi_0={"ssid":"texx5","bssid":"50:ff:20:5e:a8:56","lvl":-49,"std":4,"upd":1726115258906}
vifi_0={"ssid":"bb-f0f5bdfbc454","bssid":"f0:f5:bd:fb:c4:55","lvl":-43,"std":4,"upd":1726115257237}
vifi_1={"ssid":"texx2","bssid":"50:ff:20:5e:a8:54","lvl":-21,"std":4,"upd":1726115257253}
vifi_3={"ssid":"B880-5304","bssid":"fc:8b:97:58:ec:36","lvl":-52,"std":4,"upd":1726115257274}
place_0={"name":"Маяк-C454","ssid":["bb-f0f5bdfbc454"]}
place_1={"name":"Дом","ssid":["ALK2","ALK0"]}
wifi_place_1_0={"ssid":"ALK2","bssid":"50:ff:20:8d:e7:a2","lvl":0,"std":0,"upd":0}
wifi_place_1_1={"ssid":"ALK2","bssid":"50:ff:20:9c:46:42","lvl":0,"std":0,"upd":0}
wifi_place_1_2={"ssid":"ALK0","bssid":"52:ff:20:1d:e7:a2","lvl":0,"std":0,"upd":0}
wifi_place_1_3={"ssid":"ALK0","bssid":"52:ff:20:9c:46:42","lvl":0,"std":0,"upd":0}
ok
===== set places =====
Установка списка Мест для объекта. Полностью переписывает старый набор Мест.
Параметры команды - набор пар ключ=значение, где ключ должен начинаться со слова place. Значение команды - JSON-объект [[#Ключи JSON-объекта place|place]].
Внутри пары ключ=значение не должно быть пробелов.
Если для Места задан только набор ssid, трекер ищет их адреса в своей локальной базе известных и видимых точек доступа, если не находит ни одного - Место не сохраняется. Если задан набор wifi, содержащий ssid и bssid поля, то Место сохраняется без поиска этих точек в локальной базе.
=== Пример команды ===
set places
place0={
"name":"Маяк-C454",
"ssid":[
"bb-f0f5bdfbc454"
]
}
place1={
"name":"Маяк-C2A2",
"wifi":[
{"ssid":"bb-f0f5bdfbc2a2","bssid":"f0:f5:bd:fb:c2:a2"}
]
}
===== add places =====
Команда добавляет на устройство Места, не стирая ранее созданные. Места добавляются без проверки по локальной базе точек доступа, поэтому обязательно наличие полностью определённого (ssid и bssid) набора точек.
Если Место с таким же именем уже существует, оно перезаписывается новым. Если новое место содержит пустой набор wifi - старое место удаляется, а новое не создаётся.
== Пример команды ==
add places
place0={
"name":"Дом",
"wifi":[
{"ssid":"ALK2","bssid":"50:ff:20:8d:e7:a2"},
{"ssid":"ALK2","bssid":"50:ff:20:9c:46:42"}
]
}
===== get actions =====
Запрашивает с устройства N последних записей журнала событий (Action Log) Wear Messages.
Для каждой записи отдаётся её json-представление и (опционально) представление в виде строки.
== Пример команды ==
get actions 2
item0=Item{2025-02-24T12:06:11+05,RemoteGetActionLog,1 items}
json0={"time":1740380771977,"action":24,"subject":"","note":"1 items"}
item1=Item{2025-02-21T17:54:50+05,RemoteSetFilters,2 added}
json1={"time":1740142490121,"action":23,"subject":"","note":"2 added"}
===== get filters =====
Запрашивает с устройства список SMS-фильтров приложения Wear Messages.
Команда возвращает список строк вида ключ=значение, где значение - json-объект представления фильтра.
Фильтр состоит из массива условий (Conditions) и массива действий (Actions). Фильтр срабатывает, если выполнились все условия. Для сработавшего фильтра выполняются все действия.
Фильтры применяются:
* К новым SMS: фильтры, не содержащие условие возраста, в момент приёма сообщения.
* Ко всем SMS: фильтры, включающие условие возраста, при каждом запуске приложения, но не чаще чем один раз в час.
==== Condition ====
Условие состоит из двух полей: Тип и Аргумент.
Type: Int - тип условия.\\
Arg: String - параметр применения условия, зависит от типа.
^ Тип ^ Название ^ Аргумент ^ Описание ^
| 0 | Короткий номер | - | Номер сообщения короче 10 цифр или содержит не-цифровые символы. |
| 1 | Возраст | 5 days | Возраст сообщения больше или равен указанному в аргументе. Допустимые модификаторы размерности: m[inutes], h[ours], d[ays]. |
| 2 | Шаблон | 799912 | Номер сообщения начинается с цифр или других символов указанных в аргументе. |
==== Actions ====
Действие состоит из двух полей: Тип и Аргумент.
Type: Int - тип действия.\\
Arg: Int - параметр действия, зависит от типа.
^ Тип ^ Действие ^ Аргумент ^
| 0 | Удалить | 0=Сообщение, 1=Беседу |
| 1 | Переслать | 0=Email, 1=Telegram |
=== Пример команды ===
get filters
filter0={
conditions:[
{"type":0,arg="-"},
{"type":1,"arg":"10 min"}
],
actions:[
{"type":0,"arg":0},
{"type":1,"arg":0}
]
}
===== set/append filters =====
Загружает на устройство список SMS-фильтров приложения Wear Messages. В случае "set" переданный список фильтров полностью заменяет старый, с случае "append" новые фильтры добавляются к имеющимся. Список фильтров передаётся одной строкой, пробелы внутри json-представления недопустимы (использовать url-кодирование строк).
=== Пример команды ===
set filters
filter0={
conditions:[
{"type":0,arg="-"},
{"type":1,"arg":"10min"}
],
actions:[
{"type":0,"arg":0},
{"type":1,"arg":0}
]
}