Управление модемом по SMS: настройка службы SMS AT RUN на модулях Telit

Управление модемом по SMS: настройка службы SMS AT RUN на модулях Telit

← Все разделы FAQ

Разделы FAQ:

Содержание

  1. Что такое SMS AT RUN и зачем он нужен
  2. Что нужно до начала настройки
  3. Быстрая настройка за 4 команды
  4. Шаг 1. Включение службы
  5. Шаг 2. Параметры выполнения
  6. Шаг 3. Белый список номеров
  7. Шаг 4. Сохранение настроек
  8. Как отправлять команды и читать ответы
  9. Безопасность: пароли и маски
  10. Ограничения и опасные команды
  11. Не работает: что проверить
  12. Частые вопросы
  13. Документация

1. Что такое SMS AT RUN и зачем он нужен

Модем управляется AT-командами. Обычно их подаёт контроллер или компьютер, подключённый к модему кабелем. Но оборудование часто стоит там, куда не приедешь за пять минут: шкаф на подстанции, счётчик в подвале, метеопост, банкомат в другом городе.

SMS AT RUN - встроенная служба модулей Telit, которая решает эту проблему. Модем начинает проверять входящие SMS: если сообщение пришло с разрешённого номера и его текст начинается с AT, модем выполняет этот текст как обычную AT-команду и отправляет ответ обратно тем же SMS.

Что это даёт на практике:

  • Диагностика без выезда. Уровень сигнала, оператор, состояние регистрации - одним сообщением.
  • Перезагрузка зависшего устройства. Когда GPRS/LTE-канал уже не отвечает, SMS чаще всего ещё проходит.
  • Изменение настроек. Смена APN, режима сети, управление выводами GPIO.
  • Работа без интернета. Служба не требует активного пакетного соединения, только регистрацию в сети и SMS.

Важно. Служба работает на самом модеме. Она не зависит от вашего контроллера, ПО и его прошивки - поэтому и остаётся доступной, когда основная логика устройства «легла».

Полное описание службы приведено в фирменной документации Telit - SMS AT RUN & TCP AT RUN Application Note. Синтаксис всех упомянутых ниже команд - в AT Commands Reference Guide. Обе книги приложены к статье, см. раздел «Документация».


2. Что нужно до начала настройки

  • Локальный доступ к модему по COM-порту (терминал: PuTTY, Tera Term, Telit AT Controller и т. п.). Первичная настройка выполняется только локально - по SMS её сделать нельзя, служба ещё выключена.
  • Установленная SIM-карта с активной услугой SMS и известным номером.
  • Номер телефона (или SIM-модема), с которого вы будете отправлять команды.
  • Положительный баланс на SIM в модеме - исходящие ответные SMS платные.

Учтите. Каждый ответ модема - это отдельное платное SMS, а длинный ответ разбивается на несколько сообщений. На тарифах с дорогими SMS активная диагностика может заметно расходовать баланс.


3. Быстрая настройка за 4 команды

Если нужен рабочий результат прямо сейчас, введите в терминале по порядку:

AT#SMSATRUNCFG=3,1,5             // параметры выполнения (значения по умолчанию)
AT#SMSATWL=0,1,0,"+79999999999"  // разрешить свой номер
AT#SMSATRUN=1                    // включить службу
AT&W                             // сохранить в энергонезависимую память

После каждой команды модем должен ответить OK. Ниже - что именно делает каждая из них.

4. Шаг 1. Включение службы

AT#SMSATRUN=1
Значение Описание
0 Служба выключена (состояние по умолчанию)
1 Служба включена: все входящие SMS проверяются как потенциальные AT-команды

Проверить текущее состояние можно запросом AT#SMSATRUN?.

Настройка хранится в энергонезависимой памяти модуля. После перезагрузки или отключения питания служба поднимается автоматически - включать её заново не нужно.

5. Шаг 2. Параметры выполнения

AT#SMSATRUNCFG=<instance>[,<urcmod>[,<timeout>]]

Значение по умолчанию, которое подходит подавляющему большинству применений:

AT#SMSATRUNCFG=3,1,5
Параметр Что задаёт Рекомендация
<instance> Номер внутреннего AT-интерфейса модема, который резервируется под выполнение команд из SMS 3 - оставьте как есть
<urcmod> Показывать ли в локальном терминале уведомление #SMSATRUN: <команда> в момент получения команды 1 - удобно при отладке
<timeout> Тайм-аут выполнения команды в минутах. Если команда не завершилась, служба разблокируется по его истечении 5 минут

Не делайте так. Не ставьте <instance>=1. Первый интерфейс - это обычно тот самый порт, через который вы работаете с модемом. Зарезервировав его под SMS AT RUN, вы потеряете локальное управление, и вернуть его можно будет только через мультиплексор CMUX или второй физический порт.

Точный диапазон допустимых значений <instance> зависит от модели модуля - сверьтесь с описанием команды #SMSATRUNCFG в AT Commands Reference Guide.

6. Шаг 3. Белый список номеров

Это ключевой шаг с точки зрения безопасности. Модем выполнит команду только если отправитель есть в белом списке. Пока список пуст, служба фактически не работает - все команды будут игнорироваться.

AT#SMSATWL=<action>,<index>[,<entryType>[,<string>]]

Добавить номер +79999999999 в первый слот:

AT#SMSATWL=0,1,0,"+79999999999"
Параметр Значения
<action> 0 - добавить; 1 - удалить; 2 - показать содержимое списка
<index> Номер слота, от 1 до 8
<entryType> 0 - телефонный номер; 1 - пароль (не более 2 паролей на модуль)
<string> Номер в кавычках, в международном формате. Допускается маска *

Маски номеров

Символ * заменяет любое окончание номера - удобно, когда команды могут приходить с нескольких SIM-карт службы эксплуатации.

Запись Кому разрешён доступ
"+79999999999" Только этому конкретному номеру
"+7916*" Всем номерам с кодом 916
"+7*" Любому российскому номеру

Осторожно с масками. Запись "+7*" открывает управление модемом с любого российского номера. Для оборудования в поле указывайте конкретные номера или максимально узкие маски, иначе достаточно случайного «AT»-сообщения или подмены номера, чтобы вмешаться в работу устройства.

Просмотр списка

AT#SMSATWL=2

Модем выведет занятые слоты - полезно, чтобы не затереть чужую запись.

7. Шаг 4. Сохранение настроек

AT&W

Записывает текущий профиль в энергонезависимую память. Выполняйте эту команду в самом конце, после всех изменений.

Проверка. Перезагрузите модем командой AT#REBOOT и убедитесь, что AT#SMSATRUN? по-прежнему возвращает 1, а AT#SMSATWL=2 показывает ваши номера.


8. Как отправлять команды и читать ответы

Правила формата сообщения

  • Текст SMS должен начинаться с AT - никаких приветствий, пробелов и переносов перед командой.
  • Отправитель должен быть в белом списке.
  • Сообщение не должно быть склеенным (concatenated) - одна команда = одно SMS. Ответ модема, наоборот, при необходимости разбивается на несколько сообщений.
  • Несколько команд подряд разделяются точкой с запятой: AT+CSQ;+COPS?

Пример

Отправляем на номер SIM-карты модема сообщение с текстом:

AT+CSQ

Через несколько секунд приходит ответное SMS:

+CSQ: 9,0

OK

Первое число - уровень сигнала (RSSI) в условных единицах от 0 до 31, второе - качество канала. Значение 99 означает, что сигнал не определён.

Команда без ответа

Если ответное SMS не нужно (например, вы просто перезагружаете устройство и хотите сэкономить на трафике), начните текст с HAT вместо AT:

HAT#REBOOT

Полезные команды для диагностики

Команда Что показывает / делает
AT+CSQ Уровень и качество сигнала
AT+COPS? Текущий оператор сети
AT+CREG? Состояние регистрации в сети
AT+CGMR Версия прошивки модуля
AT+CGSN IMEI устройства
AT#MONI Подробная информация о соте
AT#REBOOT Перезагрузка модема

Это лишь малая часть - полный перечень команд с описанием параметров и форматов ответа смотрите в AT Commands Reference Guide.


9. Безопасность: пароли и маски

Проверка по номеру отправителя защищает от случайных сообщений, но номер в SMS технически можно подменить. Для ответственных объектов Telit предусматривает второй режим - Digest ATRUN, в котором сообщение подписывается паролем (MD5-дайджест), а номер отправителя не проверяется вовсе.

AT#SMSATWL=0,2,1,"1234567890123456"   // пароль в слот 2
  • Пароль должен быть длиной 16 символов.
  • В модуле можно хранить не более двух паролей.
  • Такие сообщения формируются в двоичном (8-битном) виде - с обычного телефона их не отправить, нужна программа или SMS-шлюз, умеющий собирать дайджест.
  • Плюс режима: SIM-карту отправителя можно менять свободно, доступ привязан к паролю, а не к номеру.

Структура такого сообщения (заголовок, дайджест, кодирование) подробно расписана с примерами в SMS AT RUN & TCP AT RUN Application Note.

Практические правила. Не оставляйте широких масок вроде "+7*" на действующем оборудовании. Не публикуйте номер SIM-карты модема. Периодически проверяйте содержимое белого списка командой AT#SMSATWL=2 - особенно на устройствах, которые проходили сервис или меняли владельца.


10. Ограничения и опасные команды

Команды, которые не работают через SMS

Не выполняются команды, требующие ввода данных после приглашения >: AT+CMGS, AT+CMGW, AT#SSEND, AT#SEMAIL, AT#WSCRIPT и подобные - приглашение в SMS не передаётся.

Ответы очень длинных команд (семейство AT#CSURV) обрезаются: в цепочку помещается не более 15 SMS.

Команды, после которых связь с модемом теряется

Не отправляйте по SMS. Следующие команды необратимо блокируют механизм обмена SMS, и восстановить управление получится только физически на объекте:

  • AT+CFUN=2, AT+CFUN=4 - перевод модуля в неактивные режимы
  • AT+CMUX=0, AT#BND=3
  • AT+CGCLASS="CG", AT+CGSMS=0, AT+COPS=2
  • AT#SIMDET=0, ATQ1, ATQ2
  • Включение телефонной книги FDN, если ваш номер в неё не внесён

Команды AT#REBOOT и AT#SHDN работают, но ответное SMS до выключения модуля отправить не успевают - отсутствие ответа здесь нормально.

Задержка перед выполнением

Часть команд конфликтует с работающей SMS-службой и может завершиться ошибкой. Помогает принудительная пауза перед выполнением:

AT#ATRUNDELAY=1,5     // задержка 5 секунд для команд из SMS

Рекомендуемые значения: 10 секунд для AT+COPS=?, AT+CFUN, AT#SIMDET, AT#CSURV; 5 секунд для AT#SGACT, AT+CGACT, AT+CGATT.

Полные таблицы задержек и перечень ограничений приведены в разделе Delays and Notes документа SMS AT RUN & TCP AT RUN Application Note.


11. Не работает: что проверить

Симптом Вероятная причина и решение
Ответ не приходит вообще Проверьте баланс SIM в модеме и наличие регистрации в сети (AT+CREG?). Убедитесь, что служба включена: AT#SMSATRUN? должно вернуть 1.
SMS доходит, но остаётся во «Входящих» модема как обычное сообщение Отправитель не в белом списке, либо номер записан в другом формате. Всегда используйте международный формат с +: "+79999999999", а не "89999999999".
Настройки сбрасываются после перезагрузки Не выполнена AT&W.
Модем перестал отвечать на локальный порт после включения службы В AT#SMSATRUNCFG задан <instance>=1. Верните значение 3 через другой порт или CMUX.
Команда выполняется, но ответ пустой или обрезан Ответ длиннее допустимой цепочки SMS. Разбейте запрос на несколько коротких команд.
Одна конкретная команда стабильно даёт ошибку Конфликт с SMS-службой - задайте задержку через AT#ATRUNDELAY.
Команды с символами \ или ^ не проходят Этих символов нет в 7-битном алфавите GSM. Нужен 8-битный режим: AT#SMSMODE=1 и текст в шестнадцатеричном виде.

12. Частые вопросы

Нужен ли интернет или активный GPRS-канал?

Нет. Достаточно регистрации в сети и работающей услуги SMS. Именно поэтому SMS AT RUN остаётся рабочим инструментом, когда передача данных недоступна.

Сколько номеров можно добавить в белый список?

До 8 записей, из которых не более 2 могут быть паролями. Одна запись с маской покрывает целую группу номеров.

Останется ли служба включённой после отключения питания?

Да, если вы выполнили AT&W. Состояние службы и номер интерфейса хранятся в энергонезависимой памяти и восстанавливаются при старте.

Что происходит с командными SMS после выполнения?

Модем распознаёт их, выполняет и молча удаляет - память SMS не забивается.

Как полностью отключить службу?

Локально в терминале: AT#SMSATRUN=0, затем AT&W. По SMS отключать не рекомендуется - после этого удалённое управление станет недоступно.

Я отправил команду, но модем не ответил. Он завис?

Не обязательно. Сначала проверьте, нет ли команды в списке тех, что не возвращают ответ (AT#REBOOT, AT#SHDN) или требуют приглашения ввода. Затем отправьте заведомо безопасный запрос AT+CSQ. Если и он молчит - вероятно, проблема со связью, балансом или питанием устройства.


13. Документация

Набор поддерживаемых команд может отличаться в зависимости от модели модуля и версии прошивки - уточняйте в документации на вашу модель.


Если после проверки по разделу 11 проблема сохраняется, обратитесь в техническую поддержку - support@teleofis.ru - и приложите модель устройства, версию прошивки (AT+CGMR) и текст отправленной команды.