LunarisApp: интеграция Macrodroid
LunarisApp для поддерживаемых ГУ позволяет настроить собственные сценарии для отслеживания и управления функциями авто. В данной статье размещена информация для написания собственных и редактирования существующих макросов Macrodroid.
Оглавление
- Общие понятия
- События кнопок руля
- Функции LunarisApp
- Управление функциями авто
- Управление окнами, шторкой и люком
- Состояние авто
- Готовые макросы
Общие понятия
В контексте LunarisApp существует 2 механизма взаимодействия: Settings.Global и Android Intent’s.
Параметры Settings.Global
Это системное хранилище параметров Android, которое поддерживает чтение/запись и уведомления об изменении значений.
В контексте LunarisApp: сам LunarisApp записывает в опции состояние авто, а Macrodroid может их читать и реализовывать логику.
Изменять значения опций Settings.Global, устанавливаемых LunarisApp, не нужно!
В действиях Macrodroid макросов вы можете читать значение в переменную макроса:
Действие -> Установить переменную -> Значение = Настройка системы (Global) -> имя опции из LunarisApp.
В триггере Macrodroid макроса вы можете установить триггер на изменение опции:
События устройства -> Настройка системы -> Global, текст = имя опции из LunarisApp.
Данные опции помечены [SGV].
Пример: LunarisApp сохраняет в опцию ru.mark99.prop.gear текущее состояние КПП. Вы можете установить триггер на изменение этой опции, читать значение (P / D / R / N) и при переключении в D (drive) желать приятного пути.
Интенты (intent) LunarisApp
Интент – сообщение в системе Android, которые передаются от приложения к приложению. Они содержат: имя пакета (имя пакета приложения-получателя), имя действия (строка) и могут содержать дополнения: набор параметров с именем и значением (ключ-значение).
В контексте LunarisApp: это всегда пользовательские (не системные) интенты. Часть интентов отправляется из LunarisApp в Macrodroid (для получения событий), часть отправляются из Macrodroid в LunarisApp для совершения каких-либо действий с авто.
Для событий LunarisApp -> Macrodroid вы можете установить триггер: Триггер -> События устройства -> Интент получен, действие = имя из LunarisApp. Пометка: [I L->M]
Для совершения действий Macrodroid -> LunarisApp можно использовать Действие -> Действия устройства -> Отправить интент. Пометка: [I M->L]
В данном случае нужно заполнить интент для отправки: цель = broadcast, имя пакета = ru.mark99.carapp, действие = имя опции LunarisApp, дополнения нужно заполнять только в случае, если этого требует опция.
В описании действий есть пометки о имени опции, их возможных значениях и типе данных – этого следует придерживаться, чтобы ваши действия выполнялись корректно.
Пример 1: включить подогрев руля
Действия устройства -> Отправить интент: Цель = broadcast, имя пакета = ru.mark99.carapp, действие = ru.mark99.carapp.func.wheelheat.enable, дополнения заполнять не нужно
Пример 2: открыть водительское окно на 70%
Действия устройства -> Отправить интент: Цель = broadcast, имя пакета = ru.mark99.carapp, действие = ru.mark99.carapp.func.window, дополнение 1 [имя = windowId, значение = 0, тип целое число/целая], дополнение 2 [имя = value, значение = 70, тип целое число/целая]
Пример 3: ловить долгие нажатия клавиши Menu
Триггер -> События устройства -> Интент получен, действие = ru.mark99.carapp.key.menu.long_click
События кнопок руля
События кнопок руля передаются через интенты и бывают двух видов: обработанные и необработанные.
Необработанные события передаются при наступлении простых событий кнопки – нажата либо отпущена. Декодировать двойной клик, долгое нажатие нужно самостоятельно.
Обработанные события передаются уже декодированные и в виде короткого, длинного и т.д. нажатия.
Формат действия для необработанных событий: [I L->M] ru.mark99.raw.key.<keyName>.<keyAction 0/1>
Пример: кнопка Menu нажата = ru.mark99.raw.key.menu.1
Формат действия для обработанных событий: [I L->M] ru.mark99.key.<keyName>.<keyActionName>
Пример: обычное нажатие Menu = ru.mark99.key.menu.click [I L->M]
Возможные имена кнопок: playpause, playnext, playprev, home, mode, mute, voice, call, voldown, volup
Возможные имена обработанных событий: click, long_click для всех; holding, holding_start, holding_end – только для кнопок громкости
Обращаю внимание: если вы собираетесь использовать макросы для обработки кнопок следует назначить в LunarisApp действие на кнопку “Ничего не делать”, в ином случае сработает и макрос и действие LunarisApp одновременно.
Обратите внимание: по умолчанию отправка интентов кнопок руля отключена в LunarisApp, включите ее в разделе интеграций Macrodroid
Функции LunarisApp
Включение режима “К дилеру”: [I L->M] ru.mark99.carapp.dealermode.1
Отключение режима “К дилеру”: [I L->M] ru.mark99.carapp.dealermode.0
Вход ГУ в спящий режим: [I L->M] ru.mark99.powerservice.ihuoffstate.enter
Выход ГУ из спящего режима: [I L->M] ru.mark99.powerservice.ihuoffstate.exit
Открытие приложений в режиме разделённого экрана (сплит)
[I M->L] ru.mark99.carapp.split.open
Дополнение 1: app1 = <имя пакета приложения 1>, тип строка
Дополнение 2: app2 = <имя пакета приложения 2>, тип строка
Включить режим “К дилеру”: [I M->L] ru.mark99.carapp.dealer_mode.enable
Дополнение 1: unlockCode = <код разблокировки из цифр>, тип строка
Отключить режим к дилеру: [I M->L] ru.mark99.carapp.dealer_mode.disable
Управление функциями авто
Подогрев руля: [I M->L] ru.mark99.carapp.func.wheelheat.<act>
Подогрев форсунок: [I M->L] ru.mark99.carapp.func.nozzleheat.<act>
Подогрев зоны дворников: [I M->L] ru.mark99.carapp.func.windshieldheat.<act>
Подогрев заднего стекла и зеркал: [I M->L] ru.mark99.carapp.func.defrostrear.<act>
Обдув лобового стекла: [I M->L] ru.mark99.carapp.func.defrostfront.<act>
Светодиодные дневные огни (ДХО): [I M->L] ru.mark99.carapp.func.drl.<act>
Доступные действия <act>: enable (включить), disable (отключить), toggle (переключить)
Подогрев сидений: [I M->L] ru.mark99.carapp.func.climat.seatheat
Дополнение 1: posId = 1 (водительское) или 4 (пассажирское), тип целое
Дополнение 2: value = число от 0 до 3, где 0 – выключено, тип целое
Управление окнами, шторкой и люком
Управление окнами: [I M->L] ru.mark99.carapp.func.window
Дополнение 1: windowId = см идентификаторы ниже, тип целое число
Дополнение 2: value = от 0 (закрыто) до 100 (полностью открыто), тип целое число
Идентификаторы окон: 0 – водительское, 1 – пассажирское, 2 – левое заднее, 3 – правое заднее
Управление состоянием люка: [I M->L] ru.mark99.carapp.func.sunroof.state
Дополнение 1: state = 0 – закрыто, 1 – полностью открыт, 2 – микро проветривание, тип целое число
Управление люком в % открытия: [I M->L] ru.mark99.carapp.func.sunroof
Дополнение 1: value = от 0 (закрыто) до 100 (полностью открыто), тип целое число
Управление состоянием шторки: [I M->L] ru.mark99.carapp.func.rollshade
Дополнение 1: value = от 0 (закрыто) до 100 (полностью открыто), тип целое число
Управление климат-контролем
Установка температуры: [I M->L] ru.mark99.carapp.func.climat.temp
Дополнение 1: value = от 17.0 до 32.0 с шагом в 0.5, тип число с плавающей запятой
Установка режима обдува: [I M->L] ru.mark99.carapp.func.climat.flow_mode
Дополнение 1: value, тип целое число; доступные значения:
0– лобовое стекло1– рот2– ноги3– рот + ноги5– ноги + лобовое стекло
Установка скорости обдува: [I M->L] ru.mark99.carapp.func.climat.fan_speed
Дополнение 1: value = от 1 до 8 включительно, тип целое число
Управление функциями климата: [I M->L] ru.mark99.carapp.func.climat.<act>
Дополнение 1: enabled = 1 (включено), 0 (выключено), тип целое число
Доступные действия <act>:
- режим “авто”:
auto - кондиционер:
ac - режим максимального кондиционера:
ac_max - режим рециркуляции:
cycle - включение/выключение климата целиком:
state
Состояние авто
Напряжение АКБ: [SGV] ru.mark99.prop.battery_vol
Тип: число с плавающей запятой (дробное)
Состояние зажигания: [SGV] ru.mark99.prop.ignition_state
Тип: строка, возможные варианты: off, acc, on, start, driving, lock
Остаток пробега (с приборки): [SGV] ru.mark99.prop.fuel_remains
Тип: целое число
Количество пробега (одометр): [SGV] ru.mark99.prop.odometer
Тип: целое число
Состояние КПП: [SGV] ru.mark99.prop.gear
Тип: строка, возможные варианты: P, D, R, N
Климат: текущая температура: [SGV] ru.mark99.prop.climat.current_temp
Тип: число с плавающей запятой (дробное)
Климат: текущая скорость вертилятора: [SGV] ru.mark99.prop.climat.fan_speed
Тип: целое число (от 0 до 8)
Готовые макросы
- Автозапуск Я.Навигатор + Я.Музыка + Автоплей
https://t.me/belgee_chat/19365/184617 - Открытие и закрытие шторки при включении/выключении ГУ
https://t.me/belgee_chat/19365/127191