Usb модем sms linux

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.

Мониторинг упсов (да и всего остального) нужно прикручивать к заббиксу, который искаробки умеет отправлять смс.

Источник

Приём и обработка 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 , если их у Вас несколько, перечислите их тут через запятую.

Читайте также:  Установить логотип для windows

Еще два важных параметра — это 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, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.

Источник

посоветуйте USB-модем для рассылки SMS

Господа коллеги, моё почтение!

Дано: система Debian GNU/Linux 7.0 Wheezy AMD64, на которой крутится nagios, рассылающий SMS через Megafon Huawei E173 с мегафоновскими симкой и прошивкой. В последнее время задолбал тем, что меняет имя устройства и прекращает, то снова начинает рассылать SMS-ки.

Найти: способ круглосуточной работы в режиме рассылки SMS-ок, чтобы они не пропадали.

  • Пробовал делать симлинк при самопроизвольном передергивании модема, как описано тут.
  • Пробовал вместо gammu использовать gammu-smsd.

В обоих случаях было еще хуже, чем до, то есть большее количество SMS-ок не приходило.

Также, смотри предысторию системы вот тут.

Специализированные онлайн-сервисы. Иначе тебя может заблочить провайдер, оштрафовать и передать дело в суд.

Иначе тебя может заблочить провайдер, оштрафовать и передать дело в суд.

Это когда у нас провайдерам делегировали право штрафовать и передавать дела в суд?

Провайдеры просто на вас нажалуются чтобы вы им канал не забивали. А вас увезут в домик

А, ну это таки две большие разницы :3

Я уж было заволновался просто.

Спасибо за идею! Но мне хотелось бы мониторить даже при условии пропадания связи с междусетью. 🙂

По хабрассылке в частности сказано:

Рассылка по сети подвижной радиотелефонной связи (далее также – рассылка) должна осуществляться при условии получения предварительного согласия абонента, выраженного посредством совершения им действий, однозначно идентифицирующих этого абонента и позволяющих достоверно установить его волеизъявление на получение рассылки.

Все админы, которым надо, согласны получать SMS-трафик, а те, которые были в своё время несогласны, вычеркнуты из рассылки. Так что где здесь нарушение?

А как он видится: как /dev/ttyUSB* или как сетевуха? От этого зависит, каким способам отправлять SMS-ки. У меня есть билайновский ZTE MF823D, видится как сетевуха, на хабре была статья, как telnet-ом отправлять SMS. Но мне предпочтительней gammu*.

В последнее время задолбал тем, что меняет имя устройства
и прекращает, то снова начинает рассылать SMS-ки.

В смысле меняет ? У меня E169, вроде работает. Единственное — это надо организовывать очередь тем или иным способом и контролировать успешность отправки.

либо проблема преувеличена, либо проблема с питанием по usb.

Читайте также:  Чтобы не сбивалось время mac os windows

Несколько лет использую связку nagios+gammu-smsd.

gammu-smsd запускается скриптом в цикле.

Можно взять копеечный sim800l и копеечный переходник usb-uart. В итоге получится такое же USB устройство, управляемое теми же at-командами, но на порядки более стабильное (модули sim800 ставят во всякие сигнализации, где они работают месяцами, если не годами, переходник же usb-uart вообще выполнен на жесткой логике и если взять какой нибудь хороший типа ft232, то вещь безотказная). 3G-модемы операторов же изготавливаются исходя из домашнего использования, когда их никто не гоняет 24/7, а в случае чего не проблема переткнуть.

Только если получатель не давал согласия получать СМС. Если давал, то с точки зрения закона все чисто. И это правильно. Бывает удобно получать по СМС всякие уведомления.

Ну и у той же ft232 можно прошить официальной программой серийный номер и простейшим правилом udev гарантировать, что порт имеет правильное имя.

Плата за все это — необходимость соединить 4 проводами две китайских платки.

У меня именно Мегафон E173. Рассылаю SMS с помощью утилиты, идущей в комплекте.

Ну и у той же ft232 можно прошить официальной программой серийный номер

Внутри микрухи прямо ?

У FTDI есть EEPROM, в который можно писать значения с помощью официальных утилит. Там хранятся помимо прочих настроек VID, PID и серийный номер USB-устройства. VID/PID менять не очень удобно, потому что тогда драйвер не увидит устройство. А вот серийный номер — самое то.

Спасибо за домашнее задание! Заказал две платки для того, чтобы навелосипедить супер-пупер надежный промышленный USB-модем. Посмотрим, что из этого выйдет. 🙂

На самом деле программа должна уметь определять зависание модема и проводить его рестарт в случае необходимости.

И в случае gammu видимо д.б. какой-то лог.

Отвал модема — это зависание и отвал устройства на шине USB, так что ни копеечный переходник, ни sim800 скорее всего не помогут.

А еще СМС могут забивать внутренюю память симкарты.

А еще связь с базовой станцией может теряться.

Лучше gsm шлюз openvox взять.

Я забыл тебе кое-что сказать очень важное. Скорее всего тебе ещё нужно приобрести понижающий DC-DC преобразователь (подойдёт самый дешёвый рублей за 30-40, крохотная платка). Потому что USB выдаёт 5В, а у SIM800L максимальное напряжение питания 4.4В. Нужно его немного понизить. Чисто технически ничего сложного — у переходника на UART должны быть пара контактов — GND и 5В. Вот эти контакты надо пропустить через DC-DC преобразователь (у него есть пара входных контактов и пара выходных) и всё.

Больше из аппаратной начинки ничего не потребуется, теперь уже ничего не забыл (разве что тебе мало СМС и ты захочешь ещё голоса, но это совсем другая тема). Если возникнут какие-то вопросы, то обязательно отвечу.

Отвал модема — это зависание и отвал устройства на шине USB, так что ни копеечный переходник, ни sim800 скорее всего не помогут.

Внутри 3G-модема от оператора находится микроконтроллер или даже целый SoC (возможно, даже с Linux’ом на борту), который помимо прочего реализует стек USB и представляется соответствующим девайсом. Так вот, прошивки этих модемов обычно глючные и при длительной работе рано или поздно могут подвиснуть. Соответственно, устройство перестаёт отвечать на USB-запросы. Но всем на это плевать, потому что 99% пользователей не использует модемы 24/7.

Переходник USB-UART это гораздо более примитивное устройство. Зачастую там даже прошивки нет, а жёсткая логика. К тому же ЦА совсем другая — использовать подобный переходник 24/7 вполне вероятный сценарий использования.

Модуль SIM800, безусловно, имеет свою прошивку. Но она таки менее глючная, чем у 3G-модемов. Во всяком случае за это говорит тот факт, что в сети полно отзывов людей, у которых зависают 3G модемы просто от долгой работы, а про SIM800 подобной информации нет. Да, могут быть баги в прошивке, но точно не такие, что модуль превращается в тыкву тупо от нескольких дней работы. Помимо опять же другой ЦА (производитель знает, что его GSM-модуль часто будут пихать в девайсы, которые долго работают) сказывается ещё и меньшее количество функций (нет 3G и 4G). Опять же SIM800 вполне успешно применяется во всяких сигнализациях и т. п., где важна отказоустойчивость. А 3G-модемы используются в ответственных местах только с костылями типа релюшки для переключения питания USB.

В общем, мой вариант не будет глючить по двум причинам:

1) Он примитивнее. А чем проще конструкция, тем меньше точек отказа.

2) Каждый компонент заточен производителем под работу 24/7, ЦА производителей включает всякие автономные девайсы, а не простых домашних пользователей.

Используй онлайн сервисы. Если проблема с специализированными, можешь написать веб-скрабера для публичного мегафоновского (если есть).

Я для двух своих грёбанных монополистов как-то написал, может пригодится стянуть идейку, или хз чего. В профиле ссылка на гитхаб.

у меня есть sim800 правда на обычном uart, и он иногда виснет) Про зависание симкомовских модемов можно почитать на электрониксе.

Обычно зависание модема лечится отключением питания. Не кнопки PWR_KEY. А именно питания. У тебя такое предусмотрено?

А 3G-модемы используются в ответственных местах только с костылями типа релюшки для переключения питания USB.

Да, да. Там реле тоже для этого.

Еще раз. USB не предназначена для 24/7. Устройства на USB со временем отваливаются.

Данная проблема лечится снятием питания с порта USB хаба. USB хаб твоего устройства позволяет управлять питанием?

Все это домыслы. Прошивок под симкомовские модемы море: баги закрываются — баги открываются. Сигнализации и тревожные кнопки не рассылают массово SMS.

В общем, мой вариант не будет глючить по двум причинам

это же волюнтаризм?

1) Он примитивнее. А чем проще конструкция, тем меньше точек отказа.
2) Каждый компонент заточен производителем под работу 24/7,

ни один производитель не может предусмотреть условий эксплуатации и режима работы в конечном изделии. Так что обломайся)

ЦА производителей включает всякие автономные девайсы, а не простых домашних пользователей.

Охренеть. У некоторых производителей есть ЦА «для всякого неотказоустойчивого домашнего дерьма»? Вообще как бы у всех РЭК есть комерческое, индустриальное и тп исполнение. Эти не исключение.

Читайте также:  Все программные обеспечения windows

если прочитать мануал от производителя — можно узнать много нового, например что требуется согласовывать уровни управляющих сигналов, pp 31-33

В смысле было /dev/ttyUSB0 стало /dev/ttyUSB1 или /dev/ttyUSB2, или /dev/ttyUSB3. Потому как перестает со старым именем работать, но меняешь конфиг, и с новым ок отправляет.

Ага, спасиб за добавление. Буду учитывать. Конечно, надо преобразователь поставить, т.к. обычная пара резистор-стабилитрон явно не справится из-за большого тока, необходимого для питания передатчика.

В смысле было /dev/ttyUSB0 стало /dev/ttyUSB1

Понятно. Тогда можно для udev сделать правило, формирующее симлинк на событие. Имя придумать какое-нибудь а-ля /dev/ttySMS0 и его использовать: SUBSYSTEM==»tty», KERNEL==»ttyUSB*», , ACTION==»add», SYMLINK+=»ttySMS0″ . «ещё условия» необходимы, так как ttyUSBn создаётся три штуки обычно. Кстати, может потребоваться фиксированное имя более, чем для одного ttyUSB — это уже от используемого ПО зависит.

Ну с сигналами 3.3В модуль отлично работает. А 3.3В уровни любой нормальный переходник usb-uart выдавать умеет. Там обычно джампер или микропепеключатель для выбора между 5 и 3.3.

Линейный регулятор справится, но тут другая проблема. Ток от USB ограничен и терять мощность на таком не стоит.

ну, так понимаю, рекомендации разработчиков модуля не пронимают, чего они там знают-то о разрабатываемом ими модуле эти разработчики.

на картинке 20 в документе http://simcom.ee/documents/SIM800/SIM800_Hardware Design_V1.08.pdf модуль развязан от 3,3В интерфейса резисторами. При чем входное сигналы подаются на модуль через токоограничивающие резисторы. А выходные — через делитель и также с ограничением по току.

про питание тоже интересно — пиковый ток применяемых стабилизаторов — до 3А с серьезной емкостью по входу и увеличенной индуктивностью для DCDC. В документе черным по белому пишут про 2A peak current in burst mode of the module

как такое подключать к питанию usb порта пк: т.е. из 2,5..4,5 Вт в случае чего получить 8,5Вт — непонятно.

проще уж тогда вместо модема взять обычный сотовый телефон с возможностью работать через Data кабель — в нем хотя бы аккумулятор есть. Siemens С35 в свое время неплохие были) Ну или модемы Siemens TС35

Или купить нормальный индустриальный модем для M2M, а вместо usb — pci контроллер 2xRS232 или MB c интегрированным RS232 портом.

Или еще есть тема — перевести usb модем на прошивку hilink и отправлять sms через api веб-интерфейса. Правда это не гарантирует, что модем перестанет отваливаться.

Насколько понимаю, сейчас модем теряет связь с базовой станцией или что. Далее gammu посылает ему команду сброса, после которого udev заново присвает ему имя. И так до бесконечности.

Т.е. начинать нужно с логов работы, а не с паяния на коленке собственного мега-модема.

Ну я опираюсь на реальный опыт использования данных модулей в своих проектах. Без 2А питания он вполне обходится, хватает большого электролита, который уже стоит на плате. В любом случае даже если оно изредка будет терять сеть это лучше необратимо зависания 3G модема. На практике оно даже сеть не теряет. А вот например если запитать от лабораторного БП (который точно тянет 2а) и выставить напряжение около 3.6в (вполне допустимое по даташиту), то модуль может написать low voltage и отрубиться. Но я и посоветовал ТСу подавать максимум — 4.4В.

Тоже приходится заниматься с симкомовскими модулями с тех пор как они еще sim300 выпускали. При чем в серийной продукции.

если запитать от лабораторного БП (который точно тянет 2а) и выставить напряжение около 3.6в

непонятно, к чему этот эксперимент. Напряжение скорее всего меряется на выходе БП, интегрально.На модуле в случае резкого потребления им мощности, напряжение может упасть ниже 3.6В. Т.е. нужно мерять стрелочным вольтметром и на модуле, чтобы скачок этот увидеть.

Модуль 2 А в пике потребляет. Лабораторный источник как и любой другой может просто не успеть в пике отдать столько энергии. Поэтому в референсе предлагают запасать энергию в накопительном конденсаторе, а в случае DCDC также увеличивать накопительную индуктивность (33->100 uH)

Но я и посоветовал ТСу подавать максимум — 4.4В.

Дело не в напряжении, а в максимальной мощности, который может отдать порт USB. Для 2.0 — это 5В*0,5A=2,5Вт. Для 3.0 — 4.5Вт. Т.е. в случае 4.4В максимум, что можно получить с DCDC это 2.5/4.4*КПД ★ ( 23.12.16 16:01:33 )

Ну вы поняли, есть такие USB-аккумуляторы, иной вопрос, будут ли они заряжаться от 2.0 ?

Здравствуйте, скажите пожалуйста какая аппаратная начинка потребуется для передачи голоса?

UP! В связи с продолжающимся ухудшением качества отправки сообщений в системе, продолжаю наблюдение, переведя модем в режим «только модем», начал играться с разными комбинациями дистров и виртуалок (дебиан 9, убунту 18.04), но всё стало резко лучше, когда поднял виртуалку с FreeBSD 11.2-RELEASE-p4 AMD64 и пробросил туда девайс. Причем видно, что до начала отправки gammu долго ждет чего-то и не сразу начинает отправлять, но потом все же отправляет; причем я заметил, что во фре не было ни одного случая неудачной отправки, хотя ради справедливости стоит отметить, что фря геометрически в другом месте, нежели производственный тазик. Во фрёвой сборке указаны какие-то хитрые длинные таймауты, которых нет в линуховой? Навскидку, не нашел где поуказывать таймауты модема в /etc/gammurc . Посещают мысли пересобрать пакетик gammu, переконфигурировав таймауты.

Источник

Оцените статью