Скачать: disk.yandex.ru Автор: @konstanti_i
Установка. Установить DebugM.apk, запустить, нажмите кнопку Activate app, при нажатии появиться сообщение "Disable SS" и дополнительно откроется диалог в котором приложению нужно будет разрешить работать в фоне (отключить экономию батареи) - это позволит приложению запускаться на старте системы. Такую активацию стоит повторить если интенты перестали у вас работать, или новые не начали. Настройки батареи не откроются если они уже выставлены ранее.
Получение значений с сенсоров. Чтобы получить значение из сенсора используем интенты с ".get". Ловить их ответ с помощью MacroDroid, создав макрос с триггером Intent Received, где прописан action = dm.response.RESULT и дополнительно в Exta будет значением переменной в поле value, плюс имя сенсора в поле sensor.
Автоматическая подписка на сенсоры. Приложение автоматически создаёт подписку на несколько сенсоров: статус АКПП, статус зажигания, состояние Start-Stop, режим вождения, статус ремня безопасности, статус сидения пассажира, статус кондиционера. Формат интента ровно такой же, но в Extra добавлено еще одно строковое поле source со значением event на случай если вы хотите отличать эти интенты (дополнение: Когда приложение просыпается и подписывается на перечисленные сенсоры, обычно сразу же приходят текущие значения даже если они не менялись). Примерно так будут интенты срабатывать (сенсор = значение):
| Разблокировали двери, через ~8сек МакроДроид начнёт получать интенты: | |
| статус коробки: | GEAR = GEAR_PARK |
| ремень водителя: | SAFE_BELT_DRIVER = BUCKLED |
| ремень пассажира: | SAFE_BELT_PASSENGER = UNBUCKLED |
| есть ли пассажир: | SEAT_OCCUPATION_STATUS_PASSENGER = SEAT_OCCUPATION_STATUS_NONE |
| статус СтартСтоп: | ENGINE_START_STOP = ON |
| заводим двигатель: | IGNITION = IGNITION_DRIVING |
| режим вождения: | DRIVE_MODE = DRIVE_ECO |
| кондиционер: | AC_POWER = ON и через сотые доли секунды, если он выключен был в прошлой поездке: |
| кондиционер: | AC_POWER = OFF |
| переключаем коробку: | GEAR = GEAR_NEUTRAL |
| переключаем коробку: | GEAR = GEAR_DRIVE |
| едем, двери блокируются: | DOOR_LOCK = ON скорость более 20 км/ч двери блокируются |
| переключаем шайбой режимы движения и СтартСтоп деактивируется для некоторых режимов: | |
| вкл режим снег: | DRIVE_MODE = DRIVE_SNOW |
| отключился СтартСтоп: | ENGINE_START_STOP = OFF |
| вкл режим комфорт: | DRIVE_MODE = DRIVE_COMFORT |
| включился СтартСтоп: | ENGINE_START_STOP = ON |
| глушим мотор: | IGNITION = IGNITION_OFF |
| коробка переходит в: | DRIVE_MODE = DRIVE_COMFORT |
| и паркуется: | GEAR = GEAR_PARK |
| выходим из машины | DOOR_LOCK = OFF |
| блокируем двери | DOOR_LOCK = ON |
Кнопки на руле. Есть опция обработки медиа кнопок на руле, громкость медиа и звонков будут синхронизированы и для этого необходимо выдать права на Спец. возможности приложению. При нажатии влево и вправо на руле будут посылаться интенты в Macrodroid yt.skipleft и yt.skipright соответственно (на эти интенты в макродроиде можно поставить что угодно.
Список поддерживаемых интентов:
| интент | описание | сенсор | значения | |
| автоматическая подписка | состояние зажигания | IGNITION | IGNITION_OFF, IGNITION_DRIVING | |
| автоматическая подписка | состояние АКПП | GEAR | GEAR_PARK, GEAR_NEUTRAL, GEAR_DRIVE, GEAR_REVERSE, UNKNOWN | |
| dm.get.SPEED | узнать скорость | SPEED | целое число | |
| dm.get.RPM | узнать обороты двигателя | RPM | целое число | |
| * | dm.get.FUELECOINTELSTATE | состояние топливной системы | ||
| dm.enable.FUELECOINTEL | включение Интеллектуальной экономии топлива | |||
| dm.disable.FUELECOINTEL | отключение Интеллектуальной экономии топлива | |||
| dm.get.FUELLEVEL | уровень топлива в мл | FUELLEVEL | целое число | |
| dm.get.FUELPERCENT | уровень топлива в % | FUELPERCENT | целое число | |
| dm.get.REMAININGKM | узнать запаса хода в км | REMAININGKM | целое число | |
| dm.get.WEIGHT | узнать вес | WEIGHT | целое число | |
| пассажир, ремни, экран пассажира | ||||
| автоматическая подписка | присутствие пассажира | SEAT_OCCUPATION_STATUS_PASSENGER | SEAT_OCCUPATION_STATUS_NONE, SEAT_OCCUPATION_STATUS_OCCUPIED | |
| dm.get.FRONTRIGHTSEATOCCUPIED | присутствие пассажира | FRONTRIGHTSEATOCCUPIED | NOT_OCCUPIED, OCCUPIED | |
| dm.get.FRONTRIGHTSEATBELT | состояние ремня пассажира | FRONTRIGHTSEATBELT | UNBUCKLED, BUCKLED | |
| dm.get.FRONTLEFTSEATBELT | состояние ремня водителя | FRONTLEFTSEATBELT | UNBUCKLED, BUCKLED | |
| автоматическая подписка | состояние ремня водителя | SAFE_BELT_DRIVER | UNBUCKLED, BUCKLED | |
| автоматическая подписка | состояние ремня пассажира | SAFE_BELT_PASSENGER | UNBUCKLED, BUCKLED | |
| * | dm.get.RIGHTSCREENSTATE | состояние правого экрана | ||
| dm.enable.RIGHTSCREEN | включение правого экрана | |||
| dm.disable.RIGHTSCREEN | отключение правого экрана | |||
| * | dm.set.SEATPOSITION | установить положение сиденья | ||
| двери, багажник, окна | ||||
| * | dm.get.ACREMINDERSSTATE | состояние контроля доступа | ||
| автоматическая подписка | состояние блокировки дверей | DOOR_LOCK | OFF, ON | |
| * | dm.get.TRUNKSTATE | состояние багажника | TRUNKSTATE | CLOSED, ? |
| dm.enable.TRUNKOPEN | открыть багажник | |||
| dm.enable.TRUNKCLOSE | закрыть багажник | |||
| * | dm.get.WINDOWPOSITION | состояние окон | ||
| dm.set.WINDOWPOSITION | управление окнами и люком | в Extra указывается value со значением от 0 до 100 (тип строка, значение без дробной части), а дополнительно в Extra добавляйте target с одним из таких строковых значений: FRONTLEFT, FRONTRIGHT, REARLEFT, REARRIGHT, ROOFVENT, ROOFCURT. | ||
| зеркала, фары, дворники | ||||
| * | dm.get.MIRRORFOLDSTATE | состояние складывания зеркал | ||
| dm.enable.FOLDMIRRORS | сложить зеркала заднего вида | |||
| dm.enable.UNFOLDMIRRORS | разложить зеркала заднего вида | |||
| * | dm.get.EXTLIGHTSSTATE | состояние внешних фонарей | ||
| dm.enable.EXTLIGHTSOFF | фары выключить | |||
| dm.enable.EXTLIGHTSLOW | включить ближний | |||
| dm.enable.EXTLIGHTSPOS | включить дальний | |||
| dm.enable.EXTLIGHTSAUTO | фары автоматически | |||
| dm.enable.SERVICEWIPERS | включить сервисный режим дворников | |||
| электронные помощники | ||||
| * | dm.get.SERVICEWIPERSSTATE | состояние сервисных служб | ||
| * | dm.get.STARTSTOP | узнать состояние СтартСтоп | ENGINE_START_STOP | OFF, ON |
| dm.enable.STARTSTOP | включить функцию СтартСтоп | |||
| dm.disable.STARTSTOP | отключить функцию СтартСтоп | |||
| * | dm.get.SAFETYELKASTATE | состояние ELKA | ||
| dm.enable.safety.ELKA | включить функцию безопасности ELKA | |||
| dm.disable.safety.ELKA | выключить функцию безопасности ELKA | |||
| * | dm.get.SAFETYPASSTATE | состояние PAS | ||
| dm.enable.safety.PAS | включить функцию безопасности PAS | |||
| dm.disable.safety.PAS | выключить функцию безопасности PAS | |||
| dm.enable.safety.ESCSPORT | включить ESC Sport с пониженной безопасностью вождения для Sport режима | |||
| dm.disable.safety.ESCSPORT | отключить ESC Sport с пониженной безопасностью вождения для Sport режима | |||
| режимы вождения | ||||
| * | dm.get.DRIVEMODE | узнать режим вождения | DRIVE_MODE | DRIVE_ADAPTIVE, DRIVE_ECO, DRIVE_COMFORT, DRIVE_OFFROAD, DRIVE_SAND, DRIVE_SNOW, DRIVE_SPORT |
| dm.enable.DRIVEADAPTIVE | включить режим вождения адаптивный | |||
| dm.enable.DRIVEECO | включить режим вождения эко | |||
| dm.enable.DRIVECOMFORT | включить режим вождения комфорт | |||
| dm.enable.DRIVEOFFROAD | включить режим вождения бездорожье | |||
| dm.enable.DRIVESAND | включить режим вождения песок | |||
| dm.enable.DRIVESNOW | включить режим вождения снег | |||
| dm.enable.DRIVESPORT | включить режим вождения спорт | |||
| кондиционирование (климат) | ||||
| dm.get.INTTEMP | температура внутри | INTTEMP | значения с одним знаком после запятой (используется точка) | |
| dm.get.OUTTEMP | температура снаружи | OUTTEMP | значения с одним знаком после запятой (используется точка) | |
| dm.get.INTCO2 | концентрация CO2 | INTCO2 | NO_CO2, LOWER_CO2, LOW_CO2, MEDIUM_CO2, HIGH_CO2, HIGHEST_CO2 | |
| * | dm.get.ACPOWER | узнать состояние кондиционера | AC_POWER | OFF, ON |
| dm.get.ACTEMP | узнать температуру климата | |||
| dm.set.ACTEMP | выставить температуру обдува от 16 до 28 | в Extra ("Дополнительно") секцию интента добавить поле value с типом string (строка) и прописать целое значение температуры, например 25 | ||
| dm.enable.AC | включить кондиционер | |||
| dm.disable.AC | отключить кондиционер | |||
| dm.enable.AUTOAC | включить автоматический режим в кондиционере | |||
| dm.disable.AUTOAC | отключить автоматический режим в кондиционере | |||
| * | dm.get.AUTOACSTATE | состояние автоматического отключения | ||
| dm.get.FANLEVELAUTO | узнать уровень обдува в автоматическом режиме | |||
| dm.set.FANLEVELAUTO | установить уровень обдува в автоматическом режиме | |||
| * | dm.get.ACECO | узнать состояние эко режима | ||
| dm.enable.ACECO | включить эко режим | |||
| dm.disable.ACECO | отключить эко режим | |||
| * | dm.get.GCLEAN | узнать состояние "зелёного" режима (эксперим.) | ||
| dm.enable.GCLEAN | зелёный режим и автоматически эко режим | |||
| dm.enable.ACREMINDERS | включение Интеллектуальных оповещений для поддержки эффективности кондиционера | |||
| dm.disable.ACREMINDERS | отключение Интеллектуальных оповещений для поддержки эффективности кондиционера | |||
| вентиляция | ||||
| * | dm.enable.FANDIRECTION | направление обдува | value поддерживает значения: ALL, AUTO_SWITCH, FACE, FACE_AND_FRONT_WINDOW, FACE_AND_LEG, FRONT_WINDOW, LEG, LEG_AND_FRONT_WINDOW, OFF | |
| dm.get.FANLEVEL | уровень обдува в ручном режиме | цифра в value | ||
| dm.set.FANLEVEL | установить уровень обдува в ручном режиме | передавать цифру в value | ||
| dm.low.FAN | вентилятор на минимальную скорость | |||
| dm.medium.FAN | вентилятор на среднюю скорость | |||
| dm.high.FAN | вентилятор на высокую скорость | |||
| dm.disable.FAN | вентилятор отключить | |||
| * | dm.get.INTFAN | состояние рекуперации | ||
| dm.enable.INTFAN | включить режим рекуперации | |||
| dm.disable.INTFAN | отключить режим рекуперации | |||
| вентиляция сидений | ||||
| * | dm.get.SEATFAN | состояние обдува сидений | SEATFAN | OFF, LOW, MEDIUM, HIGH |
| * | dm.enable.SEATFAN | включить обдув сидений | value поддерживает значения: | |
| dm.low.FRONTLEFTSEATFAN | переднее левое сидение вентиляция минимальная | |||
| dm.medium.FRONTLEFTSEATFAN | переднее левое сидение вентиляция средняя | |||
| dm.high.FRONTLEFTSEATFAN | переднее левое сидение вентиляция максимальная | |||
| dm.disable.FRONTLEFTSEATFAN | переднее левое сидение вентиляция отключить | |||
| dm.low.FRONTRIGHTSEATFAN | переднее правое сидение вентиляция минимальная | |||
| dm.medium.FRONTRIGHTSEATFAN | переднее правое сидение вентиляция средняя | |||
| dm.high.FRONTRIGHTSEATFAN | переднее правое сидение вентиляция максимальная | |||
| dm.disable.FRONTRIGHTSEATFAN | переднее правое сидение вентиляция отключить | |||
| обогрев | ||||
| обогрев сидений | ||||
| * | dm.get.SEATHEAT | узнать состояние обогрева сидений | SEATHEAT | OFF, LOW, MEDIUM, HIGH |
| * | dm.enable.SEATHEAT | включить обогрев сидений | value поддерживает значения: | |
| dm.low.FRONTLEFTSEATHEAT | переднее левое сидение обогрев минимальный | |||
| dm.medium.FRONTLEFTSEATHEAT | переднее левое сидение обогрев средний | |||
| dm.high.FRONTLEFTSEATHEAT | переднее левое сидение обогрев максимальный | |||
| dm.disable.FRONTLEFTSEATHEAT | переднее левое сидение обогрев отключить | |||
| dm.low.FRONTRIGHTSEATHEAT | переднее правое сидение обогрев минимальный | |||
| dm.medium.FRONTRIGHTSEATHEAT | переднее правое сидение обогрев средний | |||
| dm.high.FRONTRIGHTSEATHEAT | переднее правое сидение обогрев максимальный | |||
| dm.disable.FRONTRIGHTSEATHEAT | переднее правое сидение обогрев отключить | |||
| dm.low.REARLEFTSEATHEAT | заднее левое сидение обогрев минимальный | |||
| dm.medium.REARLEFTSEATHEAT | заднее левое сидение обогрев средний | |||
| dm.high.REARLEFTSEATHEAT | заднее левое сидение обогрев максимальный | |||
| dm.disable.REARLEFTSEATHEAT | заднее левое сидение обогрев отключить | |||
| dm.low.REARRIGHTSEATHEAT | заднее правое сидение обогрев минимальный | |||
| dm.medium.REARRIGHTSEATHEAT | заднее правое сидение обогрев средний | |||
| dm.high.REARRIGHTSEATHEAT | заднее правое сидение обогрев максимальный | |||
| dm.disable.REARRIGHTSEATHEAT | заднее правое сидение обогрев отключить | |||
| обогрев руля | ||||
| * | dm.get.WHEELHEAT | состояние обогрева руля | WHEELHEAT | OFF, LOW, MEDIUM, HIGH |
| dm.low.WHEEL | обогрев руля минимальный | |||
| dm.medium.WHEEL | обогрев руля средний | |||
| dm.high.WHEEL | обогрев руля максимальный | |||
| dm.disable.WHEEL | обогрев руля отключить | |||
| обогрев стёкол (оттаивание) | ||||
| * | dm.get.FRONTDEFROST | состояние обогрева лобового стекла | ||
| dm.enable.FRONTDEFROST | переднее стекло обогрев включить | |||
| dm.disable.FRONTDEFROST | переднее стекло обогрев отключить | |||
| * | dm.get.FRONTDEFROSTMAX | состояние обогрева максимального | ||
| dm.enable.FRONTDEFROSTMAX | переднее стекло обогрев максимальный включить | |||
| dm.disable.FRONTDEFROSTMAX | переднее стекло обогрев максимальный отключить | |||
| * | dm.get.REARDEFROST | состояние подогрева заднего стекла | ||
| dm.enable.REARDEFROST | заднее стекло обогрев включить | |||
| dm.disable.REARDEFROST | заднее стекло обогрев отключить | |||
| экспериментальная функция для оптыных пользователей | ||||
| * | dm.set.GENERICFUNCTION | экспериментальная функция | позволяет проставить значение любой функции, в Extras к интенту дополнительно надо передавать например function=268501504, zone=1, value=1, valueType=int или float | |
* - экспериментальные
Пример макроса для MacroDroid, открыть окно на 50% после того как завели авто и отключить СтартСтоп:
| Триггеры | Интент получен | Действие: dm.response.RESULT Дополнение: [ имя: value | значение: IGNITION_DRIVING ] Дополнение: [ имя: sensor | значение: IGNITION ] |
| Действия | Задержка | 2 сек |
| Отправить интент | Цель: Broadcast | Действие: dm.set.WINDOWPOSITION | Пакет: debug.monjaro Дополнение1: [ имя: value | значение: 50 | тип: строковая ] Дополнение2: [ имя: target | значение: FRONTLEFT | тип: строковая ] |
|
| Задержка | 0,5 сек | |
| Отправить интент | Цель: Broadcast | Действие: dm.disable.STARTSTOP | Пакет: debug.monjaro | |
| Ограничения | Нет |