В качестве связующего звена любой GSM сигнализации с оператором охраны или владельцем охраняемого объекта является сотовый терминал, в качестве которого может использоваться любой модем, поддерживающий работу в сотовых сетях и даже обычный сотовый телефон. У подавляющего большинства сотовых терминалов управление их работой осуществляется с помощью АТ - команд. Эти команды можно разбить на несколько больших групп, каждая из которых отвечает за определённые функции терминала – установку и контроль различных параметров, голосовые вызовы, текстовые сообщения, передачу данных и т.д. Руководство по АТ - командам представляет собой многостраничную книгу, и описать их все в рамках небольшой стать практически невозможно. Да и особого смысла в этом нет. Мы рассмотрим только те команды, которые можно использовать для нашей охранной сигнализации
Для того, что бы изучение этих команд было более наглядным, можно опробовать их примение в "реальных условиях". Для этого нам понадобится любой GSM модем с СОМ портом, терминальная программа и естественно, компьютер. Сразу замечу, что несмотря на то, что для каждого GSM модема существует своя система АТ – команд, которые могут отличаться, тем не менее, в большинстве случаев они имеют аналогичное назначение. Внешний вид используемого GSM модема показан на рисунке 1.
Рис. 1. Внешний вид GSM модема
Подробное описание и принципиальная схема этого устройства находится здесь - http://lock.3dn.ru/index/modul_gsm/0-31. В качестве терминальной программы используется COM Port Toolkit - http://lock.3dn.ru/load/5-1-0-13 . С помощью терминальной программы вы сможете отправлять GSM терминалу описываемые здесь АТ - команды и просматривать принимаемые от него ответы. При отсутствии подобного GSM терминала, можно использовать сотовый телефон с встроеным GSM модемом (например, линейки телефонов С, М, S и некоторые А Siemens ). Ну, а если вы считаете, что возится с «железом» - это излишнее, и вам достаточно только теории, то просто почитайте предлагаемый материал, думаю, что он поможет вам понять принципы управления сотовым терминалом на примере охранной сигнализации и убедиться в том, что ничего сложного здесь абсолютно нет.
Итак, начнём. Сотовый терминал общается с микроконтроллером или компьютером по последовательному протоколу RS232. Следовательно, они должны работать на определённой скорости. Скорость работы последовательного порта устанавливается командой AT+IPR=9600. Цифровое значение после символа = может иметь следующие значения - 0, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200. 0 – это автовыбор скорости работы, и, как правило, это значение установлено по умолчанию.
AT+CPBS=«SM» - выбор телефонной книги, где хранятся все сохранённые вами номера, на который сигнализация может производить дозвон. Телефонная книга может быть сформирована как на SIM карте, так и в памяти GSM терминала. Рекомендую использовать книгу на SIM карте, как раз ей и соответствует значение «SM», приведённое в нашем примере.
ATD1234567;- сделать голосовой вызов по номеру 1234567. Синтаксис данной команды должен завершаться символом «точка с запятой». Команда применяется для номеров, которые не сохранены в телефонной книге.
Если же номер сохранён, например, на SIM карте, и SIM карта выбрана в качестве телефонной книги (обычно, так оно и есть по умолчанию), то для его вызова существует команда ATD>1;. Числовое значение определяет номер ячейки карты, где хранится вызываемый номер.
ATDL - позвонить по последнему набранному номеру.
На любую из команд группы ATD мы можем получить следующие ответы от GSM терминала: RING – ответ на каждую посылку вызова, BUSY – номер занят, NO ANSWER – номер не отвечает, NO CARRIER – неудачная попытка установить связь, NO DIALTONE – нет сигнала на линии, СONNECT – успешное соединение. Приведённые выше команды очень широко используются в охранных GSM сигнализациях. Используя их можно осуществлять управление исходящими вызовами, а приняв и прочитав ответы, микроконтроллер сигнализации, согласно заложенного алгоритма, принимает решение о дальнейших действиях – например, если первый номер, на который был проведён вызов занят, он начинает звонить на следующий и т.д.
ATA – ответить на входящий вызов. А для чего вообще сигнализации принимать входящие звонки, спросите вы? Дозвон на сигнализацию (а не с неё, как при тревоге) используется, если вы хотите, допустим, произвести аудиоконтроль помещения в любое время, а не только при тревоге. Кроме того, можно организовать дистанционное управление удалёнными объектами – позвонив на нужный номер и введя пароль доступа можно включить или выключить определённую нагрузку.
ATH0 – разорвать все соединения. Может принимать значения 0..5, указывающие какие виды связи нужно разорвать. Использование команды АТН (без числового значения) разорвёт текущее соединение и сбросит входящий звонок (если в данный момент идёт вызов). Для чего используется эта команда, думаю понятно.
AT+CLIP =1 – Эта команда включает режим CLI (Calling Line Identification – автоматический определитель номера). При входящем вызове, если активирована эта команда, GSM терминал выдает в ответ не просто сообщение RING, а добавляется строка, например - +CLIP: "+37529ХХХХХХХ",145,"",,"",0 . Рассмотрим более подробно эту строку более подробно. +375 – код страны (в нашем случае - Беларусь), 29 – префикс оператора сотовой связи, ХХХХХХХ- номер телефона, 145 - формат номера в сообщении (145 - международный формат, 129 – неизвестный формат), 0 - данные верны (1 - данные не дает оператор 2 - данные недоступны из за ограничений сети). Принимаемая строка может иметь и такой вид - +CLIP: "+37529ХХХХХХХ",145,"",," main ",0. «main» - имя в записной книге (если номер, с которого осуществляется вызов, сохранён в ней). Полезность этой команды очевидна – с её помощью можно сделать дозвон на GSM терминал только с определённых номеров. Например, для аудиоконтроля – зачем, что бы кто-то другой, кроме вас мог прослушивать охраняемое помещение? Или заменить такую функцию, как ввод пароля – ваша идентификация будет происходить по телефонному номеру. Хотя, тут есть и один недостаток – если у вас не окажется под рукой телефона, номер которого является разрешённым для подключения, то соответственно, не получится установить соединение. Поэтому, при разработке сигнализаций с функцией дозвона на неё, смотрите, что вам более удобно – идентификация по телефонному номеру или по паролю.
ATS0=0 – числовое значение определяет количество звонков до автоподнятия трубки. 0 – автоподнятие отключено. Команду можно использовать при введении функции доступа по паролю. Пример – допустим, после определённого количества вызовов происходит автоматический ответ и предлагается ввести пароль доступа. Если пароль верный – вы получаете возможность дальнейшей работы, если неправильный – происходит отключение от линии.
AT+GSMBUSY=1 - запрет всех входящих звонков (1 - запретить все входящие звонки 0 - разрешить входящие звонки). Возможно, иногда будет полезной. Например, запрет на соединение с GSM терминалом, когда сигнализация снята с охраны.
Теперь давайте рассмотрим основные команды управления текстовыми сообщениями - SMS. В первой части нашего обзора уже отмечалось, что текстовые сообщения, ввиду того, что иногда они имеют свойство опаздывать, предпочтительнее использовать в охранной сигнализации в качестве информационных по общей работе системы или дублирующих голосовой вызов при тревоге. Например, с помощью SMS можно оповещать о наличии/отсутствии основного (сетевого питания), попытках подбора электронного ключа (если он используется), уменьшении до критического значения уровня сигнала GSM сети и т.д.
SMS сообщения, как и номера голосовых вызовов, могут храниться в разных областях памяти GSM терминала, а так же на SIM-карте. SMS сообщение, сохраняется в любой области памяти с номером (может быть несколько номеров), на который будет отправлено в случае необходимости. По умолчанию все входящие сообщения сохраняются на SIM-карту. При поступлении сообщения, терминал возвращает сообщение: +CMTI: «SM»,1, где SM – область памяти – SIM-карта, 1 - номер полученного сообщения.
AT+CMGF =1 - формат сообщений. 0 - это режим PDU, управление кодом команды. Вывод сообщения в HEX коде. этот режим установлен по умолчанию, 1 - текстовый режим. Команды текстовые. Вывод сообщения в текстовом виде.
AT+CMGR=1,0 - команда чтение определённого текстового сообщения. 1 – это номер SMS , 0 - обычный режим (1 - не изменять статус).
AT+CMGD=1,0 команда удаления SMS. 1 - номер сообщения, 0 режим удаления (0 - удаление указанного сообщения, 1 - удаление только всех прочитанных сообщений, 2 - удаление прочитанных и отправленных сообщений, 3 - удаление всех прочитанных, отправленных и не отправленных сообщений, 4 - удаление всех сообщений).
AT+CMSS=1. Наиболее часто применяемая в нашем случае команда. Она оправляет сохранённое на SIM – карте сообщение. Числовое значение обозначает номер ячейки памяти, где храниться сообщение
AT+CMGS=«xxxxxxxxx» - отправка SMS на любой номер. Пользы применения такой команды в сигнализации не вижу, здесь она приведена только для сведения.
И в заключение, несколько дополнительных АТ – команд, которые могут найти применение в охранной сигнализации.
AT+CSQ – уровень сигнала сети. В ответ модем возвращает два числа, например, +CSQ: 10,0. 10, - уровень сигнала. Он может принимать значение 0..31 или 99. Чем больше это значение, тем выше уровень. 99 – отсутствие сигнала. Данная команда для охранной сигнализации может оказаться очень полезной. Дело в том, что злоумышленники могут применять подавители сети («глушилки GSM») и это позволит отследить данные действия – при падении сигнала сразу отправить соответствующее сообщение. Возможно, не всегда это получится, если сигнал будет подавлен мгновенно, но ввести такую функцию в сигнализацию очень желательно.
AT+CMIC=0,15 – команда для установки чувствительности микрофона. Чувствительность определяется числовым значением, которое находится после символа =. В сигнализациях используется очень часто – для аудиоконтроля охраняемого помещения. Экспериментируя с этим значением, можно добиться слышимости малейших шорохов.
ATD#100#; Эта команда относится к так называемым USSD запросам. С её помощью можно посмотреть состояние счёта телефонного номера. Функция очень нужная и полезная, т.к. при отсутствии денег на счёту, GSM терминал попросту не сможет работать. Числовое значение – это номер USSD запроса. У различных операторов сотовой связи этот номер может отличаться. При использовании этой команды возвращается сообщение типа +CUSD: 0, «Vash balans 500 rub».
AT+CPAS - текущее состояние телефона. Возвращает ответ +CPAS: 0. Числовое значение обозначает следующее: 0 – готовность к работе, 2 - ответ и выполнение команд не гарантируется, 3 - идет входящий звонок, 4 установлено голосовое соединение. Команда может пригодится во избежание различных коллизий - проверки состояния терминала перед началом формирования вызова или отправки текстового сообщения.
Рассмотренные нами АТ – команды являются лишь очень малой частью от общего количества и назначения существующих. Но для построения с их использованием алгоритма работы простой охранной GSM сигнализации более чем достаточно. Всю дополнительную информацию по АТ – командам можно найти в файловом архиве этого сайта в разделе Справочный материал.