TL;DR Автор настроил Telegram-чат, куда несколько смартфонов скидывают пуши с помощью MacroDroid и/или Tasker. Пособие, как настроить это максимально просто, частично поберечь батарею и научить это работать в фоновом режиме. Как побочный эффект, вы автоматически таким образом нау́читесь "шарить" симки, карты и учётки себе и другим.
Дисклеймеры
Общий дисклеймер • О личности автора • Отказ от ответственности • Об использовании ChatGPT
Аннотация
В статье рассматривается вопрос получения уведомлений с нескольких SIM-карт, в особенности из разных стран. Или, наоборот, одной юрисдикции, когда пачку симок выгодно оставить в определенном статичном месте, не обязательно у себя. Дополнительно рассказано об аппаратных и программных средствах обеспечения непрерывного функционирования всей этой задумки. Мотивацией к написанию данного материала послужил тот факт, что с 2012 года (не)регулярного чтения "Хабра" автор не увидел ничего подобного на площадке. Учитывая простоту реализации, которая приближала длину статьи к твиту, так же рассмотрены вопросы "фоновой" работы железа (за счёт розетки с регулярным регулируемым регулировочным регулятором таймера).
Введение
Всем привет, хабровчане, с пятницей! Хотелось бы рассказать вам об одном из моих недавних (и уже немножко легаси) решений, которое может быть полезно многим из вас.
Предположим, что со временем у вас накопился целый багаж SIM-карт и, соответственно, номеров телефонов. Симки, само собой, в "железной" реализации. Так вышло исторически, что на них привязаны различные аккаунты (иногда по несколько в одном и том же сервисе). А ещё несколько удручает тот факт, что номер телефона во многих странах подразумевает идентификацию личности, поэтому терять доступ к нему означает компрометацию как минимум части личной информации и даже финансов. Номера́, что называется, "белые", чистые; им не первый год и, возможно, им идёт уже второй десяток лет - в общем, такое терять жалко. Уже и сбиваешься со счёта, что именно на них привязано, и страх их потери почти в итоге чуть ли не равносилен страху потери какой-нибудь конечности.
И тем не менее, эти симки нужны вам не всегда. Звонков на них не ждёшь (зачастую общаетесь через Интернет, а не сотовую связь), а вот иные СМС лучше не пропускать - мало ли какая важная информация придёт. Особенно с иностранными симками это актуально: вы привезли её с собой и звонков не ждёте, зато нужно держать её онлайн и иногда пополнять. СМСки для авторизации в различных сервисах всё ещё нужны.
Ещё учтём, что вы постоянно в движении, и у вас не всегда есть возможность оставить часть своих вещей знакомым или родственникам. Или наоборот, есть, но в таком случае встаёт вопрос о лёгкости обслуживания. Поэтому решение должно работать максимально автономно, без вашего участия, и желательно - без вашего контроля. Подключил к сети, зарядной и Интернет - и оно тут же делает свою работу.
Ещё раз просуммируем критерии:
Это всё должно работать без вашего участия в 99% времени, включая заряжательный процесс аккумулятора;
Оно всё - и устройство, и код решения - должно обслуживаться максимально легко и в идеале без вашего участия, чтобы любой уверенный пользователь смартфона мог выполнить базовый траблшутинг (изредка связанный со срочным побегом под настоящим шутингом).
Варианты
Рассматривал следующее:
Купить GSM-шлюз с поддержкой нескольких SIM-карт и настроить его на пересылку SMS в Telegram через планшет/ноутбук/ПК на Windows/Linux:
+ Плюсы | - Минусы |
|---|---|
Универсальное решение, не завязанное на смартфоны и их особенности | Сложности в настройке, сложности в поддержке сторонними людьми (поди найди-ка среди знакомых такого же скиллового человека) |
Купить SIM-box - специализированное устройство для работы десятков SIM'ок одновременно:
+ Плюсы | - Минусы |
|---|---|
Универсальное решение, не завязанное на смартфоны и их особенности | Дороговизна, сложно найти, в теории могут быть сложности с провозом на таможне в разных юрисдикциях (по моим подозрениям), нет гарантии легкости настройки |
Использовать смартфоны с двумя слотами под SIM-карты и настроить их на пересылку SMS в Telegram через MacroDroid/Tasker:
+ Плюсы | - Минусы |
|---|---|
Лёгкость в поиске и покупке смартфонов, дешевизна и простота решения, лёгкость в настройке, лёгкость в поддержке сторонними людьми | В основном теоретические: пожароопасность (частично нивелируется розеткой-таймером), потенциально нечистый IMEI у смартфонов (зависит, откуда брали) |
Рассмотрим именно последнюю, самую простую реализацию: б/у бюджетный смартфон в полулетальном состоянии в количестве n штук, подключение по Wi-Fi и Телега. Будем считать, что почти у всех есть Telegram, но с желанием им пользоваться считаться не будем. Выберем смартфон, организуем там чат со своим ботом и настроим смартфон для отправки СМС и уведомлений себе в чат.
Выбор смартфона
Естественно, рассматриваем только ОС Android.
Казалось бы, чего тут думать, что́ взять? Берёшь любого "китайца" и настраиваешь. В целом, так и есть, но если подумать, то вырисовывается доводы против без(д)умного и совершенно толерантного поиска смартфона в стиле "о, чёрненький!":
Если попадётся Android 4-5-6-7, то тут можно столкнуться с протухшими сертификатами или ограниченной поддержкой приложений. А шить на что-то свежее нам запрещает требование о "лёгкости" настройки и обслуживания нашего решения;
Могут попасться односимочные аппараты, а нам нужно максимальное количество слотов для SIM - 2. Больше, чем 2, нет среди современных смартфонов. Проверено в Гугле.
Поэтому возьмём с запасом и берём аппараты, в чьих стоковых прошивках стои́т как минимум Android 10. И чтобы с двумя SIM!
Я остановился на трёх немножко побитых жизнью Huawei P30 Lite по "оптовой" цене в 6000 рублей. Видимо, ломбард слил мне определённый неликвид с сомнительной репутацией. Поэтому имейте в виду, что телефоны без чеков и оригинальных коробок могут быть с тёмным прошлым, или вообще стать соучастником чего-то мокрого. Это риск, и брать его на себя - дело ваше.
Лучший вариант в таком случае - пропылесосить коллекцию барахла у знакомых. Есть шанс, что отдадут задарма что-то, что нуждается в лёгком ремонте, либо сразу работающее. Своеобразной гарантией в данном случае выступает т��, что они их до сих пор не посадили за решётку, а значит, с высокой вероятностью IMEI у смартфонов ни в чём уголовном не фигурирует.
Что делаем в смартфоне первоначально?
Удаляем все аккаунты, сбрасываем операционку на нули, доходим до домашнего экрана без логина куда-либо, обновляем ОС до последней стабильной версии;
Ставим MacroDroid или, если кошелёк позволяет, то Tasker с плагином AutoNotification. Учитывая, что смартфон не будет использоваться в обычном режиме, то и аккаунты не нужны нигде, APK'шки качаем напрямую откуда умеем (например, через Obtainium, который умеет качать APK из многих магазинов приложений) и передаём их между устройствами через LocalSend;
ℹ️ Для удобства поставьте ещё LocalSend себе на ПК, главный и остальные смартфоны. Это позволит быстро скидывать файлы и текст между устройствами по Wi-Fi без заморочек с облаками и кабелями.
Настраиваем Telegram
Нам нужно будет создать бота, создать группу и добавить бота в неё.
Ниже приведена пошаговая инструкция по настройке Telegram для приёма уведомлений через бота:
Идём в @BotFather, тот сгенерирует API-токен для вашего нового бота. Сохраняем его — он понадобится для дальнейшей интеграции;
Создаём новую группу, добавляем бота туда. Особо много прав давать не надо - ему нужны лишь права на постинг своих сообщений.
Почему именно группа? Чтобы легче было добавлять/удалять её участников, если вдруг это потребуется. Таким образом не надо будет менять айдишники на смартфонах, потому что одно из требований - максимальная работа смартфона в непритронутом виде.
Почему именно Telegram? Исходим из того, что он есть у всех и каждого - возможно, даже против их воли. А ещё потому, что его API для отправки сообщений - это простой GET-запрос. Отправить этот запрос может что угодно с доступом в Интернет, нужно лишь знать токен бота и ID чата. Говорят, что у Discord иной раз даже проще API, но давайте оставим это зумерам и геймерам.
Настраиваем автоматизацию MacroDroid/Tasker для пересылки SMS в Telegram
Я всё подготовил для вас, осталось лишь:
Скачать макросы для MacroDroid или профили для Tasker;
Импортировать их в MacroDroid/Tasker на каждом смартфоне;
В настройках каждого макроса/профиля указать токен бота и ID чата согласно инструкции:
Для MacroDroid:
Скачайте и импортируйте макросы из папки ru/macrodroid/ в репозитории;
Что нажимать

Кнопка 'Импорт' на главном экране MacroDroid Установите HTTP-адрес: замените подстроки
<TELEGRAM_BOT_TOKEN>на фактический токен API Telegram-бота;Что нажимать

MacroDroid — редактирование конечной точки Telegram Bot API (скриншот №1) 
MacroDroid — редактирование конечной точки Telegram Bot API (скриншот №2) 
MacroDroid — редактирование конечной точки Telegram Bot API (скриншот №3) Установите идентификатор группового чата: замените
<YOUR_TOKEN_HERE>на идентификатор группового чата, полученный ранее на вкладке параметров HTTP-запроса;Что нажимать

MacroDroid — редактирование конечной точки Telegram Bot API (скриншот №1) 
MacroDroid — редактирование конечной точки Telegram Bot API (скриншот №2) Проверьте настройку, отправив SMS, совершив звонок или сгенерировав уведомление на вашем устройстве Android, или смоделируйте эти события с помощью команды «Тест» в контекстном меню, нажав на задачу или макрос.
Для Tasker:
Скачайте и импортируйте профили из папки ru/tasker/ в репозитории. Важно - импортируйте профили, а не проекты или задачи. Для этого в Tasker на вкладке «Профили» удерживайте палец, нажмите на выпадающем меню «Импорт» и выберите нужный файл профиля на устройстве;
Что нажимать

Кнопка 'Импорт' на главном экране Tasker Установите HTTP-адрес, либо напрямую редактируя задачу отправки сообщения в Telegram, либо через глобальные переменные
%TELEGRAM_BOT_TOKENи%TELEGRAM_CHAT_ID: замените подстроки<TELEGRAM_BOT_TOKEN>на фактический токен API Telegram-бота;Что нажимать

Tasker — редактирование конечной точки Telegram Bot API (скриншот №1) 
Tasker — редактирование конечной точки Telegram Bot API (скриншот №2) 
Tasker — редактирование конечной точки Telegram Bot API (скриншот №3) 
Tasker — редактирование конечной точки Telegram Bot API (скриншот №4) 
Tasker — редактирование конечной точки Telegram Bot API (скриншот №4) Установите идентификатор группового чата: замените
<YOUR_TOKEN_HERE>на идентификатор группового чата, полученный ранее на вкладке параметров HTTP-запроса;Проверьте настройку, отправив SMS, совершив звонок или сгенерировав уведомление на вашем устройстве Android, или смоделируйте эти события с помощью команды «Тест» в контекстном меню, нажав на «Задача» или «Профиль».
Всё должно работать. Лично у меня на телефонах всё работает!
Решаем проблему с фоновым режимом и зарядкой
Чтобы смартфоны не разряжались и не выключались, их нужно постоянно держать на зарядке. Но просто так подключить к зарядке - это не решение, потому что смартфон будет постоянно пытаться заряжаться, что негативно скажется на здоровье аккумулятора.
Для этого покупаем розетку с таймером. Она позволит включать и выключать питание по расписанию. Например, можно настроить розетку так, чтобы она включалась на 1 час каждые 3 часа. Это позволит смартфону зарядиться, а затем работать в течение нескольких часов на аккумуляторе. Я взял себе такую розетку за 500₽ по объявлению. Работает безотказно.
Как она выглядит

Фоновый режим настраивается у каждого вендора и оболочки по-своему. Верхнеуровнево говоря, нужно:
Отключить оптимизацию батареи для MacroDroid/Tasker, они сами об этом попросят;
Добавить их в автозагрузку вручную или по просьбам
трудящихсяприложений.
Проверьте, что после перезагрузки смартфона MacroDroid/Tasker запускаются автоматически и работают в фоне. Для этого можно отправить тестовое СМС или уведомление и убедиться, что оно приходит в мессенджер, без запуска приложения.
(для продвинутых) Как расшарить часть данных не только себе
Простой (и одновременно довольно тупой) способ - просто добавить в группу Telegram нужных людей. Они будут получать все уведомления, которые приходят в группу. В этом и проблема - все получают всё подряд.
Для того, чтобы человек видел SMS и уведомления с определённых приложений и номеров, придётся научиться создавать и редактировать задачи в MacroDroid/Tasker. Пригодятся знания знания регулярных выражений.
Это уже выходит за рамки данной статьи, но в целом идея такова:
Заранее просите другого человека пообщаться с вашим ботом (опционально - создать группу в Telegram и добавить туда бота), затем вы по методу
https://api.telegram.org/bot<ПОДСТАВЬТЕ_ТОКЕН_БОТА>/getUpdatesзаходите с браузера и получаете ID чата. Либо, если бот в группе, то получаете ID группы чреез добавление любого идентификационного бота типа@myidbotи команду/getgroupid;Данные получены, переходим в MacroDroid/Tasker, клонируем ту задачу, которая шлёт уведомления в Telegram;
Создаёте условие (If) на проверку номера отправителя или пакета приложения;
Можно ещё внутри создать ещё одно условие (If) на проверку содержимого - если нужно слать только определённые сообщения. Внутри вы можете использовать регулярные выражения для более точного фильтра. Например, на номер карты типа
(?:.+)?(?:\d{4})?(?:.+)?. Regex101.com вам в помощь для отладки регулярных выражений;В это же условии внутрь переносите всю логику отправки сообщения в Telegram, но с изменённым ID чата на тот, что вы получили от другого человека.
Таких задач можно создать сколько угодно, чтобы делиться данными с разных номеров и приложений разным людям.
Проблемы, вопросы и их решения
Проблема: Есть архитектурный изъян у данного сетапа: смартфон контролирует все этапы - от приёма SMS/уведомления, подготовка данных в удобочитаемый текст, соблюдение совместимости форматирования, отправки его в Telegram. В общем, сам себе веб-сервер со всей бизнес-логикой. Если смартфон по какой-то причине не сможет что-то из всего этого сделать, то надо долго дебажить. Особенно это может касаться трудноуловимых багов маппинга полей или обработки символов переноса строки. Ещё API или сеть могут поменяться, и тогда придётся переделывать макросы и задачи у вообще всех смартфонов.
Решение: это решается централизацией, когда смартфоны шлют сырые данные на центральный сервер (например, на VPS), а уже он занимается отправкой в Telegram. Но это уже выходит за рамки данной статьи. Об этом я расскажу в следующей статье, хотите вы этого или нет.
Проблема: А где конфиденциальность.
Решение: Она утонула. Мы исходим из максимально простого, дешевого и поддерживаемого решения. То есть удобного. Это автоматически означает отсутствие конфиденциальности и безопасности by default, но не by design, ибо удобство редко когда не обратно пропорционально безопасности. Можно придумать, как слать данные на что-то более приватное и самохостинговое, я вам мысль дал, её можно развивать. По сути, слать можно что угодно куда угодно, у чего торчит HTTP-вебхук.
Проблема: Батарейку кушает.
Решение: Приложения автоматизации всегда будут кушать заряд аккумулятора, так как они постоянно работают в фоне, слушая события. Это не исправить, разве что в розетке-таймере можно настроить процесс заряжания подольше.
Проблема: Смартфон не умеет фильтровать сообщения по конкретной симке.
Решение: Есть такой баг у Macrodroid на моих Хауеваях. Не знаю, в чём дело. Что-то в системном API, уж точно. Возможно, из-за того, что симки в роуминге, и API не может отдать айдишник симки стандартным способом. Причём айдишник иногда проставляется. В общем, тогда самое простое решение - купить ещё телефон :). Лично я решил именно так.
Проблема: Опасно оставлять секреты захардкоженными в макросах/задачах.
Решение: Рассматривайте макросы и задачи как последнюю инстанцию. Дальше они не уйдут, вы вряд ли будете ими делиться. Разве что для бекапов. Поэтому риск минимален. Если хотите, можете использовать встроенные функции у приложений. Так, можно указать переменную и затем использовать её в запросах в конечные точки API. Тем не менее, телефонов у вас в конечном счёте будет несколько, каждый с разным приложением для автоматизации. Невозможно использовать все фичи каждой программы, не заморачиваясь. Поэтому в статье такие нюансы не рассматривались.
Проблема: Кому скинуть смартфоны?
Решение: Тут уж как повезёт. Можно договориться с родственниками, что они будут держать смартфоны у себя дома, подключёнными к Wi-Fi и розетке-таймеру. Можно договориться с кем-то из друзей или знакомых, кто живёт неподалёку от вас, или, наоборот, далеко и в другой юрисдикции. Главное - чтобы у них был стабильный Интернет и возможность непериодически проверять, что всё работает. О методах социальной инженерии, способных убедить человека (со)держать ваш телефон с вашими SIM-картами у себя, я рассказывать не буду - в большинстве юрисдикций они приравниваются к различного рода уголовным преступлениям, вдобавок, у меня нет подобного жизненного опыта из-за отсутствия друзей и знакомых, поэтому всё своё таскаю с собой.
Заключение
Вот и всё! Теперь у вас есть простое и надёжное решение для получения SMS и уведомлений с нескольких SIM-карт в одном месте - в вашем Telegram-чате. Это позволит вам не пропустить важные сообщения, даже если вы находитесь вдали от своих SIM-карт. Можно таким образом даже поделиться частью данных с другими людьми, если это необходимо.
В следующей статье я расскажу, как сделать это более централизованно и гибко, используя сервер для обработки сообщений.
