Прием SMS на GPRS/3G-модем
Кто знает какой совтиной/либой/скриптом можно под линуксом такое реализовать?
У меня вот есть МТС 3G-модем, идеально было бы на него, хотя, в принципе, могу и другой купить.
в порядке извращений
stty -F /dev/ttyUSB0 raw ispeed 115200 ospeed 115200 cs8 -ignpar -cstopb (параметры подобрать по вкусу)
cat и echo /dev/ttyUSB0, используя один из мануалов http://tinyurl.com/cwub2zm
gammu/wammu наконец, самому АТ-комманды в порт писать и ответ расшифровывать.
ModemManager умеет в SMS. Вот только гуя никакого нет. Можно на питоне наваять программу, которая дергает ModemManager через DBus.
P.S. Я тут proposal на GSoC 2013 выдвинул — доработать библиотеку ModemManagerQt и добавить на её основе поддержку SMS в Telepathy, посмотрим, что выйдет.
а мне гуй и не нужен, наоборот в текстовый поток нужно, спасибо
а сам пробовал? понятно что так можно, я думал уж может где готовая совтина завалялась, чтоб самому не копаться в этих AT+BLABLABLA . или скриптик какой.
Кстати, штатная утилита mmcli (идет вместе с ModemManager) кое-что умеет: http://www.lanedo.com/
gnokii умеет, во множестве вариантов. Хоть с гуем, хоть без.
штатная утилита mmcli (идет вместе с ModemManager)
в дебиане нет, короче 🙂
gnokii умеет, во множестве вариантов
щупал, список телефонов очень уж мал, одни нокии. А так — да, держу в уме про запас. Самое лучшее было бы конечно с модема, ибо не придется городить лес из телефона и провода
А модель указать не судьба?
щупал, список телефонов очень уж мал, одни нокии.
ненене, девид блейн. Поддерживаемые телефоны — это те, для которых умеется родной бинарный нокиевский формат. Через AT-команды и компорт поддерживается все остальное. У меня оно работало с разномастной кучкой телефонов, усб-модемами и gsm-терминалами.
Это я затупил, каюсь. Два даже есть — Huawei E171 и ZTE MF30
У меня оно работало с разномастной кучкой телефонов, усб-модемами и gsm-терминалами
Вот за такое заявление — спасибо, не знал, нужно попытаться прикрутить.
об извращениях знаю толк лишь в теории 🙂
Думаю стоит попробовать gnokii, МТС все равно либо хуавей, либо ZTE, и АТ-команды на работу с смс не должны сильно меняться от марки/модели модема. Главное, не забудь приструнить NetworkManager (если он используется), а то он сразу же на все /dev/ttyUSB* садится и запирает на себя.
Кстати, кто пробовал, подскажите, модем ведь перед посылкой АТ-команд на прием СМС еще и инициализировать нужно да?
там, естественно, делается только то, что позволяют АТ-команды — т.е. позвонить/смс принять-отправить/посмотреть сигнал/проверить регистрацию симки етц, никаких контактов, записных книжек и прочего, что есть для поддерживаемых нокий. Но, сколь понимаю, этого и не надо.
проверить, что он уже живой (AT/ATE/ATZ) и регистрацию в сети
АТ-команды на работу с смс не должны сильно меняться от марки/модели модема.
какбе этсамое, на это стандарт есть.
Я для чтения/отправки смс с Huawei E153 использую gammu/wammu (форк gnokii), прописав в
/.gammurc ‘port=/dev/ttyUSB2’ и ‘connection=at’, при этом на ttyUSB0 висит pppd, запущенный через pon, и в ус не дует. smstools тоже работают, но если не организовывать массовых рассылок и, главное, немедленной обработки массы входящих, то это слишком громоздко. Как хранятся смс, определяется, вроде бы, командой AT+CPMS=, у меня по умолчанию SM (хранить на SIM), менять не пробовал.
Ну там просто старая версия ModemManager’а.
/.gammurc ‘port=/dev/ttyUSB2’ и ‘connection=at’
вот за это заявление — большое спасибо, я все никак законнектится не мог, потыкал, заработало когда прописал /dev/ttyUSB1
однако, как этой лабудой принимать смс я так и не соображу. у них в числе прочего есть демон, gammu-smsd. поставил, сконфигурял, а он не работает ив лог странное пишет..
Источник
usbmodem и софт для отправки sms
Посоветуйте плиз софт с веб-мордой для отправки sms через usb-модемы для linux/freebsd. Что то вроде playsms.
Только сегодня с этой темой разбирался.
Пусть меня не закидывают камнями за ересь. Кто-то тут писал, что оно много поколений, как мертво. Но все же:
yum install gnokii
Далее правим /etc/gnokiirc
Вот мой рабочий конфиг:
[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200
smsc_timeout = 5
Проверено на Huawei Technologies Co., Ltd. E620 USB Modem
sms ку слать так:
echo ‘Test message’ | gnokii —sendsms +79201234567
Можно засунуть в скрипт и дальше пользовать как душе угодно
Сразу скажу. smstools у меня с модемом работать отказались. Пробовал писать самопольную софтину на AT командах. В общем работало, пока не понадобилось слать русский текст. А gnokii хорошо дружит с ru_RU.UTF-8
А gnokii хорошо дружит с ru_RU.UTF-8
Во первых для отправки сообщений на русском нужно переключить режим с текстового на цифровой (AT+CMGF=0), а во вторых само сообщение должно быть отправлено в кодировке UCS2. И если с первым проблем минимум, то со вторым пришлось повозиться.
нужно с веб мордой. А сам smstools или что там еще уже прикручен и работает.
Мне кажется такого софта специально нет, его написать пару минут. Веб-форма и кнопка отправить.
Это все очень круто. Когда надо привинтить такую штуку, к мониторингу упсов на пример, вникать в это все несколько влом.
нужно переключить режим с текстового на цифровой (AT+CMGF=0)
В примере, который я привел выше — не нужно. Если есть желание при наличии достаточно простого и функционального решения замутить собственную софтину для отправки смс, и на это есть время — наверное имеет смысл.
Сделай скрипт, который будет принимать телефон и текст — это пара минут, а потом запускай его из php.
Мониторинг упсов (да и всего остального) нужно прикручивать к заббиксу, который искаробки умеет отправлять смс.
Источник
Использование smstools или GSM модем в Linux
Настройка
После установки пакета smstools в нашем распоряжении есть конфигурационный файл, где мы указываем имя устройства (GSM модем по USB).
тут по порядку значит указано:
- основной блок
- имя устройства GSM1, которое мы ниже опишем
- каталог входящих, исходящих, проверенных и отправленных sms
- лог файл и уровень логирования
- пользователь, код которым будет запущен сервис (при этом требуется проверить, чтобы у этого пользователя были права чтения и записи в устройство GSM)
- прочие настройки (pid файл и т.д, используемые при запуске сервиса для идентификации его)
- блок [default]:
- интервал запуска регулярной команды
- лог файл регулярного запуска
- блок [GSM1]:
- путь устройства
- включена поддержка входящих sms
- файл с командой, выполняемой регулярно
Права на устройство
и получим примерно такое:
нашего пользователя smstools нужно соответственно добавить в группу dialout
Отправка SMS
Используем команду smstools:
данная команда сформирует текстовый файл в каталог outgoing, который затем будет автоматически обработан сервисом smsd и отправлен, после чего перемещен в каталог sent
Чтение SMS
Входящие SMS попадают в каталог incoming, обычно сообщение в кирилице закодировано в UCS2 формат, чтобы его прочесть, требуется перекодировать.
Пример, скрипт для чтения всех сообщений в порядке их получения:
тут берется последняя строка (сам текст), а заголовки отсекаются.
Вот пример, что получим:
А вот исходные абракадабры были:
Запрос баланса
Просто записываем команду в файл для регулярного запуска
Пример, скрипт запроса баланса:
Скрипт записывает команду в файл regular_run_cmdfile, затем этот файл через regular_run_interval автоматически подхватится сервисом, после чего сервис его удаляет, и затем придет ответ в лог regular_run_logfile или в виде sms.
Если ответ придет в лог в виде строки:
2015-12-15 13:02:17,5, GSM1: CMD: AT+CUSD=1,»*100#»: OK +CUSD: 2,»002D0036002E0038003700200440002E000A041C0430043B043E002004340435043D043504330020043D0430002004410447043504420435003F0020041F043E043F043E043B043D044F04390442043500200447043504400435043700200418043D044204350440043D0435044200210020006F0070006C006100740061002E006200650065006C0069006E0065002E00720075″,72
то скрипт берет последнюю строку в логе и перекодирует ее в читаемый формат.
Источник
Приём и обработка SMS-сообщений на Linux-машине
В одном из наших свежих проектов команде разработчиков была поставлена задача собрать максимально реальные контактные данные о пользователях нашего сайта. Жаркое обсуждение правильных и неправильных форм регистрации, одно- и двушаговые, дополнение информации по мере пользования сайтом… Казалось поток идей не остановится. Однако ни одна из них не гарантировала, что в результате мы не получим кучу никчемных данных. Валидировать? Можно, но разве все предусмотришь? Активация учетной записи через почтовый ящик для его валидации? Но куча сервисов типа 10 Minute Mail сводят на нет эффект. К тому же, специфика проекта не позволяла слишком растягивать процесс регистрации. Решено было, что пользователь должен зайти, сделать своё дело, а потом уже активировать или нет свою учетную запись. В конце концов прозвучала фраза «А давайте активировать по SMS!». Поиск провайдеров, изучение прайс-листов и отказ от идеи взвалить обработку SMS на стороннюю контору… Стало понятно, что принимать и обрабатывать их придется самим.
Скромный опыт работы с VOIP/Asterisk и подбора оборудования для VOIP-шлюза имелся. Полез по старым ссылкам к китайским братьям искать SMS-gateway. Но во-первых время поджимало, во-вторых по опыту работы с ними с первого раза редко что-то выходит, поэтому стало интересно, сможет ли обычный USB GSM-модем справиться. И, забегая вперед, скажу что это решение было правильным. По крайней мере на данном этапе.
Настройка сервера
Итак, ко мне в руки попал модемчик Huawei E1750 (HSPA USB Stick) с контрактом. Первое с чем столкнется человек взявшийся за подобную задачу, это то, что все свежие модели GSM-модемов, в угоду пользователям Windows, опознаются в системе сначала как устройство хранения данных (SCSI CD-ROM). С него запускается autorun, который установит драйвера и переключит модем в режим модема (о как!). Сразу как я узнал это, я решил «приехали». Однако еще полчаса, и была найдена утилита usb_modeswitch, которая выполняет переключение режимов модема. Только после этого модем заработает по его прямому назначению. Запускается и настраивается она просто, тут писать особо нечего.
Ну, с богом! Информации к этому моменту уже было нарыто не сказать чтоб много, но достаточно, чтобы копать в нужном направлении. Существующие решения были отфильтрованы по признаку «работает как демон», в итоге остался один кандидат — SMS Server Tools. Нужно отметить, что оригинальный пакет уже не развивается, но его продолжение SMS Server Tools 3 не только развивается, но и отлично поддерживается своим создателем Mr. Keijo «Keke» Kasvi.
К сожалению, в моей любимой Gentoo не нашлось ebuild-а для свежей версии, последняя имеющаяся версия 2.2.20. Но, недолго погуглив, я нашел уже готовый ebuild для 3-й версии, который и скомпилировал после небольшой его правки. На данный момент у меня установлена и стабильно работает версия 3.1.14.
Как оказалось, настройка smstools является настолько простой, что практически с начальным конфигом можно уже начинать принимать сообщения. Нет, ну конечно, если у вас симка закрыта пин-кодом, Вам его придется добавить в конфигурацию, но это делается очень просто.
Структура файла конфигурации тоже понятна до безобразия (viva unix-way!). В начале файла прописываем глобальные настройки демона, а затем в секциях описываем настройки наших устройств:
# Глобальные настройки демона
.
.
# Наш модем и его настройки
[Huawei E1750 ]
.
# И еще одно устройство, если оно у нас есть, со своими настройками
[AnotherModem]
.
Глобальные настройки
Самый важный параметр, это какие устройства демон будет опрашивать на предмет наличия новых сообщений. Если у вас всего одно устройство, как у меня, просто пропишите devices = HuaweiE1750 , если их у Вас несколько, перечислите их тут через запятую.
Еще два важных параметра — это user = smsd и group = sms . Людям, знакомым с линукс, объяснять их значение не надо, я же ограничусь лишь напоминанием о правильных правах на все ресурсы, к которым демон должен иметь доступ. Ну и упомяну про такие инструкции, как pidfile = /var/run/smsd/smsd.pid , logfile = /var/log/smsd/smsd.log , значение которых тоже должно быть понятно. Кстати, на момент отладки рекомендую вставить в конфигурацию также инструкцию loglevel = 7 , это позволит Вам отслеживать, что же происходит внутри демона. В дальнейшем я выставил loglevel = 5 .
Настройки модема
В принципе, тут тоже, как было обещано, все просто. Однако я столкнулся с некоторыми проблемами, из-за которых я собственно и решился поделиться с Вами информацией.
Одной проблемой стало жгучее желание модема все время соскочить на новое устройство. Один раз он определялся как /dev/ttyUSB0 , в другой раз под другим номером. Такое положение дел не устраивало меня. Поэтому, я стал искать как писать udev правила для устройств. Однако, когда я уже был готов внести свои изменения, обнаружилось, что ebuild usb_modeswitch уже сделал это за меня добавив в систему файл /lib64/udev/rules.d/40-usb_modeswitch.rules , согласно которому в системе появлялся симлинк на девайс по адресу /dev/gsmmodem . Его мы и пропишем в конфигурации.
Второй проблемой стало зависание модема время от времени. К сожалению, вычитывать матчасть времени уже не было, да и гугл выдал такое количество вариантов, что пробовать их все не имело смысла. Поэтому, не особо рассчитывая на помощь, я пополз на форум smstools3. Каковы же были мои удивление и радость, когда keke ответил на мой пост через жалких 2-3 часа. Нет, точного решения он не давал, однако две строки которые он рекомендовал добавить в конфиг раз и навсегда избавили меня от зависаний. Для меня до сих пор остаётся загадкой, где брать значения для них, я не нашел технической документации по модему:
check_memory_method = 1
memory_start = 0
Ну, и третьей проблемой, из-за которой затевался весь сыр-бор, стало написание обработчика SMS. Для этого в конфиг была добавлена инструкция eventhandler = /usr/local/scripts/activate , внутри которого происходила отправка на сервер проекта запроса на активацию учетной записи. Скрипт, получает два параметра — тип события и файл сообщения. Выдергивает из него нужные нам данные, и отсылает на сервер.
Итого, получили вот такой короткий конфиг:
devices = Huawei
loglevel = 5
user = smsd
group = sms
logfile = /var/log/smsd/smsd.log
infofile = /var/run/smsd/smsd.running
pidfile = /var/run/smsd/smsd.pid
alarmlevel = 7
alarmhandler = /usr/local/scripts/activate/smsd-alarm
[Huawei]
device = /dev/gsmmodem
baudrate = 115200
pin = 1111
incoming = high
cmgl_value = 0
check_memory_method = 1
memory_start = 0
eventhandler = /usr/local/scripts/activate
Неожиданный profit
Изначально форма регистрации содержала поле Мобильный телефон — это было в требованиях проекта. Пришедшее SMS должно было быть отправлено с указанного телефона, и учетная запись с этим телефоном активировалась. Однако, как оказалось, пользователи становятся в тупик, когда им в сообщении ничего не надо писать. Сначала после регистрации появилась инструкция «Отправьте на номер 12345678 сообщение с текстом «F»». Потом родилась другая, гениальная как сейчас кажется, идея: из формы было убрано поле Мобильный телефон, после короткой регистрации (Имя, Фамилия, E-mail/login, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.
Источник