<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tamkovich.com: Телеком/VoIP блог &#187; SMS</title>
	<atom:link href="http://tamkovich.com/tag/sms/feed/" rel="self" type="application/rss+xml" />
	<link>http://tamkovich.com</link>
	<description>Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys</description>
	<lastBuildDate>Fri, 11 May 2012 04:00:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Приём и отправка SMS через GSM модем с помощью gnokii</title>
		<link>http://tamkovich.com/2010/05/sms-through-gsm-modem-with-gnokii/</link>
		<comments>http://tamkovich.com/2010/05/sms-through-gsm-modem-with-gnokii/#comments</comments>
		<pubDate>Wed, 05 May 2010 13:27:22 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[SMS]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1254</guid>
		<description><![CDATA[Некоторое время назад я писал как легко и просто можно отправлять и принимать SMS с помощью GSM модема и AT команд. Ещё проще делать это с помощью программы gnokii. Отправка SMS: echo 'ya sms-ko !' &#124; gnokii --sendsms +79260000000 Принять SMS чуть сложнее. На самом деле GSM модем принимает SMS самостоятельно, наша же задача заключаетя [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Некоторое время назад я писал как легко и просто можно <a href=http://tamkovich.com/2009/05/sending-sms-through-gsm-modem-rs232-usb/ >отправлять и принимать SMS с помощью GSM модема и AT команд</a>. Ещё проще делать это с помощью программы gnokii. Отправка SMS:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'ya sms-ko !'</span> <span style="color: #000000; font-weight: bold;">|</span> gnokii <span style="color: #660033;">--sendsms</span> +<span style="color: #000000;">79260000000</span></pre></div></div>

<p>Принять SMS чуть сложнее. На самом деле GSM модем принимает SMS самостоятельно, наша же задача заключаетя в том, что бы прочитать SMS из GSM терминала и удалить её. Перед тем как читать SMS, получим список папок с короткими сообщениями на нашем терминале:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--showsmsfolderstatus</span>
GNOKII Version 0.6.28
No. Name                                         Id <span style="color: #666666; font-style: italic;">#Msg</span>
========================================================
  <span style="color: #000000;">0</span> SIM card                                     SM    <span style="color: #000000;">1</span></pre></div></div>

</p>
<p><span id="more-1254"></span></p>
<p align=justify>
Gnokii показывает что доступна всего 1 папка с SMS под названием SM &#8211; это симкарта установленная в терминал. В терминале Teleofis RX201 собственные папки отсутствуют, однако если  вы используете в качестве терминала обычный мобильный телефон, то, скорее всего там будут и другие папки кроме сим-карты (SM). Последняя цифра в графе &#8211; количество сообщений в данной папке. Имя папки с короткими сообщениями необходимо для того, что бы прочитать сообщение из этой папки:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--getsms</span> SM <span style="color: #000000;">1</span>
GNOKII Version 0.6.28
<span style="color: #000000;">1</span>. Inbox Message <span style="color: #7a0874; font-weight: bold;">&#40;</span>Unread<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Date<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight: bold;">time</span>: 05<span style="color: #000000; font-weight: bold;">/</span>05<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2010</span> <span style="color: #000000;">13</span>:04:<span style="color: #000000;">18</span> +0400
Sender: +<span style="color: #000000;">79036967798</span> Msg Center: +<span style="color: #000000;">79262909090</span>
Text:
Test1</pre></div></div>

<p>SM &#8211; это тип памяти откуда мы пытаемся прочесть сообщение, 1 &#8211; номер ячейки. Сообщения помещаются в ячейки последовательно начиная с 1ой. (Unread) &#8211; флаг, указывающий на то, что мы читаем это сообщение впервые. При последующих попытка чтения этого сообщения флаг изменится на (Read). Sender &#8211; номер, с которого было отправлено данное сообщение. За раз можно читать несколько сообщений, для этого указываем диапазон ячеек (первую и последнюю):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--getsms</span> SM <span style="color: #000000;">1</span> <span style="color: #000000;">5</span>
GNOKII Version 0.6.28
<span style="color: #000000;">1</span>. Inbox Message <span style="color: #7a0874; font-weight: bold;">&#40;</span>Read<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Date<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight: bold;">time</span>: 05<span style="color: #000000; font-weight: bold;">/</span>05<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2010</span> <span style="color: #000000;">13</span>:04:<span style="color: #000000;">18</span> +0400
Sender: +<span style="color: #000000;">79036967798</span> Msg Center: +<span style="color: #000000;">79262909090</span>
Text:
Test1
<span style="color: #000000;">2</span>. Inbox Message <span style="color: #7a0874; font-weight: bold;">&#40;</span>Unread<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Date<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight: bold;">time</span>: 05<span style="color: #000000; font-weight: bold;">/</span>05<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2010</span> <span style="color: #000000;">13</span>:<span style="color: #000000;">33</span>:<span style="color: #000000;">28</span> +0400
Sender: +<span style="color: #000000;">79036967798</span> Msg Center: +<span style="color: #000000;">79262909090</span>
Text:
Xxx
GetSMS SM <span style="color: #000000;">3</span> failed<span style="color: #000000; font-weight: bold;">!</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>The given location is empty.<span style="color: #7a0874; font-weight: bold;">&#41;</span>
GetSMS SM <span style="color: #000000;">4</span> failed<span style="color: #000000; font-weight: bold;">!</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>The given location is empty.<span style="color: #7a0874; font-weight: bold;">&#41;</span>
GetSMS SM <span style="color: #000000;">5</span> failed<span style="color: #000000; font-weight: bold;">!</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>The given location is empty.<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Из этого примера мы видим, что ячейки 3-5 &#8211; пустые. Если ячейка не существует, gnokii выдаст другое сообщение:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">GetSMS SM <span style="color: #000000;">31</span> failed<span style="color: #000000; font-weight: bold;">!</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>The given memory location is invalid.<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>В сим карте от Мегафона всего 30 ячеек. Что бы принимать больше 30 сообщений &#8211; следует удалять прочитанные сообщения. Делается это с помощью команды:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--deletesms</span> SM <span style="color: #000000;">1</span>
GNOKII Version 0.6.28
Deleted SMS SM <span style="color: #000000;">1</span></pre></div></div>

<p>Эта команда, как вы уже догадались, удалит SMS из ячейки 1 на сим-карте установленной в GSM модеме. Удалять сообщения, как и читать их, можно целыми диапазонами:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--deletesms</span> SM <span style="color: #000000;">1</span> <span style="color: #000000;">5</span>
GNOKII Version 0.6.28
Deleted SMS SM <span style="color: #000000;">1</span>
Deleted SMS SM <span style="color: #000000;">2</span>
Deleted SMS SM <span style="color: #000000;">3</span>
Deleted SMS SM <span style="color: #000000;">4</span>
Deleted SMS SM <span style="color: #000000;">5</span></pre></div></div>

<p>Удаляет все сообщения из первых 5 ячеек сим карты. Удаление &laquo;пустой&raquo; ячейки не является ошибкой, по этому вы не увидите никаких сообщений об ошибках, не смотря на то, что ячейки 1, 3, 4 и 5 &#8211; пустые. Однако попытка удаления несуществующей ячейки &#8211; ошибкой является, о чём и сообщит gnokii:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--deletesms</span> SM <span style="color: #000000;">32</span>
GNOKII Version 0.6.28
DeleteSMS SM <span style="color: #000000;">32</span> failed<span style="color: #000000; font-weight: bold;">!</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>The given memory location is invalid.<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Вот и всё &#8211; периодически читаем сообщения и не забываем удалять прочитанные.
</p>
<p align=justify>
Возможно кому-то понравится режим непрерывного чтения SMS, который поддерживает gnokii. Работая в этом режиме, gnokii непрерывно опрашивает GSM модем и выводит в консоль информацию о принятых сообщениях:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gnokii <span style="color: #660033;">--smsreader</span>
GNOKII Version 0.6.28
Entered sms reader mode...
SMS received from number: <span style="color: #000000;">79036967798</span>
Got message <span style="color: #000000;">1</span>: Hello<span style="color: #000000; font-weight: bold;">!</span>
^CShutting down
Exiting sms reader mode...</pre></div></div>

</p>
<p align=justify>
Осталось лишь заметить, что для работы gnokii требуется конфигурационный файл $HOME/.gnokiirc &#8211; усли его нет, параметры берутся из файла /etc/gnokiirc. В этом файле указывается порт, к которому подключен GSM терминал, скорость, протокол работы с терминалом и т.д. Мой конфигурационный файл (для Teleofis RX201) выглядит вот так:</p>
<pre>
[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200
smsc_timeout = 10
</pre>
</p>
<p align=justify>
Для того что бы отправлять и принимать SMS с компьютера, не обязательно покупать GSM модем, для экспериментов подойдёт любой телефон который поддерживается gnokii. А список поддерживаемых моделей у gnokii &#8211; <a href=http://wiki.gnokii.org/index.php/Config >очень большой</a>.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftamkovich.com%2F2010%2F05%2Fsms-through-gsm-modem-with-gnokii%2F&amp;title=%D0%9F%D1%80%D0%B8%D1%91%D0%BC%20%D0%B8%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0%20SMS%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20GSM%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BC%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20gnokii" id="wpa2a_2"><img src="http://tamkovich.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/05/sms-through-gsm-modem-with-gnokii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Отправка SMS через GSM модем Siemens/Nokia (RS-232/USB)</title>
		<link>http://tamkovich.com/2009/05/sending-sms-through-gsm-modem-rs232-usb/</link>
		<comments>http://tamkovich.com/2009/05/sending-sms-through-gsm-modem-rs232-usb/#comments</comments>
		<pubDate>Mon, 04 May 2009 10:47:53 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[ITSP]]></category>
		<category><![CDATA[Железо]]></category>
		<category><![CDATA[Мониторинг]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[SMS]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=313</guid>
		<description><![CDATA[Невозможно переоценить важность оперативного мониторинга. Имея хорошую систему мониторинга, Австралийская компания, из предыдущей заметки, могла бы избежать счёта на 120 000 долларов. Для ITSP, помимо всплесков трафика по экзотическим направлениям, жизненно-важно отслеживать уровень качества предоставляемых клиентам услуг. В общем случае система мониторинга состоит из 3х частей: сбор данных, обработка и уведомления. К слову, Nagios использует [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Невозможно переоценить важность оперативного мониторинга. Имея хорошую систему мониторинга, Австралийская компания, из <a href="http://tamkovich.com/2009/04/asterisk-sip-security/">предыдущей заметки</a>, могла бы избежать счёта на 120 000 долларов. Для ITSP, помимо всплесков трафика по экзотическим направлениям, жизненно-важно отслеживать уровень качества предоставляемых клиентам услуг.
</p>
<p align=justify>
В общем случае система мониторинга состоит из 3х частей: сбор данных, обработка и уведомления. К слову, <a href="http://www.nagios.org/">Nagios</a> использует именно это концепцию, дополняя её разнообразными удобствами (визуальное отображение, расписания и т.д.). Уведомление по электронной почте, первое, что приходит в голову, однако оно не всегда оперативное. Самым оперативным уведомлением на сегодня является SMS сообщение. Отправку SMS сообщений можно организовать &laquo;на коленке&raquo; с помощью мобильного телефона подключенного к серверу.
</p>
<p><img border=0 src=/wp-content/uploads/2009/04/1.jpg /><br />
<span id="more-313"></span></p>
<p align=justify>
Большинство телефонов представляют собой модем, к которому можно подключиться через интерфейс RS-232 (COM порт). Основным отличием мобильного телефона от обычного модема является поддержка расширенных AT команд. Эти команды используются для управления функциями специфичными для мобильного телефона, например, приёмом и отправкой коротких сообщений (SMS).
</p>
<p align=justify>
Традиционно считается, что для отправки SMS с ПК лучше всего подходят мобильные телефоны Siemens. Для реализации мобильных уведомлений, я запасся несколькими моделями: парочкой ME45 и одним A50. Первая неудача с телефонами Siemens ждала меня на этапе подсоединения к ПК. Оказывается, не все дата-кабели одинаковые.
</p>
<p><img border=0 src=/wp-content/uploads/2009/04/2.jpg></p>
<p align=justify>
Вот, этот например, определялся телефоном как гарнитура, и имел большое количество распаянных контактов внутри. Однако соединение по RS-232 установить с таким кабелем невозможно. Конечно, нельзя исключать, что мне попался бракованный экземпляр, но, как говорится, осадок то остался.
</p>
<p><img border=0 src=/wp-content/uploads/2009/04/3.jpg></p>
<p align=justify>
А вот так выглядит правильный дата-кабель доработанный мной. GND, RX, TX &#8211; все что нужно для работы по RS-232. Однако после доработки кабеля всплыла вторая проблема с телефонами Siemens. Все аппараты, имевшиеся у меня, выключались вскоре после того как аккумулятор был полностью заряжен. Т.е. их невозможно было эксплуатировать постоянно подключенными к сети. Вероятно это такой способ защиты аккумуляторов. Списать это на случайность не получится при всём желании.
</p>
<p align=justify>
В принципе, на этом можно было и остановить некрофильские эксперименты с аппаратурой фирмы Siemens, однако совесть потребовала идти до конца. Как я уже писал выше, для приёма и отправки текстовых сообщений через GSM модем используется специальный набор AT команд. Подробней об этом наборе можно почитать <a href=http://www.developershome.com/sms/>здесь</a>. В общем случае отправка SMS выглядит вот так:<br />
<code><br />
# picocom /dev/ttyS0<br />
AT<br />
OK<br />
AT+CMGF=1<br />
OK<br />
AT+CMGS="+85291234567"<br />
It is easy to send text messages.^Z<br />
</code><br />
Если телефон поддерживает текстовый режим отправки SMS, или вот так:<br />
<code><br />
# picocom /dev/ttyS0<br />
AT<br />
OK<br />
AT+CMGS=42<br />
07915892000000F0<br />
01000B9158922143<br />
65F7000021493A28<br />
3D0795C3F33C88FE<br />
06CDCB6E32885EC6<br />
D341EDF27C1E3E97<br />
E72E^Z<br />
</code><br />
- если текстовый режим телефоном не поддерживается. Для активации текстового режима используется команда <code>AT+CMGF=1</code>, чтобы узнать, какие режимы поддерживаются Вашим телефоном, следует выполнить команду <code>AT+CMGF=?</code>.
</p>
<p align=justify>
Как вы уже догадались, третья проблема с телефонами Siemens заключалась в том, что ни один из имевшихся телефонов не поддерживал текстовый режим. Работая с PDU режимом Вы вынуждены генерировать сложную структуру содержащую в себе множество разнообразных параметров. Для работы с данной структурой Вам придётся либо изобрести велосипед и написать собственное API либо воспользоваться одной из существующих библиотек/программ (gsmlib, xgsmlib, Gammu и т.д.). Лучшим вариантом, на мой взгляд, является программа <a href=http://gnokii.org/>Gnokii</a>
</p>
<p align=justify>
Намучавшись с сименсами, я решил опробовать устройство, которое изначально было бы рассчитано на постоянное использование в паре с ПК. Выбор мой пал на GSM/GPRS модем <a href=http://www.gprs-modem.ru/TELEOFIS_RX201_USB_EDGE.htm>Teleofis RX201</a> (USB EDGE).
</p>
<p><img border=0 src=/wp-content/uploads/2009/04/4.jpg></p>
<p align=justify>
Приобрел я этот девайс за 3700 рублей, дороговато, по сравнению с рекламируемыми GPRS модемами от БиЛайн/Мегафон/МТС. По заверениям производителя (ООО КБ &laquo;Телеофис&raquo;), устройство произведено в России &#8211; мелочь, а приятно.
</p>
<p><img border=0 src=/wp-content/uploads/2009/04/5.jpg></p>
<p align=justify>
При подключении к ПК с linux, устройство определяется как &laquo;USB FTDI Serial Converter&raquo;. Соответствующий модуль (ftdi_sio) автоматически создаёт файл устройства /dev/ttyUSBN. Этот файл вы можете использовать для связи с модемом, с помощью вашего любимого терминала (например picocom). Хочу обратить внимание на то, что устройство RX201 по умолчанию рассчитано на скорость 460800 кб/сек. Драйвер, идущий с Fedora 10 (ftdi_sio: v1.4.3) такую скорость не поддерживает. Что бы понизить скорость на модеме, к нему необходимо подключиться из альтернативной ОС и выполнить команду <code>AT+IPR=115200&#038;W</code>.
</p>
<p align=justify>
Модем Teleofis RX201 отлично подружился с программой gnokii. Для отсылки sms с помощью gnokii сперва необходимо изменить конфигурационный файл /etc/gnokiirc. Вот пример рабочего конфига:<br />
<code><br />
[global]<br />
port = /dev/ttyUSB0<br />
model = AT<br />
initlength = default<br />
connection = serial<br />
use_locking = no<br />
serial_baudrate = 115200<br />
</code><br />
Обратите внимание на параметр use_locking, если Вы собираетесь рассылать SMS из Nagios, следует использовать use_locking = yes, что бы избежать конфликтов при рассылке уведомлений нескольким адресатам. Отправляется SMS очень просто:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'ya sms-ko !'</span> <span style="color: #000000; font-weight: bold;">|</span> gnokii <span style="color: #660033;">--sendsms</span> +<span style="color: #000000;">79260000000</span></pre></div></div>

<p>Вот и всё! SMS с текстом &#8216;ya sms-ko !&#8217; будет отправлена на номер +79260000000.
</p>
<p align=justify>
Модем <a href=http://www.gprs-modem.ru/TELEOFIS_RX201_USB_EDGE.htm>Teleofis RX201</a> работает уже почти месяц. В среднем в сутки отправляется около 10 сообщений. Никаких претензий и нареканий за этот небольшой срок не возникло, однако настораживает наличие модели Teleofis RX201-R единственное отличие которой &#8211; встроенный таймер перезагрузки.
</p>
<ul>
<li> <a href=http://www.nagios.org/>Nagios</a>
<li> <a href=http://www.developershome.com/sms/>Short Message Service / SMS Tutorial</a>
<li> <a href=http://gnokii.org/>Gnokii</a>
<li> <a href=http://www.gprs-modem.ru/>ООО КБ &laquo;Телеофис&raquo;</a>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftamkovich.com%2F2009%2F05%2Fsending-sms-through-gsm-modem-rs232-usb%2F&amp;title=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0%20SMS%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20GSM%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BC%20Siemens%2FNokia%20%28RS-232%2FUSB%29" id="wpa2a_4"><img src="http://tamkovich.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2009/05/sending-sms-through-gsm-modem-rs232-usb/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

