Raspberry Pi · 8 min read · Dec 08, 2025

Как установить SMS-сервер на Raspberry Pi

Прежде чем начать

Этот учебник покажет вам, как настроить SMS-сервер на Raspberry Pi 2 Model B, работающем под управлением Raspbian.

Мы будем использовать playsms и smstools. В моем примере я использовал 3G модем Huawei E3131.

Raspbian

Сначала нам нужно скачать raspbian, вы можете получить последнюю версию по адресу https://www.raspberrypi.org/downloads/

Прямой URL: http://downloads.raspberrypi.org/raspbian_latest

Теперь нам нужно распаковать файл: 2015-05-05-raspbian-wheezy.zip:

unzip 2015-05-05-raspbian-wheezy.zip

Вы получите файл с именем 2015-05-05-raspbian-wheezy.img, этот файл должен быть записан на вашу micro-sd карту.

Если вам нужно знать некоторые основы работы с Raspberry Pi и записи образа на micro-sd, вы можете начать с чтения этого учебника:

https://www.howtoforge.com/tutorial/howto-install-raspbian-on-raspberry-pi/

Запишите файл образа на micro-sd карту, на моем ПК micro-sd карта видна как /dev/mmcblk0 на Linux вы можете использовать dd:

dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0
  • Обратите внимание, что размер блока, установленный на 4M, будет работать большую часть времени; если нет, попробуйте 1M, хотя это займет значительно больше времени.
  • Также обратите внимание, что если вы не вошли в систему как root, вам нужно будет добавить sudo перед этой командой.

Когда образ будет записан, вставьте micro-sd карту в ваш Raspberry Pi и включите его.

Когда Raspberry Pi загрузится, вы должны увидеть экран, похожий на этот, при первом запуске.

Теперь я выбираю следующие параметры:

1 Расширить файловую систему  
3 Включить загрузку на рабочий стол/Scratch -> Выбрать текстовую консоль, требующую входа (по умолчанию)  
8 Расширенные параметры -> A4 SSH -> Включить  
8 Расширенные параметры -> A0 Обновить   
Завершить -> Перезагрузить

Теперь вы можете войти с именем пользователя: pi и паролем: raspberry.

Сначала мы настраиваем сетевую конфигурацию для нашего сервера, отредактировав

sudo nano /etc/network/interfaces

Мой файл /etc/network/interfaces выглядит так (измените настройки в соответствии с вашими потребностями):

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.255.50.30
        netmask 255.255.255.0
        gateway 10.255.50.1
        dns-nameservers 8.8.8.8 8.8.4.4

Теперь мы перезапускаем сетевую службу на Pi:

sudo /etc/init.d/networking restart

Затем мы отключаем DHCP при запуске с помощью этой команды:

sudo update-rc.d -f dhcpcd remove

Если вы хотите снова включить его позже, просто выполните следующую команду:

sudo update-rc.d dhcpcd defaults

Теперь мы можем использовать SSH-клиент, такой как PuTTY, чтобы подключиться с нашего ПК к Raspberry Pi.

Теперь мы обновляем raspbian с помощью следующей команды:

sudo apt-get update &&  apt-get upgrade -y && apt-get dist-upgrade -y

PlaySMS

Скачайте и установите playsms 1.1:

sudo -s  
apt-get install apache2 libapache2-mod-php5 mysql-server php5 php5-cli php5-mysql php5-mcrypt php5-gd php5-imap php5-curl  
php5enmod mcrypt  
service apache2 restart

Когда вас попросят ввести новый пароль для пользователя MySQL “root”, используйте надежный пароль, в этом примере я использовал MyP@$$w0rd

Теперь мы можем перейти по адресу http://your-ip, в моем случае http://10.255.50.30 , и мы увидим страницу с сообщением: “Это работает!”.

cd /tmp/  
wget http://downloads.sourceforge.net/project/playsms/playsms/Version%201.1/playsms-1.1.tar.gz  
tar -zxf playsms-1.1.tar.gz -C /usr/local/src  
ls -l /usr/local/src/  
cd /usr/local/src/playsms-1.1/  
cp install.conf.dist install.conf  
nano install.conf

Скопируйте install.conf.dist в install.conf и отредактируйте install.conf

Прочитайте install.conf и внесите изменения в соответствии с конфигурацией вашей системы.

Я отредактировал файл, чтобы он выглядел так:

# УСТАНОВОЧНЫЕ ДАННЫЕ
# ============


# Пожалуйста, измените УСТАНОВОЧНЫЕ ДАННЫЕ ниже, чтобы соответствовать конфигурации вашей системы

# Пожалуйста, не изменяйте имя переменной, вы можете изменить только значение

# Имя пользователя базы данных MySQL
DBUSER="root"

# Пароль базы данных MySQL
DBPASS="MyP@$$w0rd"

# Имя базы данных MySQL
DBNAME="playsms"

# Хост базы данных MySQL
DBHOST="localhost"

# Порт базы данных MySQL
DBPORT="3306"

# Пользователь веб-сервера, например, пользователь apache2 по умолчанию - www-data
# примечание: пожалуйста, убедитесь, что ваш пользователь веб-сервера
WEBSERVERUSER="www-data"

# Группа веб-сервера, например, группа apache2 по умолчанию - www-data
# примечание: пожалуйста, убедитесь, что ваша группа веб-сервера
WEBSERVERGROUP="www-data"

# Путь к извлеченным исходным файлам playSMS
PATHSRC="$(pwd)"

# Путь к веб-файлам playSMS
# примечание: пожалуйста, убедитесь, что ваш корневой путь веб-сайта, в этом примере это /var/www/html
PATHWEB="/var/www/html/playsms"

# Путь к дополнительным файлам playSMS
PATHLIB="/var/lib/playsms"

# Путь к демону playSMS и другим исполняемым файлам
PATHBIN="/usr/local/bin"

# Путь к файлам журналов playSMS
PATHLOG="/var/log/playsms"


# КОНЕЦ УСТАНОВОЧНЫХ ДАННЫХ
# ===================

Теперь выполните:

./install-playsms.sh

Нажмите Y, если все выглядит нормально.

Теперь мы хотим убедиться, что playsms запускается при загрузке, добавив строку в файл rc.local.

nano /etc/init.d/rc.local

Добавьте следующее в файл: /usr/local/bin/playsmsd start
внизу файла (перед exit, если есть команда exit).
Таким образом, playsmsd будет автоматически запускаться при загрузке.

..
/usr/local/bin/playsmsd start

Отредактируйте файл vhost apache:

nano /etc/apache2/sites-available/default

Мой файл vhost выглядит так:

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html/playsms
        
                Options FollowSymLinks
                AllowOverride None
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Возможные значения: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

Теперь перезагрузите конфигурацию Aapache2, чтобы применить изменения.

service apache2 reload

Затем вы сможете получить доступ к веб-сайту playsms по следующему URL:

Перейдите по адресу http://your-ip и т.д. http://10.255.50.30

Вы можете войти с:

имя пользователя: admin
пароль: admin

Шлюз - SMS Server Tools 3

Сначала мы устанавливаем инструменты сборки, чтобы собрать последнюю версию. Выполните:

apt-get install build-essential libusb-1.0 libusb-1.0-0-dev

Теперь я подключил модем Huawei E3131, и я вижу его в списке с помощью lsusb:

lsusb
lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 12d1:14fe Huawei Technologies Co., Ltd.

Мы хотели бы, чтобы он был с ID: 12d1:1506, но сейчас он обнаруживается с 12d1:14fe.

Чтобы изменить это, мы устанавливаем usb_modeswitch в систему, вы можете получить последнюю версию отсюда:

http://www.draisberghof.de/usb_modeswitch/#download

cd /tmp  
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.5.tar.bz2  
tar jxvf usb-modeswitch-2.2.5.tar.bz2  
cd usb-modeswitch-2.2.5  
make install  
cd /tmp  
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20150627.tar.bz2  
tar xjvf usb-modeswitch-data-20150627.tar.bz2  
cd usb-modeswitch-data-20150627  
make install

Теперь отключите модем и снова подключите его, затем выполните:

lsusb
 lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard

Теперь мы получили желаемый режим: 12d1:1506.

Теперь мы переходим к SMS Server Tools 3.

Сначала мы его загружаем, затем распаковываем и устанавливаем.

cd /usr/local/src  
wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz  
tar -zxvf smstools3-3.1.15.tar.gz  
cd smstools3  
make

Если вы видите ошибку, как в моем случае, когда вы выполняете make:

 make
cd src && make -
make[1]: Entering directory '/usr/local/src/smstools3/src'
Makefile:51: * recipe commences before first target.  Stop.
make[1]: Leaving directory '/usr/local/src/smstools3/src'
Makefile:10: recipe for target 'compile' failed
make: * [compile] Error 2

То сделайте следующее:

nano src/Makefile

Проблема заключается в отсутствующем табуляции, теперь найдите:

ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
override LFLAGS += -lsocket -lnsl
endif

И переместите строку override LFLAGS += -lsocket -lnsl с табуляцией

ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
        override LFLAGS += -lsocket -lnsl
endif

И попробуйте снова выполнить make:

make  
make install

Теперь мы создаем некоторые необходимые папки:

mkdir -p /var/log/sms/stats  
mkdir -p /var/spool/sms/{checked,failed,incoming,outgoing,sent}  
mkdir /var/spool/sms/modem1  
chown www-data:www-data -R /var/spool/sms  
chmod 777 -R /var/spool/sms

А затем перемещаем оригинальный файл конфигурации и загружаем образец из PlaySMS:

mv /etc/smsd.conf /etc/smsd.conf.dist  
cd /tmp   
wget -c https://raw.githubusercontent.com/antonraharja/playSMS/master/contrib/smstools/smsd.conf  
cp smsd.conf /etc/

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

Узнайте больше о динамических файлах устройств по следующему URL: http://antonraharja.com/2015/05/14/persistent-paths-for-dynamic-device-file/

nano /etc/udev/rules.d/80-ttyusb-map.rules
ACTION=="add", KERNEL=="ttyUSB[0-9]*", PROGRAM="/etc/udev/rules.d/ttyusb-map.sh %p", SYMLINK+="gsm%c"
touch /etc/udev/rules.d/ttyusb-map.sh   
chmod 755 /etc/udev/rules.d/ttyusb-map.sh   
nano /etc/udev/rules.d/ttyusb-map.sh
#!/usr/bin/perl -w

@items = split("/", $ARGV[0]);
for ($i = 0; $i < @items; $i++) {
    if ($items[$i] =~ m/^usb[0-9]+$/) {
        print $items[$i + 1] . "\n";
        last;
    }
}

Теперь отключите и снова подключите модем, и он должен находиться по адресу /dev/gsm*:

ls -l /dev/gsm*   
lrwxrwxrwx 1 root root 7 Jul 24 01:39 /dev/gsm1-1 -> ttyUSB0   
lrwxrwxrwx 1 root root 7 Jul 24 01:39 /dev/gsmmodem -> ttyUSB0

Я внес некоторые изменения в файл, вот моя конфигурация, мой модем находится по адресу /dev/gsm1-1 замените это на ваше местоположение.

# Глобальная конфигурация

#devices = modem1, modem2
devices = modem1

loglevel = 5

# журналы
stats = /var/log/sms/stats
logfile = /var/log/sms/smsd.log

# Директория очереди по умолчанию = /var/spool/sms
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent

# не устанавливайте папку отчета, пусть файлы отчетов о статусе сохраняются в входящих
#report = /var/spool/sms/report

delaytime = 2
errorsleeptime = 10
blocktime = 180
autosplit = 3
#receive_before_send = yes
incoming_utf8 = yes

# Конфигурации очереди

[queues]
modem1 = /var/spool/sms/modem1
#modem2 = /var/spool/sms/modem2

# Конфигурации модема

# Имя модема: modem1
# Тип модема: Wavecom USB
[modem1]
#init = AT+CNMI=2,2,0,1,0;+CMEE=1
#init = AT+CPMS="ME","ME","ME"
device = /dev/gsm1-1
baudrate = 19200
incoming = yes
pin = 3391
report = yes
queues = modem1
decode_unicode_text = yes
cs_convert = yes

# Имя модема: modem2
# Тип модема: Wavecom USB
#[modem2]
#init = AT+CNMI=2,2,0,1,0;+CMEE=1
#device = /dev/ttyUSB1
#baudrate = 115200
#incoming = yes
#report = yes
#queues = modem2

Перезапустите SMS Server Tools 3:

/etc/init.d/sms3 restart

Проверьте, работает ли SMS Server Tools 3:

ps ax | grep -v grep | grep smsd

Мониторинг файла журнала SMS Server Tools 3:

tail -f /var/log/smsd.log

Войдите и настройте smstools в веб-панели playsms

Войдите в вашу установку playsms, мой адрес http://10.255.50.30/

Имя пользователя: admin
Пароль: admin

Теперь перейдите в Настройки => Управление шлюзом и SMSC.

Вы должны увидеть экран, похожий на этот:

Теперь нажмите, чтобы отредактировать шлюз smstools.

И убедитесь, что он настроен так:

Нажмите Сохранить, и когда он будет сохранен, нажмите назад.

Теперь вам нужно настроить SMSC, поэтому выберите знак + в SMSTools.

Вы должны заполнить данные SMSC следующим образом, в поле номера получателя введите номер вашего модема.

Когда вы закончите, нажмите сохранить.

Теперь перейдите в Настройки => Основная конфигурация

И заполните следующие поля:

Идентификатор отправителя по умолчанию
Префикс или код страны по умолчанию

И установите SMS по умолчанию на smstools, как показано на изображении ниже.

Нажмите сохранить, мы готовы отправить первое SMS.

Отправить SMS

Теперь перейдите в Мой аккаунт => Написать сообщение

Напишите свой номер мобильного телефона в поле Отправить, и сообщение и т.д. Привет, мир! в поле сообщения и нажмите отправить.

Если сообщение попадает в очередь, вы можете отслеживать транзакцию здесь:

Перейдите в Отчеты => Все отправленные сообщения

Входящие сообщения, которые не обрабатываются, хранятся в песочнице, вы увидите это в Отчетах => Песочница

И журнал, если что-то не так, находится в Отчетах => Просмотреть журнал

Если у вас есть какие-либо проблемы с вашей настройкой, хорошее место, чтобы получить помощь, это форум playsms.

https://forum.playsms.org/

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.