Аватарка пользователя Sergey
Sergey

Ретранслятор СМС-сообщений для релокантов – конкурс пет-проектов

Собрал ретранслятор сообщений, который принимает сообщения и пересылает их на мессенджер, позволяя избежать платы за роуминг за рубежом.

1110
Обложка поста Ретранслятор СМС-сообщений для релокантов – конкурс пет-проектов

В этом году я уехал учиться в другую страну, но у меня есть аккаунты в российских банках, на госуслугах и других интернет-порталах, требующих аутентификацию по СМС-коду. Как мне зайти на госуслуги, но не платить при этом за роуминг? Решение теперь есть – собрать устройство, которое будет принимать мои СМС-сообщения и ретранслировать их в мессенджер.

***

Привет! Я инженер-железячник, который любит, когда умные железки целиком и полностью ему подчиняются. Сегодня я расскажу, как я сделал себе пепелац, который получает смски и пересылает их мне через Интернет.

Я выбрал Raspberry Pi 2B и модуль SIM900 для Arduino – просто потому, что смог быстро купить их на Авито. Трудности начались ещё на этапе сборки устройства, потому что для модуля SIM900 нет нормального даташита, и очень сложно было понять, куда подавать питание, где находятся выводы последовательного порта, выводы управления. Вдобавок оказалось, что на одном из устройств перепутаны выводы RX и TX, и, не имея осциллографа, я очень долго не понимал, почему я не получаю ответов от модуля SIM900.

Но в итоге я собрал устройство и приступил к построению логики кода. Я написал код на языке Python, реализовал процесс ожидания получения новых СМС-сообщений как путём периодического опроса, так и путём реагирования на событие. В процессе получения сообщений я столкнулся с ещё одной проблемой, которую решить не смог. Дело в том, что очень длинные СМС разбиваются на несколько коротких, и каждое из них отсылается отдельно. Но как собрать их воедино? В описании команды CMGL я не нашёл признаков, которые позволили бы понять, что сообщение является частью более длинного сообщения.

Следующий вопрос – выбор такого мессенджера, через который можно пропихнуть сообщения через великий китайский файрвол. Whatsapp, Telegram сразу не подходят. Китайский WeChat даже не рассматривал – наслышан о его техподдержке и глюках вроде “операция не разрешена для этого аккаунта”. В итоге выбор пал на ВК. Я получил токен VK API и задействовал функцию отправки сообщений от имени сообщества.

Всё заработало. Я оставил устройство у моего друга, где оно лежит возле роутера. Код проекта доступен по ссылке:

Есть ещё одна проблема, которую я не смог решить, и сейчас прошу совета. Система стабильно работала с симкой Мотив, но когда я её заменил на МТС, то всё сломалось. После включения модуля SIM900 (неважно, кнопкой или пином), я получаю по UART такие сообщения:

			b'RDY' 
b'+CFUN: 1' 
b'+CPIN: READY'
		

Сообщения говорят об успешной инициализации SIM-карты. Но после этого устройство сразу отключается, красный светодиод гаснет. Иногда бывает, что после полного отключения питания устройство включается и некоторое время работает, но потом снова отключается, чаще всего после получения СМС.

Я подозреваю, что не хватает мощности источника питания. Устройство питается от одного источника на 5 вольт 2,4 ампера. Питание подаётся на Raspberry, а оттуда проводами на SIM900. Подавать питание напрямую на SIM900 не пробовал, так как нет подходящего адаптера. Как считаете, есть ли смысл его приобрести? Или могут быть другие причины?

1110