Профиль | Публикации (1) | Комментарии (48) | Избранное (98) |
sudo yum install usb_modeswitch # для поддержки USB-модемов Huawei, T-Mobile, Vodafone, Option, ZTE, Novatel
sudo yum install minicom # для терминального подключения к модему по /dev/ttyUSB*
sudo yum install smstools # собстветвенно пакет для работы с смс.
Теперь проверим, появился ли модемls -l /dev/ttyUSB*
Результат должен выглядеть примерно так crw-rw----. 1 root dialout 188, 0 Oct 22 12:05 /dev/ttyUSB0
crw-rw----. 1 root dialout 188, 1 Oct 22 15:56 /dev/ttyUSB1
crw-rw----. 1 root dialout 188, 2 Oct 22 12:05 /dev/ttyUSB2
Модем создал 3 виртуальных USB порта. В моем случае для AT команд доступны ttyUSB1 и ttyUSB2. Если модем создал 5 и более виртуальных портов, то их количество можно уменьшить до 3х. Для этого нужно отключить в нём режимы cdrom и flash-drive. Выключение делается коммандой AT+ZCDRUN=E, включение AT+ZCDRUN=F. Если хотим отключить только cd-rom, то AT+ZCDRUN=8. Если хотим включить обратно — AT+ZCDRUN=9.Запускаю терминал minicom -D /dev/ttyUSB1
вижу приветствие
Welcome to minicom 2.5
OPTIONS: I18n
Compiled on Feb 24 2011, 11:25:55.
Port /dev/ttyUSB1
Press CTRL-A Z for help on special keys
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK
выключаю CD-ROM>AT+ZCDRUN=8
Close autorun state result(0:FAIL 1:SUCCESS):1
OK
Вообще AT команд довольно много и раньше, во времена телефонных модемов, из знание было обязательным для уважающего себя админа. Сейчас всё измениилось и вспомнить подзабытые комманды можно с помощью гугла. Например вот хорошая статья справочного характера.Попробуем пообщаться с модемом.Посмотрим режим работы модема>AT+ZSNT?
+ZSNT: 1,0,0
OK
в моем случае — =1,0,0 — Автоматический выбор только GSM сети. Поскольку я использую обычную, а не 3G симку, этот режим меня полностью устраивает. Также существуют следующие варианты режима работы:AT+ZSNT=0,0,0 (Авто) - по умолчанию
AT+ZSNT=0,0,1 Автоматический выбор сети: GSM+WCDMA, предпочтение GSM
AT+ZSNT=0,0,2 Автоматический выбор сети: GSM+WCDMA, предпочтение WCDMA
AT+ZSNT=1,0,0 Автоматический выбор сети: только GSM
AT+ZSNT=2,0,0 Автоматический выбор сети: только WCDMA
AT+ZSNT=0,1,0 Ручной выбор сети: GSM+WCDMA
AT+ZSNT=1,1,0 Ручной выбор сети: только GSM
AT+ZSNT=2,1,0 Ручной выбор сети: только WCDMA
Проверим, установлена ли защита пин-кодом >AT+CPIN?
+CPIN: SIM PIN
OK
отключаем PIN>AT+CLCK="SC",0,"1111"
включаем PIN>AT+CLCK="SC",1,"1111"
Если она включена, то для продолжения работы нам необходимо его ввести>AT+CPIN=”1234″
OK
проверим ещё раз>AT+CPIN?
+CPIN: READY
OK
Теперь пин-код принят. Посмотрим уровень сигнала>AT+CSQ
+CSQ: 21,99
OK
получим версию IMEI модуля>AT+GSN
359518034903581
OK
Посмотрим тип регистрации в сети>AT+CREG?
+CREG: 0,1
OK
0 означает, что нет сообщения о сменен регистрации в сети1 — успешно зарегистрирован в сетиПосмотрим информацию об операторе>AT+COPS?
+COPS: 0,0,"Kyivstar",0
OK
Первый 0 означает автоматический выбор сети, длинный тестовый формат имени (второй 0), и само названия оператора — Киевстар.проверим, установлен ли у нас и какой именно центр отправки смс (Service Center Address)AT+CSCA?
+CSCA: "+380672021111",145
OK
Для Киевстара это правильный номер.Теперь попробуем отправить сообщение. Перед отправкой сообщения нужно установить формат сообщения. Делается это коммандой AT+CMGF=x. где x — формат сообщений, 0-1.0, — режим PDU, управление кодом команды. Вывод сообщения в HEX коде. Режим по умолчанию1, — текстовый режим. Команды текстовые. Вывод сообщения в текстовом виде.В первый режиме сообщения будут выдаваться в виде шестнадцатеричных кодов ascii или unicode.Это очень неудобный режим.Отправка смс делается командой AT+CMGS=«ХХХХХХХХХХХ», где ХХХХХХХХХХХ — номер абонента. Отправка смс зависит от формата сообщения. После ввода команды выдает приглашение ">" после чего можно вводить текст сообщений. Завершается символом ESC или Ctrl-Z. Отправим сообщение используя текстовый режим и предварительно насильно установив SCA:AT+CMGF=1
OK
AT+CSCA= "+380672021111"
OK
AT+CMGS="+38067xxxxxxx"
> test message
>
+CMGS: 110
OK
Смс успешно пришла.Можно отправлять смс предварительно записав в память:AT+CMGW="91234567"<CR>Sending text messages is easy.<Ctrl+z>
AT+CMSS=3
При работе с AT командами не всегда всё проходит гладко. Иногда комманды выполняются с ошибками, возвращая трехзначный код ошибки. Вот список основных кодов ошибок:Error code Meaning
0-127 GSM 04.11 Annex E-2 values
128-255 GSM 03.40 section 9.2.3.22 values
300 Phone failure
301 SMS service of phone reserved
302 Operation not allowed
303 Operation not supported
304 Invalid PDU mode parameter
305 Invalid text mode parameter
310 SIM not inserted
311 SIM PIN necessary
312 PH-SIM PIN necessary
313 SIM failure
314 SIM busy
315 SIM wrong
320 Memory failure
321 Invalid memory index
322 Memory full
330 SMSC (message service center) address unknown
331 No network service
332 Network timeout
500 Unknown error
512 Manufacturer specific
#используемые устройства, если несколько — пишем через запятую
devices = GSM1
#папки для сохранения смс
incoming=/var/spool/sms/incoming
outgoing=/var/spool/sms/outgoing
checked=/var/spool/sms/checked
sent=/var/spool/sms/sent
# лог, если не указан — пишется в syslog, если = 1, пишет в stdout
logfile = /var/log/smsd/smsd.log
#уровень логирования
loglevel = 5 #debug = 7
user = sms
#включаем "умный" лог
smart_logging = yes
#скрипт, выполяющийся перед отправкой смс для автоматической конвертации кириллических сообщений в "правильную" кодировку. о нём подробнее ниже
checkhandler = /etc/smsd/check.sh
#скрипт, выполняющийся после отправки смс и создающий лог отправленного. о нём подробнее ниже
eventhandler = /etc/smsd/trsms.sh
[GSM1]
#используемое устройство
device = /dev/ttyUSB1
#пин-код
pin = 1111
#SCA
smsc = 380672021111
Подробнее обо всех параметрах конфига можно прочитать на официальном сайте smstool.chown smstools:smstools /etc/smsd/trsms.sh
chmod gu+x /etc/smsd/trsms.sh
chmod gu+w /var/log/smsd/sms.log
Сам скрипт:#!/bin/bash
status="$1"
file="$2"
touch /etc/smsd/ok
case "$1" in
SENT)
FILE=`mktemp /tmp/smsd_XXXXXX`
head -5 $file | grep -e "^To: " -e "Alphabet: " -e "^Sent: " >> /var/log/smsd/sms.log
if grep "Alphabet: Unicode" $file >/dev/null; then
tail -n +6 $file | iconv -f UCS-2BE -t UTF-8 >> /var/log/smsd/sms.log
else
tail -n +5 $file >> /var/log/smsd/sms.log
fi
echo >> /var/log/smsd/sms.log
echo "========================================" >> /var/log/smsd/sms.log
echo >> /var/log/smsd/sms.log
;;
esac
Пример части лога:========================================
To: 38067XXXXXXX
Alphabet: Unicode
Sent: 12-10-23 21:07:29
test message
========================================
To: 38093XXXXXXX
Alphabet: Unicode
Sent: 12-10-19 12:16:28
лог пишет теперь и на русском
========================================
chown smstools:smstools /etc/smsd/check.sh
chmod gu+x /etc/smsd/check.sh
Сам скрипт:#!/bin/bash
# checkhandler for SMS Tools 3
# autoconverts cyrillic messages to UCS-2BE
# add checkhandler=/path/to/ucsautoconvert into global part of smsd.conf
# written by lexy (lexy@mrlexy.ru), 2008
FILE=`mktemp /tmp/smsd_XXXXXX`
if [ ! `grep '[А-Яа-я]' $1 > /dev/null` -o `grep 'Alphabet:\s*U' $1 > /dev/null` ]
then exit 0
fi
cat $1 | awk '{if(NF==0) {s=1} if(s==0 && NF>0 && $0!~/Alphabet:[ \t]*U/){print}}' > $FILE
echo Alphabet: Unicode >> $FILE
cat $1 | awk '{if(NF==0) {s=1} if(s==1){print}}' | iconv -t UCS-2BE >> $FILE
mv $FILE $1
chmod 664 $1
теперь всё готово к запуску.>service smsd start
Starting smsd: [ OK ]
проверяем, запустился ли> ps ax | grep smsd
1345 ? Ss 0:00 /usr/sbin/smsd
1347 ? S 0:00 /usr/sbin/smsd
2322 pts/2 S+ 0:00 grep --color=auto smsd
пробуем отправить сообщение. номер абонента указываем в международном формате, но без знака «+»smssend "38067XXXXXXX" "test message"
--
Text: test message
To: 38067XXXXXXX
смотрим лог. > tail /var/log/smsd/smsd.log
добавились строки2012-10-23 21:07:08,5, GSM1: SMS sent, Message_id: 112, To: 38067XXXXXXX, sending time 7 sec.
2012-10-23 21:07:21,5, smsd: Moved file /var/spool/sms/outgoing/send_NpoTqX to /var/spool/sms/checked
проверяем отправленную смс:>cat /var/spool/sms/sent/send_NpoTqX
To: 38067XXXXXXX
Alphabet: Unicode
Modem: GSM1
Sent: 12-10-23 21:07:29
IMSI: 255030837719869
test message
cat /usr/local/etc/zabbix_server.conf | grep AlertScriptsPath
### Option: AlertScriptsPath
AlertScriptsPath=/home/zabbix/bin/
Сам скрипт называю sms_send.sh и состоит он практически из одной строки:#!/bin/bash
to=$1
subject="$2"
body="$3"
smssend $to "$subject"
Дальнейшая настройка осуществляется через веб-интерфейс. Сначала идем в Администрирование -> Способы оповещений (Administration Media types-> ) и создаем новый способ оповещений ( Media types). Название скрипта должно быть таким же, как и имя файла скрипта в директории AlertScriptsPathadduser playsms
mkdir -p /var/www/playsms
mkdir -p /var/spool/playsms
mkdir -p /var/log/playsms
chown -R apache /var/www/playsms
chown -R apache /var/spool/playsms
chown -R apache /var/log/playsms
chmod -a -G smstools playsms
wget http://downloads.sourceforge.net/project/playsms/playsms/Version%200.9.7.1/playsms-0.9.7.1.tar.gz
tar -zxvf playsms-0.9.7.1.tar.gz -C /usr/local/src
cd /usr/local/src/playsms-0.9.7.1/web/
cp -rR * /var/www/playsms
cp playsmsd* sendsmsd* /usr/local/bin/
chown -R apache /var/www/playsms
mysqladmin -u root -p create playsms
Импортируем в созданную базу:mysql -u root -p playsms < /usr/local/src/playsms-0.9.7.1/db/playsms.sql
Копируем конфиг, предварительно отредактировав в нем пароль пароль для подключения к базе (и логин, если у вас не root)cp /var/www/playsms/config-dist.php /var/www/playsms/config.php
vi /var/www/playsms/config.php
$core_config['db']['pass'] = 'ваш пароль'; // database password
Настраиваем автоматический запуск программы:cd /usr/local/src/playsms-0.9.7.1/bin
cp playsmsd playsmsd.php playsmsd_start /usr/local/bin/
cp playsms /etc/default/
В /etc/rc.d/rc.local добавлеям строчку — /usr/local/bin/playsmsd_start. Панель управления PlaySMS доступна по htpp://ip.адресс.вашего.сервера/playsms. Вход admin \ admin. PLAYSMS_PATH=/var/www/html/playsms
>gsm-ussd -m /dev/ttyUSB2 '*115#'
Bonusy 55.0 SMS na nomery po Ukraini (dijsni do 2012-11-06 23:59:59). Zamovlennia Paketu SMS za tel. 477*030*
>gsm-ussd -m /dev/ttyUSB2 '*111#'
Na rahunku: 17.14 grn. Nomer die do 24-10-2013. Bonusy: 0 grn (dijsni do 14-10-2022); 104810496 bytes
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Комментарии (9)