собственно вопрос: как сделать отправку смсок через gsm-модем (сотовый телефон)?
а именно какие модели поддерживаются? например такой вот http://www.onegsm.ru/show_good.php?idtov=1029
будет работать?
настройки должны быть типа таких? (при условии что это линух gsm-модем подключен к COM1)
SMSDriver = libnxsms_generic.so
SMSDrvConfig = /dev/ttyS0
			
			
			
				Да, этот сименс должен работать. В принципе, поддерживаются все  телефоны, которые позволяют отсылать сообщения 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
			
			
			
				а что в SMSDriver писать?
попробовал
SMSDrvConfig=/dev/ttyS0,57600,8,n,1
SMSDriver = libnxsms_generic.so
с терминала подключается и AT+CMGF=1 проходит
а вот смска не приходит =(
			
			
			
				Ох, да, забыл. Там должен быть полный путь к .so файлу драйвера.
Пример:
SMSDriver=/opt/netxms-0.2.20/lib/libnxsms_generic.so
			
			
				в логе:
SMS driver "/usr/local/netxms/lib/libnxsms_generic.so" initialization failed
путь правильный
			
			
			
				Попробуйте запустить так, будут виден debug sms-драйвера:/usr/local/netxms/bin/netxmsd -D 4
			
			
			
				пишет вот это:
[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 {}
и ничего не приходит
			
			
			
				Интересно, а почему он библиотеку драйвера проинициализировал с ошибкой? Может в этом собака порылась? В плане того что может неправильно собралась она или в самой библиотеке какой-то баг?
			
			
			
				Попробуйте заменить файл src/server/smsdrv/generic/main.cpp на версию из аттача и пересобрать.
			
			
			
				Quote from: Alex on May 08, 2008, 08:36:01 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 {}
и попрежнему смс не приходит
			
			
			
				Модем у вас Siemens MC35i?
			
			
			
				Попробуйте выставить скорость порта в 9600.
Да, и еще. Покажите пожалуйста результат команды "stty < /dev/ttyS0" после запуска сервера (и инициализации модема).
			
			
			
				Это не сименс и не модем - это стационарный 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
			
			
			
				модем на скорости 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
			
			
			
				Я постараюсь в ближайшее время переписать драйвер (я просмотрел код - он странный) и выложить патч.
			
			
			
				Quote from: Alex Kirhenshtein on May 26, 2008, 12:59:57 PM
Я постараюсь в ближайшее время переписать драйвер (я просмотрел код - он странный) и выложить патч.
Извините, ничего нового про драйвер не слышно? А то с этим пока не заборолся, всё инициализируется на 38400, а нужно на 115200.
			
 
			
			
				Скажите, удалось решить эту проблему? Наблюдаю похожую ситуацию.
Драйвер инициализируется, но странно:
[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
Что с этим можно сделать?
			
			
			
				Скажите, отправка SMS под Linux только у меня не работает? 
Путём правки src/server/smsdrv/generic/main.cpp я, конечно, добился результата, но просто интересно.