отправка SMS

Started by MaG, May 07, 2008, 09:33:12 AM

Previous topic - Next topic

MaG

собственно вопрос: как сделать отправку смсок через gsm-модем (сотовый телефон)?
а именно какие модели поддерживаются? например такой вот http://www.onegsm.ru/show_good.php?idtov=1029
будет работать?

настройки должны быть типа таких? (при условии что это линух gsm-модем подключен к COM1)
SMSDriver = libnxsms_generic.so
SMSDrvConfig = /dev/ttyS0

Alex Kirhenshtein

Да, этот сименс должен работать. В принципе, поддерживаются все  телефоны, которые позволяют отсылать сообщения AT-командами в text mode (можно проверить из терминала командой "AT+CMGF=1")

Формат SMSDrvConfig: port,speed,data_bits,parity,stop_bits. Все параметры необязательны, но пропускать нельзя (т.е. "/dev/ttyS0,,,2" - невалидно)

speed, data_bits, stop_bits - число, parity: n/o/e - none/odd/even

Пример:SMSDrvConfig=/dev/ttyS1
SMSDrvConfig=/dev/ttyS0,115200
SMSDrvConfig=/dev/ttyS0,115200,8,n,1


Значиния по умолчанию:
*) порт - "/dev/ttyS0" ("com1:" на win)
*) скорость порта - 9600
*) data bits - 8
*) parity - none
*) stop bits - 1

MaG

а что в SMSDriver писать?
попробовал
SMSDrvConfig=/dev/ttyS0,57600,8,n,1
SMSDriver = libnxsms_generic.so

с терминала подключается и AT+CMGF=1 проходит
а вот смска не приходит =(

Alex Kirhenshtein

Ох, да, забыл. Там должен быть полный путь к .so файлу драйвера.

Пример:
SMSDriver=/opt/netxms-0.2.20/lib/libnxsms_generic.so

MaG

в логе:
SMS driver "/usr/local/netxms/lib/libnxsms_generic.so" initialization failed
путь правильный

Alex Kirhenshtein

Попробуйте запустить так, будут виден debug sms-драйвера:/usr/local/netxms/bin/netxmsd -D 4

MaG

пишет вот это:
[08-May-2008 20:19:16] DEBUG: Loading Generic SMS Driver (configuration: /dev/ttyS0,57600,8,n,1)
[08-May-2008 20:19:16] DEBUG: SMS init: port={/dev/ttyS0}, speed=57600, data=8, parity=NONE, stop=1
[08-May-2008 20:19:16] DEBUG: SMS: Unable to open serial port (/dev/ttyS0,57600,8,n,1)
[08-May-2008 20:19:16] SMS driver "/usr/local/netxms/lib/libnxsms_generic.so" initialization failed

сделал настройки порта по умолчанию - выдало:
[08-May-2008 20:26:10] DEBUG: Loading Generic SMS Driver (configuration: /dev/ttyS0)
[08-May-2008 20:26:10] DEBUG: SMS init: port={/dev/ttyS0}, speed=9600, data=8, parity=NONE, stop=1
[08-May-2008 20:26:10] DEBUG: SMS: port opened
[08-May-2008 20:26:11] DEBUG: SMS init: ATZ sent, got {}
[08-May-2008 20:26:12] DEBUG: SMS init: ATE0 sent, got {}
[08-May-2008 20:26:13] DEBUG: SMS init: ATI3 sent, got {}
[08-May-2008 20:26:13] GSM modem on /dev/ttyS0 initialized successfully. Hardware ID: "".

при попытке отослать смску:
[08-May-2008 20:27:37] DEBUG: SMS send: ATZ sent, got {}
[08-May-2008 20:27:38] DEBUG: SMS send: ATE0 sent, got {}
[08-May-2008 20:27:39] DEBUG: SMS send: AT+CMGF=1 sent, got {}
[08-May-2008 20:27:40] DEBUG: SMS send: AT+CMGS + message body sent, got {}
и ничего не приходит

Alex

#7
Интересно, а почему он библиотеку драйвера проинициализировал с ошибкой? Может в этом собака порылась? В плане того что может неправильно собралась она или в самой библиотеке какой-то баг?

Alex Kirhenshtein

Попробуйте заменить файл src/server/smsdrv/generic/main.cpp на версию из аттача и пересобрать.

Alex Kirhenshtein

Quote from: Alex on May 08, 2008, 08:36:01 PM
Интересно, а почему он библиотеку драйвера проинициализировал с ошибкой? Может в этом собака порылась? В плане того что может неправильно собралась она или в самой библиотеке какой-то баг?

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

MaG

теперь пишет следующее:
[09-May-2008 14:30:16] DEBUG: *actions* Sending SMS to +7910*******: "testtest"
[09-May-2008 14:30:16] DEBUG: SMS send: to {+7910*******}: {testtest}
[09-May-2008 14:30:17] DEBUG: SMS send: ATZ sent, got {}
[09-May-2008 14:30:18] DEBUG: SMS send: ATE0 sent, got {}
[09-May-2008 14:30:19] DEBUG: SMS send: AT+CMGF=1 sent, got {}
[09-May-2008 14:30:20] DEBUG: SMS send: AT+CMGS + message body sent, got {}
и попрежнему смс не приходит

Alex Kirhenshtein

Модем у вас Siemens MC35i?

Alex Kirhenshtein

Попробуйте выставить скорость порта в 9600.

Да, и еще. Покажите пожалуйста результат команды "stty < /dev/ttyS0" после запуска сервера (и инициализации модема).

MaG

Это не сименс и не модем - это стационарный gsm телефон откопанный из загашников руководства ;)
однако если на аппарат зайти даже на 9600 терминалкой и написать волшебные строчки - смски нормально отпраляются и получаются.
вот что с портом:
root@ccc:~# stty < /dev/ttyS0
speed 57600 baud; line = 0;
min = 1; time = 5;
ignbrk -brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

root@ccc:~# /etc/init.d/netxmsd start
Starting NetXMS server
NetXMS Database Manager Version 0.2.20

Configuration file OK
Checking database:
* Checking node objects...                                              [PASSED]
* Checking interface objects...                                         [PASSED]
* Checking network service objects...                                   [PASSED]
* Checking cluster objects...                                           [PASSED]
* Checking object properties...                                         [PASSED]
* Checking event processing policy...                                   [PASSED]
Database doesn't contain any errors
Database check completed

root@ccc:~# stty < /dev/ttyS0
speed 9600 baud; line = 0;
min = 1; time = 10;
ignbrk -brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

MaG

модем на скорости 57600 нормально работает с таким вот скриптиком:

#!/usr/bin/perl

use Device::Gsm;

my $number = @ARGV[0];
my $message = @ARGV[1];


my $gsm = new Device::Gsm( port => '/dev/ttyS0', log=>'syslog');
         if( $gsm->connect(baudrate => 57600) ) {
         } else {
             exit;
         }

my $lOk = $gsm->send_sms(
    content => $message,
    recipient => $number,
    class     => 'normal',
    mode      => 'pdu'
);


а с netxms выяснилась следующая фигня:
запускаю сервер, пишет:
GSM modem on /dev/ttyS0,57600,8,n,1 initialized successfully. Hardware ID: "".

а на порту:
root@ccc:~# stty < /dev/ttyS0
speed 38400 baud; line = 0;
min = 1; time = 10;
ignbrk -brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke