====== Команды 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} ] }