NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: MaG on May 07, 2008, 09:33:12 AM

Title: отправка SMS
Post by: MaG on May 07, 2008, 09:33:12 AM
собственно вопрос: как сделать отправку смсок через gsm-модем (сотовый телефон)?
а именно какие модели поддерживаются? например такой вот http://www.onegsm.ru/show_good.php?idtov=1029
будет работать?

настройки должны быть типа таких? (при условии что это линух gsm-модем подключен к COM1)
SMSDriver = libnxsms_generic.so
SMSDrvConfig = /dev/ttyS0
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 07, 2008, 03:16:16 PM
Да, этот сименс должен работать. В принципе, поддерживаются все  телефоны, которые позволяют отсылать сообщения 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
Title: Re: отправка SMS
Post by: MaG on May 07, 2008, 03:28:55 PM
а что в SMSDriver писать?
попробовал
SMSDrvConfig=/dev/ttyS0,57600,8,n,1
SMSDriver = libnxsms_generic.so

с терминала подключается и AT+CMGF=1 проходит
а вот смска не приходит =(
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 07, 2008, 05:55:30 PM
Ох, да, забыл. Там должен быть полный путь к .so файлу драйвера.

Пример:
SMSDriver=/opt/netxms-0.2.20/lib/libnxsms_generic.so
Title: Re: отправка SMS
Post by: MaG on May 08, 2008, 08:55:39 AM
в логе:
SMS driver "/usr/local/netxms/lib/libnxsms_generic.so" initialization failed
путь правильный
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 08, 2008, 03:24:29 PM
Попробуйте запустить так, будут виден debug sms-драйвера:/usr/local/netxms/bin/netxmsd -D 4
Title: Re: отправка SMS
Post by: MaG on May 08, 2008, 07:34:46 PM
пишет вот это:
[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 {}
и ничего не приходит
Title: Re: отправка SMS
Post by: Alex on May 08, 2008, 08:36:01 PM
Интересно, а почему он библиотеку драйвера проинициализировал с ошибкой? Может в этом собака порылась? В плане того что может неправильно собралась она или в самой библиотеке какой-то баг?
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 09, 2008, 03:20:17 AM
Попробуйте заменить файл src/server/smsdrv/generic/main.cpp на версию из аттача и пересобрать.
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 09, 2008, 03:22:40 AM
Quote from: Alex on May 08, 2008, 08:36:01 PM
Интересно, а почему он библиотеку драйвера проинициализировал с ошибкой? Может в этом собака порылась? В плане того что может неправильно собралась она или в самой библиотеке какой-то баг?

Драйвер при инициализации пытается открыть порт - и не смог (так таки был баг, причем этот код вроде как использовался - не стол же его писали?), как результат - сервер выгрузил драйвер.
Title: Re: отправка SMS
Post by: MaG on May 09, 2008, 01:36:56 PM
теперь пишет следующее:
[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 {}
и попрежнему смс не приходит
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 12, 2008, 04:06:00 PM
Модем у вас Siemens MC35i?
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 12, 2008, 05:45:37 PM
Попробуйте выставить скорость порта в 9600.

Да, и еще. Покажите пожалуйста результат команды "stty < /dev/ttyS0" после запуска сервера (и инициализации модема).
Title: Re: отправка SMS
Post by: MaG on May 12, 2008, 10:27:45 PM
Это не сименс и не модем - это стационарный 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
Title: Re: отправка SMS
Post by: MaG on May 21, 2008, 11:47:09 AM
модем на скорости 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
Title: Re: отправка SMS
Post by: Alex Kirhenshtein on May 26, 2008, 12:59:57 PM
Я постараюсь в ближайшее время переписать драйвер (я просмотрел код - он странный) и выложить патч.
Title: Re: отправка SMS
Post by: Mikhail V. Platonov on August 18, 2008, 05:03:07 PM
Quote from: Alex Kirhenshtein on May 26, 2008, 12:59:57 PM
Я постараюсь в ближайшее время переписать драйвер (я просмотрел код - он странный) и выложить патч.
Извините, ничего нового про драйвер не слышно? А то с этим пока не заборолся, всё инициализируется на 38400, а нужно на 115200.
Title: Re: отправка SMS
Post by: Weird on August 12, 2012, 05:02:14 PM
Скажите, удалось решить эту проблему? Наблюдаю похожую ситуацию.

Драйвер инициализируется, но странно:

[12-Aug-2012 23:28:34] Loading Generic SMS Driver (configuration: /dev/ttyS0,115200,8,n,1)
[12-Aug-2012 23:28:34] SMS init: port={/dev/ttyS0}, speed=115200, data=8, parity=NONE, stop=1
[12-Aug-2012 23:28:34] SMS: port opened
[12-Aug-2012 23:28:34] SMS init: ATZ sent, got {ATZ^M
OK}
[12-Aug-2012 23:28:34] SMS init: ATE0 sent, got {^M}
[12-Aug-2012 23:28:34] SMS init: ATI3 sent, got {
}
[12-Aug-2012 23:28:34] GSM modem on /dev/ttyS0,115200,8,n,1 initialized successfully. Hardware ID: "".


Параметры порта после запуска NetXMS:

mail:~# 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


Отправка сообщения тоже не выполняется корректно:

[12-Aug-2012 23:38:14] SMS send: to {+79167585224}: {test}
[12-Aug-2012 23:38:14] SMS send: ATZ sent, got {ATZ^M}
[12-Aug-2012 23:38:14] SMS send: ATE0 sent, got {^M}
[12-Aug-2012 23:38:14] SMS send: AT+CMGF=0 sent, got {
OK
}
[12-Aug-2012 23:38:14] SMS send: AT+CSCA? sent, got {A}
[12-Aug-2012 23:38:14] SMS send: AT+CMGS=18
sent
[12-Aug-2012 23:38:14] SMS about to send: 0011000C919761575822F40000AA04F4F29C0E^Z
sent
[12-Aug-2012 23:38:14] SMS send: AT+CMGS + message body sent, got {AT+CMGS=}


Отправка сообщения вручную (через minicom) проходит успешно как в text mode, так и в PDU mode.

ATZ
OK
AT+CMGF=0
OK
AT+CSCA?
+CSCA: "+79147991000",145

OK
AT+CMGS=18
> 0011000C919761575822F40000AA04F4F29C0E
+CMGS: 11

OK


Параметры порта после выхода из minicom уже другие:

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


Что с этим можно сделать?
Title: Re: отправка SMS
Post by: Weird on August 17, 2012, 08:54:12 PM
Скажите, отправка SMS под Linux только у меня не работает?
Путём правки src/server/smsdrv/generic/main.cpp я, конечно, добился результата, но просто интересно.