Автоматизация раздачи интернета с телефона на ГУ
Так как интернет для головного устройства машины у меня раздаётся с телефона Xiaomi Mi 6, то решил как-то автоматизировать процесс включения/выключения точки доступа. ну и заодно всего остального (блютуз, gps, моб. интернет).
Рассказывать буду про то, как это работает в экосистеме андроидных устройств. При этом у меня стоит кастомная прошивка (Miui Pro) c рут-правами.
У владельцев яблочных устройств наверное также есть свои программы для кодирования/чтения NFC-меток. Поэтому владельцев яблофонов прошу дополнить что и как у вас.
1. Заказал NFC-метки тут. Круглые, чёрные Anti Metal, 504 Bytes.
2. Устанавливаем из Play Маркета на телефон приложения NFC Tools и NFC Tasks, даём все запрашиваемые права.
На 4pda есть NFC Tools Pro с расширенным функционалом — гуглите. Я ставил её.
3. Открываем NFC Tools подносим метку к верхней задней части телефона — метка считывается. Сразу скажу, что в программе есть полезная функция (Задачи — Дополнительные опции — Выполнить задачи профиля), которая поможем вам сразу протестировать работаю функции или нет.
4. Идём в раздел Задачи — Добавить задачу — Условия для задач — Условие: Счётчик сканирований — Состояние: 1-ое сканирование, Поведение: Включить.
5. Идём в раздел Задачи — Добавить задачу — Сети — Wi-Fi (отключить). Поясню, что я обычно выхожу из дома или офиса, где интернет телефон получает по Wi-Fi, а в машине он не нужен включенным. Поэтому таким условием выключается Wi-Fi. Добавляйте этот пункт на своё усмотрение.
6. Идём в раздел Задачи — Добавить задачу — Права суперпользователя (root) — Мобильные данные (включить). Т.е. включаем мобильный интернет на телефоне. Без рут-прав возможно вы не сможете выбрать этот пункт.
7. В последних версиях андроида Гугл заблокировал включение/отключение точки доступа, поэтому когда я выбрал (Добавить задачу-Сети-Точка доступа Wi-Fi (включить), то у меня ничего не заработало. Пришлось ставить небольшие костыли — тыц.
8. В связи с тем, что поставлены костыли в NFC Tools идём в раздел Задачи — Добавить задачу — Разное — Отправить «намерение» (Intent). Цель — Activity, Пакет — выбираем установленное приложение Oreo Wifi HotSpot (com.fitc.wifihotspot), Данные — пишем wifihotspot://turnon. Все остальные строки оставляем пустыми.
9. Идём в раздел Задачи — Добавить задачу — Условия для задач — Конец условия.
10. Идём в раздел Задачи — Добавить задачу — Условия для задач — Условие: Счётчик сканирований — Состояние: 2-ое сканирование, Поведение: Выключить.
11. Идём в раздел Задачи — Добавить задачу — Разное — Отправить «намерение» (Intent). Цель — Activity, Пакет — выбираем установленное приложение Oreo Wifi HotSpot (com.fitc.wifihotspot), Данные — пишем wifihotspot://turnoff. Все остальные строки оставляем пустыми.
12. Идём в раздел Задачи — Добавить задачу — Сети — Bluetooth (отключить).
13. Идём в раздел Задачи — Добавить задачу — Сети — Gps (отключить). Поясню, что пункты 12 и 13 для отключения блютуза и gps, т.к. у меня их автоматом включает Android Auto (о том как я с ним воевал и победил, включив просмотр видео, Ютуба в движении расскажу в отдельном посте).
14. Идём в раздел Задачи — Добавить задачу — Условия для задач — Конец условия.
15. Идёт в раздел Задачи — Дополнительные опции — Сохранить профиль задач. Для сохранения того, что было сделано выше.
16. В разделе Задачи наживаем «Писать» и подносим метку к телефону.
17. Идём в машину и клеим метку в удобное место.
Итог всего сказанного выглядит так:
Прихожу в машину, подношу разблокированный телефон к метке — выключается WiFi, включается мобильный интернет и точка доступа. Можно добавить включение блютуза и gps, но мне это не актуально, т.к. это автоматом делает Android Auto. Авто само коннектиться к точке доступа и вуаля — есть интернет на ГУ.
Заглушил двигатель, подношу разблокированный телефон к метке — выключается точка доступа, блютуз и gps. Мобильный интернет продолжает работать.
Вариантов использования метки таким способом — море. Какой выбрать — решать вам.
Автовключение точки доступа при посадке в автомобиль
Мой вариант автоматизации включения точки доступа при подключении Android-смартфона посредством Bluetooth к магнитоле. Автомобилем пользуюсь не так часто, чтобы в него покупать отдельный USB-модем и ежемесячно платить за интернет. К тому же, на Android’е есть некоторые проблемы с получением интернета с RNDIS-устройств. Как пример, приложения Яндекса (навигатор, музыка, радио) не видят наличие доступа к интернету в системе, хотя если смотреть ifconfig или просто пинговать ресурс, интернет будет.
А вот при подключении штатно предусмотренным способом через Wi-Fi всё прекрасно работает.
Что потребуется?
- Android-смартфон;
- Программа Automate ( Automate 1.20.5 (Одна Загрузка) ) для старого способа!;
- Программа MacroDroid для нового способа:
- актуальная версия:
MacroDroid Pro v5.19.9 (Одна Загрузка)
MacroDroid Helper v1.7 (1003 Загрузки) — служебный сервис, на некоторых смартфонах без него не будет работать включение точки доступа.
- старая версия, под которую писалась инструкция:
MacroDroid Pro v4.9.6.1 (5633 Загрузки)
Новый способ (MacroDroid)
Устанавливаем программу на смартфон. Запускаем. Переходим в пункт Макросы:
Жмем плюсик в нижнем правом углу и создаем тем самым новый скрипт:
Сначала создадим макрос для включения точки доступа. Сверху задаем ему название, например Car WiFi On, в красном окошке Триггеры жмем плюсик. Здесь задаем условие для срабатывания нашего макроса. Нас интересует подключение к магнитоле по блютузу. Значит идем в категорию Связь и выбираем Состояние Bluetooth:
Выбираем условие Устройство подключено и выбираем магнитолу:
- актуальная версия:
В моем случае магнитола зовется AWC3187
Теперь назначим действие при подключении к магнитоле. Нас интересует включение точки доступа. Для этого в синем окошке Действия жмем плюсик. В списке действий находим категорию Связь, в ней выбираем Точка доступа:
Выбираем пункт Включить точку доступа, галочки для начала не ставим. У меня на Android 9.0 всё работает без их включения, но если у вас хотспот не будет включаться, то попробуйе альтернативные способы:
Всё, макрос на включение готов. Выглядеть должен примерно так:
Сохраняем макрос и создаем второй. Теперь уже на выключение точки доступа по выходу из автомобиля.
Задаем ему название, добавляем новый тригер — Связь — Состояние Bluetooth — Устройство отключено — выбираем магнитолу:
В моем случае магнитола зовется AWC3187
Добавляем новое действие — Связь — Точка доступа — Выключить точку доступа:
Не забываем включить галочки на альтернативных способах, если без них не срабатывает.
Выходим в главное меню программы MacroDroid и отключаем оптимизацию приложении, выбрав первый пункт и согласившись во всплывающем окне:
Снова выходим в главное меню и активируем работу MacroDroid‘а, включив ползунок в верхнем правом углу. Теперь идем в машину и включаем магнитолу, проверяем, что точка доступа включилась. Выключаем магнитолу, убеждаемся, что раздача интернета прекратилась. Под каждым макросом должна будет появиться строчка Последняя активация: хх минут назад, что свидетельствует о правильной работе.
Теперь смартфон автоматически будет раздавать интернет на магнитолу при посадке в автомобиль и так же выключать её при высадке, даже с выключенным экраном и включенным режимом экономии батареи.
Старый способ (Automate)
Алгоритм
- устанавливаем программу на смартфон;
- составляем в ней скрипт на включение точки доступа при подключении к магнитоле по блютузу;
- в настройках программы выставляем запуск всех запущенных скриптов после перезагрузки устройства;
- запускаем скрипт и забываем про программу;
- смартфон сам будет подключаться к Bluetooth магнитолы и тем самым активировать работу скрипта на включение точки доступа.
Реализация
Устанавливаем программу Automate. Запускаем. Сразу идем в настройки и ставим галочку напротив пункта Run on system startup:
Тем самым обеспечиваем постоянную работу нашего скрипта даже после перезагрузок устройства (важным условием в целом системы Android для автозапуска приложений является факт его (приложения) выполнения на момент перезагрузки, т.е. если программа была принудительно закрыта до перезапуска, запущена автоматически она не будет даже с установленной галочкой).
Или же создаем свой и срисовываем со скриншота:
Скачанный скрипт необходимо импортировать. Для этого в меню выбираем пункт Import, и в файловом проводнике находим скачанный файл с расширением .flo.
В списке на главном экране должен будет появиться скрипт Точка доступа в автомобиле. А при его открытии картина будет примерно следующая:
Единственным отличием будет отсутствие галочек на пунктах access local network, internet and nearby devices и tethering workaround. Соответственно, ставим их. Программа предложит установить дополнительные пакеты для расширения своих привелегий. Соглашаемся.
Хотел уже писать о запуске скрипта, но вспомнил, что в нем забит MAC-адрес блютуза моей магнитолы. Предварительно выполняем сопряжение магнитолы со смартфоном, если этого не было сделано и идем в редактор скрипта: иконка с карандашом — Flowchart:
На блок-схеме находим блок под номером 2 с иконкой блютуза и нажимаем по нему коротким тапом:
Жмем кнопку Pick device:
И в списке сопряженных блютуз-устройств выбираем магнитолу. Жмем Done. Затем галочку в верхнем правом углу от блок-схемы.
Вот теперь-то можно запускать скрипт. В логе начнут появляться сообщения, справа от названия скрипта появится единица, обозначающая количество одновременно работающих экземпляров и в шторке (трее) появится уведомление от Automate. Закрывать его крайне не рекомендуется, ибо система Android не гарантирует работоспособность программ в фоне, которые не заявляют о себе постоянным уведомлением в трее.
В моем случае работает в режиме Extension (Android 5+) и абсолютно не работает на всех других. Возможно, у вас будет иначе. Для одного из пунктов необходимы Root-права о которых упоминалось в начале статьи: