LunarisApp: интеграция сторонних приложений
LunarisApp для поддерживаемых ГУ позволяет настроить собственные сценарии для отслеживания и управления функциями авто. В данной статье размещена информация для написания собственных и редактирования существующих макросов Macrodroid, а также реализации стороннего ПО и использования LunarisApp в качестве прокси.
Оглавление
- Общие понятия
- События кнопок руля
- Функции LunarisApp
- Управление функциями авто
- Управление окнами, шторкой и люком
- Состояние авто
- Готовые макросы
Общие понятия
В контексте LunarisApp существует 2 механизма взаимодействия: Settings.Global и Android Intent’s.
В зависимости от версии LunarisApp и модели авто могут не работать определенные действия или отсутствовать некоторые параметры (возвращать всегда 0).
Например:
– на Belgee X50 отсутствует состояние и управление подогревами сидений
– подогрев руля, форсунок и зоны дворников не работают на ПИ авто
– управление режимом езды проверено только на Belgee S50 / Emgrand
При написании макросов и интеграций проверяйте, что на вашем авто работают используемые действия и переменные Settings.Global имеют актуальное значение.
Параметры 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) желать приятного пути.
Обратите внимание: при старте сервиса LunarisApp как минимум один раз записываются все параметры. Поскольку порядок загрузки приложений в Android не регламентирован, после загрузки ГУ могут сработать триггеры на изменение части переменных, если Macrodroid был запущен раньше LunarisApp. А могут и не сработать.
Обратите внимание: при нештатной ситуации (краш и перезапуск LunarisApp) будут перезаписаны все параметры и могут сработать триггеры.
Интенты (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>
Отключение ESP (ESC Sport): [I M->L] ru.mark99.carapp.func.escsport.<act>
Система Старт-Стоп: [I M->L] ru.mark99.carapp.func.startstop.<act>
Система Auto-Hold: [I M->L] ru.mark99.carapp.func.autohold.<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.climat.seatvent
Дополнение 1: posId = 1 (водительское) или 4 (пассажирское), тип целое
Дополнение 2: value = число от 0 до 3, где 0 – выключено, тип целое
Режимы езды: [I M->L] ru.mark99.carapp.func.drive_mode.<mode>
Доступные <mode>: eco, comfort, sport, adaptive
Управление окнами, шторкой и люком
Управление окнами: [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– рот + ноги4– рот + лобовое стекло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 - режим Eco:
eco - включение/выключение климата целиком:
state
Управление режимом работы кондиционера: [I M->L] ru.mark99.carapp.func.climat.rating
Дополнение 1: value, тип строка, возможные варианты: silent, normal, high
Состояние авто
Напряжение АКБ: [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.car.speed
Тип: целое число в км/ч
Функция Старт-Стоп: [SGV] ru.mark99.prop.car.start_stop
Тип: целое число 0 (выкл) или 1 (вкл)
Режим езды: [SGV] ru.mark99.prop.car.drive_mode
Тип: строка, возможные варианты: eco, comfort, sport, adaptive
Климат: текущая температура: [SGV] ru.mark99.prop.climat.current_temp
Тип: число с плавающей запятой (дробное)
В данный момент поддерживается только однозонный климат, это температура зоны водителя
Климат: текущая скорость вертилятора: [SGV] ru.mark99.prop.climat.fan_speed
Тип: целое число (от 0 до 8)
Климат: текущий режим обдува: [SGV] ru.mark99.prop.climat.flow_mode
Тип целое число (см. значения в Управление климат-контролем)
Климат: подогревы и вентиляция
Тип: целое число 0 (выкл) или 1 (вкл)
- [SGV]
ru.mark99.prop.climat.heat_wheel - [SGV]
ru.mark99.prop.climat.heat_nozzle - [SGV]
ru.mark99.prop.climat.heat_windshield - [SGV]
ru.mark99.prop.climat.defrost_rear - [SGV]
ru.mark99.prop.climat.defrost_front - [SGV]
ru.mark99.prop.climat.heat_seat_driver - [SGV]
ru.mark99.prop.climat.heat_seat_passenger - [SGV]
ru.mark99.prop.climat.vent_seat_driver - [SGV]
ru.mark99.prop.climat.vent_seat_passenger
Климат: текущее состояние функций
Тип: целое число 0 (выкл) или 1 (вкл)
- [SGV]
ru.mark99.prop.climat.auto - [SGV]
ru.mark99.prop.climat.ac - [SGV]
ru.mark99.prop.climat.ac_max - [SGV]
ru.mark99.prop.climat.state - [SGV]
ru.mark99.prop.climat.cycle - [SGV]
ru.mark99.prop.climat.eco
Климат: режим работы кондиционера: [SGV] ru.mark99.prop.climat.rating
Тип: строка, возможные варианты: silent, normal, high
Готовые макросы
- Автозапуск Я.Навигатор + Я.Музыка + Автоплей
https://t.me/belgee_chat/19365/184617 - Открытие и закрытие шторки при включении/выключении ГУ
https://t.me/belgee_chat/19365/127191 - Управление климат-контролем по Интернет прогнозу погоды
https://t.me/belgee_chat/19365/284893
https://t.me/belgee_chat/19365/285329
LunarisApp: интеграция сторонних приложений: 3 комментария
Здравствуйте скажите пожалуйста сегодня прошил лунарис 86 все хорошо,раздал телефон вайфай и включился но пишет все равно что интернета нет что делать?
Проверить и выставить правильные дату и время в приборной панели
Сработало, спасибо большое