понедельник, 14 января 2019 г.

Huawei e3372h. Отправляем SMS

Используя пакет трафика на МТС, у меня остается много неиспользованных СМС, которые ежемесячно сгорают. Жалко. Подумал, что информирование по СМС гораздо надежнее и эффективнее. Что-то, а смс-ка всегда долетит, даже если на телефоне закончился интернет-трафик.

Чтобы отправлять СМС через модем (в моём случае это Huawei e3372h), требуется установить прошивку Stick. Stick нужна, чтобы роутер (или комп) видел интерфейс /dev/ttyUSB0 модема, через который собственно и будут передаваться AT-команды.
Из софта, нужен smstools3. Готовый пакет можно поставить на Ubuntu или OpenWRT.

Для установки пакета smstools3 на роутер Keenetic Giga (KN-1010), сперва понадобится установить менеджер пакетов opkg. Как это сделать, хорошо описано в официальном мануале. В роли флэш-носителя, я установил micro-sd карту в слот модема, чтобы не занимать лишний USB-порт роутера.
Установка не вызвала никаких проблем
opkg update
opkg install smstools3 nano
После установки, сразу лезем в  файл конфигурации демона
nano /opt/etc/smsd.conf
# Description: Main configuration file for the smsd
devices = GSM1
incoming = /opt/var/spool/sms/incoming
outgoing = /opt/var/spool/sms/outgoing
checked = /opt/var/spool/sms/checked
failed = /opt/var/spool/sms/failed
sent = /opt/var/spool/sms/sent

receive_before_send = no
autosplit = 3

checkhandler = /opt/sms-to.sh
eventhandler = /opt/sms-from.sh

logfile = /var/log/smsd.log
loglevel = 7

# Uncomment (and edit) this section to allow smsd to start:
[GSM1]
init = AT+CPMS="ME","ME","ME"
device = /dev/ttyUSB1
incoming = yes
#pin = 0000
baudrate = 115200
Создадим все пути, указанные в конфиге
cd  /opt/var/
mkdir spool && cd spool
mkdrit sms && cd sms
mkdir incoming
mkdir outgoing
mkdir checked
mkdir failed
mkdir sent

cd /var/run/ && mkdir smsd
Ну, и пропишем свой путь для лог-файла
logfile = /var/log/smsd.log
Далее снимаем комменты с секции [GSM1] и запустим демона
smsd -c /opt/etc/smsd.conf
Готово! Отправить СМС можно командой
sendsms +79211231234 "test"
Вы наверное обратили внимание на две строки
checkhandler = /opt/sms-to.sh
eventhandler = /opt/sms-from.sh
Эти параметры указывают путь к исполняемому скрипту, который будет выполняться при получении, или при отправке смс.

Создадим исполняемый файл /opt/send-to.sh, который поможет отправлять СМС на кириллице.
nano /opt/sms-to.sh
#!/bin/sh
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin
FROM_FILE="$1"
[ ! -r "$FROM_FILE" ] && exit 1
if grep -q '[а-яА-Я]' $FROM_FILE; then
TMPFILE=$(mktemp /tmp/smsd_XXXXXX)
sed -e '/^$/ q' < "$FROM_FILE" > $TMPFILE
echo 'Alphabet: Unicode' >> $TMPFILE
sed -e '1,/^$/ d' < "$FROM_FILE" | iconv -f UTF-8 -t UNICODEBIG >>$TMPFILE
mv $TMPFILE "$FROM_FILE"
fi
На всякий случай, установим программу iconv, которая используется в скрипте
opkg update
opkg install iconv
Отправляем тестовую СМС на русском языке
sendsms +79211231234 "Я есть Грутъ!"
Смотрим логи
cat /var/log/smsd.log
2019-01-14 16:20:41,5, GSM1: SMS sent, Message_id: 19, To: 79211231234, sending time 1 sec.
2019-01-14 16:20:42,6, GSM1: SMS To: 79211231234. Moved file /opt/var/spool/sms/checked/send_8Py8QQ to /opt/var/spool/sms/sent/send_8Py8QQ
2019-01-14 16:20:42,7, GSM1: Running eventhandler: /opt/sms-from.sh SENT /opt/var/spool/sms/sent/send_8Py8QQ 19
2019-01-14 16:20:42,3, GSM1: Done: eventhandler, execution time 0 sec., status: 32512 (127)

Материал взят отсюда

1 комментарий :

  1. Интересное - давай продолжение, как сделать API для сайта чтоб SMS отправлять с сайта и понять отправлено или еще нет.

    ОтветитьУдалить