API SR-Organizer-Smart
Взаимодействие с SIM Roulette
Термины и определения
Управляющие команды SIM Roulette SR-Organizer
Модемы
SMS
Экран
Звук
Переменные
Файлы
Настройки
Управляющие команды
Мониторинг
Макросы
Планировщик (CRON)
Интеграция SIM Roulette в ваш проект
Варианты взаимодействия с SIM Roulette
1). Прямой ввод команды через терминал WEB-интерфейса SIM Roulette.
2). Формирование через WEB-интерфейс SIM Roulette списков команд (Макросов) и последующее их выполнение устройством.
3). GET или POST запрос к SIM Roulette вида http://XXX.XXX.XXX.XXX/port?token=$token&command=$command
XXX.XXX.XXX.XXX — IP-адрес SIM Roulette
$token — кодовое слово заданное через WEB-интерфейс агрегатора
$command — команда
Важно! "." (точка) перед командой сообщает агрегатору, что управляющее устройство ожидает ответ на команду, в противном случае команда будет выполнена, но ответ не будет помещен в исходящий поток.
В случае если не нужен развернутый ответ, а достаточно вывести результат — перед командой следует поставить "@".
4). Обращение SIM Roulette к серверу (вашему WEB-сайту) с GET-запросом по указанному в WEB-интерфейсе адресу.
Например, http://site.ru/sr/io.php
SIM Roulette передает GET-параметры:
data — результат выполнения команды
и получает с сервера следующую команду в виде текста:
{data}command
Важно! {data} — необходимый префикс для того, чтобы Sim Roulette понимал что сервер возвращает корректные данные.
Ответ SIM Roulette возвращает в формате JSON. Пример: {"result":"[RESULT]"}
Результат выполнения команды (для большинства команд 1-удача, NULL-неудача), также, в зависимости от команды, это может быть число либо текст. 0 всегда кодируется как NULL.
Ответы приходят асинхронно. Кроме ответов на команды с префиксом "." в выходной поток отправляются сообщения о текущем статусе модемов и событиях происходящих на системных устройствах агрегатора (модемах, кнопках и т.д.).
запрос: http://192.168.1.2/port?token=12345&command=.version
Важно! При GET-запросе параметр command в URL должен быть закодирован на стороне клиента функцией urlencode.
ответ: {"result":"1.69"}результат_выполнения_запроса
Несколько команд можно объединить через &&. В этом случае они будут выполнены последовательно.
запрос: http://192.168.1.2/port?token=12345&command=.version%26%26.set.dev.ip
Обратите внимание! Так как параметр command закодирован urlencode здесь && превратились в %26%26.
ответы:
{"result":"1.69"}результат_выполнения_1_команды
{"result":"192.168.1.2"}результат_выполнения_2_команды
Для удобства навигации в ответах агрегатора любую команду можно подписать, добавив параметр "sign":"[SIGNATURE]", в этом случае в ответе также будет присутсвовать указанная подпись.
запрос: http://192.168.1.2/port?token=12345&command=.version:{"sign":"test"}
ответ: {"result":"1.69","sign":"test"}результат_выполнения_запроса
Любое из значений в ответе агрегатор может вывести как результат, для этого в команду следует добавить параметр "result":"[KEY]".
запрос: http://192.168.1.2/port?token=12345&command=.version:{"sign":"test","result":"sign"}
ответ: {"result":"test"}результат_выполнения_запроса
Термины и определения
Параметры команды могут передаваться по очереди через зяпятую либо в формате JSON
Пример:
sms.send:number(1),sms(2)[,modem=1(3)]
Передача параметров по очереди, через запятую (1, 2, 3), параметр в [скобках] необязательный: sms.send:+79001234567,Текст SMS
Передача параметров в JSON (number, sms, modem), параметр в [скобках] необязательный: sms.send:{"number":"+79001234567","sms":"Текст SMS","modem":"1"}
Ответы SIM Roulette отдает асинхронно.
Буфер ответов SIM Roulette динамический, может содержать результаты десятков команд.
0 всегда кодируется как NULL.
Большинство команд в result возвращают: 1 — выполнено, NULL — ошибка.
Далее по тексту:
D — число, пример: 33
W — слово, символьные данные, пример: Текст
X — числовые либо символьные данные
(D) — порядковый номер параметра, пример: fs.rename:source(1),target(2)
[W] — необязательный параметр, пример: sms.send:number(1),sms(2)[,modem(3)]
=X — значение необязательного параметра по умолчанию, пример: ussd:number(1)[,modem(2)=1]
{D...D} — допустимый диапазон значений, пример: {-23...23}
Управляющие команды SIM Roulette SR-Organizer
МОДЕМЫ
modem.on — включение модема(ов)
пример: modem.on ответ: 1всегда
modem.off — выключение модема(ов)
пример: modem.off ответ: 1всегда
modem[D].status — принудительный вывод статуса первого либо указанного модема (D)
Обратите внимание! При смене статуса модема агрегатор автоматически выводит статус в выходной поток.
пример: modem2.status ответ: 1питание включено 0питание выключено
modem[D].card:X — выбор карты
1-16 или 1-24 в аппаратах с одним модемом
A1-C8 модемом обслуживающим соответствующий диапазон карт
1-8 указанным модемом (D) в аппаратах с несколькими модемами
примеры:
modem.card:16 ответ: 1выполнено 0ошибка
modem.card:A8 ответ: 1выполнено 0ошибка
modem3.card:7 ответ: 1выполнено 0ошибка
call:number(1)[,modem(2)=1] — Исходящий вызов с текущей SIM-карты указанного модема
примеры:
call:+79001234567 ответ:1выполнено 0ошибка
call:{"number":"*102#","modem":"2"} ответ:1выполнено 0ошибка
ussd:number(1)[,modem(2)=1] — USSD-запрос с текущей SIM-карты указанного модема
примеры:
ussd:*102# ответ:1выполнено 0ошибка
ussd:{"number":"*102#","modem":"2"} ответ:1выполнено 0ошибка
command:action(1)[,modem(2)=1] — предопределенное действие (answer, hangup)
примеры:
command:answer,3 — ответить на входящий вызов 3-го модема, ответ:1выполнено 0ошибка
command:{"answer":"hangup","modem":"2"} — "положить трубку" 2-го модема, ответ: 1выполнено 0ошибка
modem[D].send:AT… — прямая передача команды первому либо указанному модему (D)
Обратите внимание! Таким образом модему передаются стандартные AT-команды
пример: modem2.send:ATD+79001234567; ответ: 1всегда
modem.download:modem(1),url(2),file(3)[,size(4)=10240] — скачивание файла с WEB-сайта и загрузка в память модема по умолчанию
пример: modem>download:sim-roulette.com/download/voice.amr;C:\User\voice.amr; ответ: 1выполнено 0ошибка
SMS
sms.send:number(1),sms(2)[,modem(3)=1] — отправка SMS с текущей SIM-карты указанного модема
примеры:
sms.send:+79001234567,Текст SMS,3 ответ:1выполнено 0ошибка
sms.send:{"number":"+79001234567","sms":"Текст SMS"} ответ:1выполнено 0ошибка
ЭКРАН
При наличии 7-сегментного индикатора
set.display:[light_min{1...100}][,light_max(1...100}] — установка минимальной и максимальной яркости индикатора (переход между режимами яркости происходит автоматически)
примеры:
set.display:{"light_min":"10"}, ответ: 1выполнено 0ошибка
set.display:{"light_min":"10","light_min":"80"}, ответ: 1выполнено 0ошибка
display:W{ABCDEFGH} — вывод символа на индикатор (обозначение сегментов на рисунке)
примеры:
display:BC для вывода "1", ответ:1выполнено 0ошибка
display.clear — очистить индикатор
пример: display.clear ответ: 1всегда
При подключенном OLED-дисплее
display.clear — очистить дисплей
пример: display.clear ответ: 1всегда
display:W — вывод на дисплей текста и специальных символов
W — параметры разделенные символами "::":
2 — выравнивание по левому краю (L), по центру (С), по правому краю (R)
3 — позиция по оси X (0 — 127)
4 — позиция по оси Y (0 — 63)
5 — текст (в зависимости от выбранного языка интерфейса можно показывать пользователю {английскую~русскую} версию)
(6) — необязательный параметр — разделитель "|" после которого можно дописать вывод второй, третьей и т.д. строк
примеры:
display:10::C::64::30::Текст|16::C::64::45::Ещё текст
display:10::C::64::35::{English text~Русский текст}! — в зависимости от выбранного языка будет использован соответсвующий вариант
ответ: 1всегда
display.com:W — включение/выключение инверсии дисплея
W — параметр:
При подключенном Модуле Управления с LCD-экраном
display.clear:[D{1...4}] — очистить экран полностью или только указанную строку
примеры:
display.clear, ответ: 1всегда
display.clear:1, ответ: 1всегда
display.backlight:D — включение/выключение подсветки экрана
примеры:
display.backlight:1 — включить подсветку, ответ: 1всегда
display.backlight:0 — выключить подсветку, ответ: 1всегда
display.position:_x(1){1...20},_y(2){1...4} — выбрать позицию на экране с которой начнется вывод текста (4 строки по 20 символов)
примеры:
display.position:1,1, ответ: 1,1подтверждение введенных данных
display.position:{"_x":"20","_y":"4"}, ответ:20,4подтверждение введенных данных
display.cursor:D — включение/выключение курсора
примеры:
display.cursor:1 — включить курсор, ответ: 1всегда
display.cursor:0 — выключить курсор, ответ: 1всегда
display.print:W — вывод на дисплей текста (начиная с указанной позиции)
пример: display.print:Text, ответ: 1выполнено 0ошибка
ЗВУК
audio:W{1...3} — коммутатор аудио-гарнитуры (для агрегаторов с несколькими модемами)
Примечание: при осуществлении вызова либо ответе на вызов коммутация происходит автоматически.
пример: audio:2 ответ: 2подтверждение ввода
Гарнитура будет подключена ко 2 модему
При подключенном Модуле Управления с LCD-экраном
sound:beep — короткий отрывистый звук
пример: sound:beep ответ: 1всегда
sound:error — продолжительный звук
пример: sound:error ответ: 1всегда
БУФЕР
Текстовый буфер устройства — мощный инструмент для анализа входных данных, формирования выходных данных и команд.
buffer.clear — очистка буфера
пример: buffer.clear ответ: 1всегда
buffer.view — вывод содержимого буфера в выходной поток, для формирования таблиц можно использовать bbcode: [table][tr][th][thc[thr][td][tdc][tdr]
пример: buffer.view ответ: ...содержимое буфера 0буфер пуст
buffer.raw — вывод содержимого буфера в выходной поток без обработки bbcode
пример: buffer.raw ответ: ...содержимое буфера 0буфер пуст
buffer.display — вывод содержимого буфера на дисплей устройства (в зависимости от объема данных устройство само настроит размер шрифта и, если нужно, постраничный вывод)
пример: buffer.display ответ: 1всегда
buffer.write:W — ввод новых данных в буфер
пример: buffer.write:Значение A: (a) ответ: 1всегда
Важно! Для подстановки значения переменной используется конструкция (a), (Z) и т.д., для подстановки символа (32), (147) и т.д.
buffer.prefix:W — ввод данных, которые дополнят текущий текст спереди
пример: buffer.prefix:Начало строки(32) ответ: 1всегда
Важно! Для подстановки значения переменной используется конструкция (a), (Z) и т.д., для подстановки символа (32), (147) и т.д.
buffer.postfix:W — ввод данных, которые дополнят текущий текст сзади
пример: buffer.postfix: конец строки ответ: 1всегда
Важно! Для подстановки значения переменной используется конструкция (a), (Z) и т.д., для подстановки символа (32), (147) и т.д.
buffer.push — сохранение содержимого буфера в стеке (памяти устройства)
пример: buffer.push ответ: 1в буфере есть данные 0буфер пуст
buffer.pop — восстановление содержимого буфера из стека
пример: buffer.pop ответ: 1в буфере есть данные 0буфер пуст
buffer.swap — обмен местами содержимого буфера и сохраненной в стеке копии буфера
пример: buffer.swap ответ: 1в буфере есть данные 0буфер пуст
buffer.merge[=W] — склеивание буфера и сохраненной копии буфера из стека (результат остается в буфере)
W — необязательный параметр, текст, который будет добавлен между склеиваемыми частями
пример: buffer.merge(13)(10) ответ: 1всегда
Важно! Для подстановки значения переменной используется конструкция (a), (Z) и т.д., для подстановки символа (32), (147) и т.д.
buffer.time — дополнение буфера текущим временем (HH:MM)
пример: buffer.time ответ: 1всегда
buffer.date — дополние буфера текущей датой (DD.MM.YYYY)
пример: buffer.date ответ: 1всегда
buffer.timestamp — копирование в буфер внутреннего штампа времени (в секундах от 01.01.2000)
пример: buffer.timestamp ответ: 1всегда
buffer.event.dev — копирование в буфер устройства-инициатора события, которое вызвало макрос
пример: buffer.event.dev ответ: 1устройство
buffer.event.result — копирование в буфер результата события, которое вызвало макрос
пример: buffer.event.result ответ: 1результат
buffer.file.save:file(1) — сохранение содержимого буфера в файл
file(1) — путь и имя файла в который следует сохранить содержимое буфера
пример: buffer.file.save:/buffer.txt ответ: 1выполнено 0ошибка
buffer.file.append:file(1) — дописывание в файл содержимого буфера
file(1) — путь и имя файла в который следует дописать содержимое буфера
пример: buffer.file.append:/buffer.txt ответ: 1выполнено 0ошибка
buffer.file.load:file(1)[,line(2){-1...1000000}] — чтение содержимого файла в буфер, если указан номер строки отличный от -1 — в буфер будет помещена только эта строка
примеры:
buffer.file.load:/buffer.txt ответ: 1в буфере есть данные 0буфер пуст
buffer.file.load:/buffer.txt,3 ответ: 1в буфере есть данные 0буфер пуст
buffer.file.load:{"file":"/buffer.txt","line":"10"}
buffer.find:W — поиск в буфере комбинации символов, замена содержимого буфера на найденный фрагмент
W — поисковая строка:
* — заменяет любое количество произвольных символов, пример: buffer.find:баланс* — если в строке буфера содержится слово "баланс", в буфере останется текст от слова "баланс" до конца строки, ответ: 1найдена искомая строка 0совпадений нет
[dD] — поиск числа с заданным (D) количеством цифр, пример: buffer.find:[d10] ответ: 1найдено 10-значное число 0ничего не найдено — если число найдено, то в буфере останется только оно
[sD] — выборка заданного (D) количества символов сначала строки или (-D) с конца (русские символы занимают 2 байта), пример: buffer.find:[s10] — в буфере останутся только первые 10 символов, ответ: 1выполнено 0не выполнено
buffer.test:W — проверка наличия в буфере комбинации символов
W — поисковая строка:
* — заменяет любое количество произвольных символов, пример: buffer.test:баланс* ответ: 1найдена искомая строка 0совпадений нет
[dD] — проверка наличия числа с заданным (D) количеством цифр, пример: buffer.test:[d10] ответ: 1найдено 10-значное число 0ничего не найдено
[sD] — выборка заданного (D) количества символов сначала строки или (-D) с конца (русские символы занимают 2 байта), пример: buffer.cut:[s10] — в буфере останутся только первые 10 символов, ответ: 1в наличии заданное количество символов 0заданное количество символов не найдено
buffer.cut:W — поиск в буфере комбинации символов, удаление из содержимого буфера найденного фрагмента
W — поисковая строка:
* — заменяет любое количество произвольных символов, пример: buffer.cut:руб.* — если в строке буфера содержится слово "руб." оно и все что за ним будет удалено, ответ: 1искомая строка найдено и вырезана 0совпадений нет
[dD] — поиск числа с заданным (D) количеством цифр, пример: buffer.cut:[d10] ответ: 1найдено и вырезано 10-значное число 0ничего не найдено — если число найдено, то оно вырезается
[sD] — удаление заданного (D) количества символов сначала строки или (-D) с конца (русские символы занимают 2 байта), пример: buffer.cut:[s10] — из буфера будут вырезаны первые 10 символов, ответ: 1вырезано заданное количество символов 0заданное количество символов не найдено
ПЕРЕМЕННЫЕ
var:W[=D|+D|-D|*D|\D|==D|<D|>D] — работа с переменной
W — имя численной переменной (доступно 26 переменных от a до z)
примеры: var:a ответ: 123значение переменной a
=D — присвоение значения переменной
примеры: var:a=123 ответ: 123присвоенное значение переменной a, var:a=b ответ: присвоенное значение переменной a
+D — cложение
примеры: var:a+1 ответ: новое значение переменной a, var:a+b ответ: новое значение переменной a
-D — вычитание
примеры: var:a-2 ответ: новое значение переменной a, var:a-b ответ: новое значение переменной a
*D — умножение
примеры: var:a*3 ответ: новое значение переменной a, var:a*b ответ: новое значение переменной a
/D — деление
примеры: var:a/4 ответ: новое значение переменной a, var:a/b ответ: новое значение переменной a
==D — проверка тождественности
пример: var:a==33 ответ: 1выражение тождественно 0выражение не тождественно, var:a==b ответ: 1выражение тождественно 0выражение не тождественно
<D — проверка тождественности
примеры: var:a<33 ответ: 1выражение тождественно 0выражение не тождественно, var:a<b ответ: 1выражение тождественно 0выражение не тождественно
>D — проверка тождественности
примеры: var:a>33 ответ: 1выражение тождественно 0выражение не тождественно, var:a>b ответ: 1выражение тождественно 0выражение не тождественно
W — имя текстовой переменной (доступно 3 переменных str1, str2, str3)
пример: var:buffer=str1 ответ: ...содержимое переменной 0переменная пуста
var:str2=buffer — копирование в переменную str2 содержимого буфера
пример: var:str2=buffer ответ: 1всегда
var:buffer=str3 — копирование в буфер содержимого str3
пример: var:buffer=str3 ответ: 1всегда
Важно! Чтобы вставить значение переменной в буфер используйте конструкцию (a), (b) ... (z).
ФАЙЛЫ
Файловая система всех агрегаторов SIM Roulette использует внутреннюю FLASH-память контроллера. Объем доступного пространства, в зависимости от модели, от 1,5 до 2,5 Мегабайт.
В некоторых комплектациях SR Nano дополнительно может быть задействована внешняя карта памяти microSD.
fs.space:[data(1)] — просмотр информации о состоянии памяти (free/used/total)
примеры:
fs.space:free или fs.space ответ: 1000000размер свободной памяти в байтах
fs.space:used ответ: 2000000размер занятого пространства в байтах
fs.space:total ответ: 3000000всего памяти в байтах
fs.list:W — просмотр содержимого папки
W — имя папки
пример: fs.list:/ ответ: ❰ СПИСОК ФАЙЛОВ ❱ 0ошибка
fs.view:W — просмотр файла
W — имя файла
пример: fs.view:/terminal.dat ответ: ❱❱ ПЕРЕХОД В РЕЖИМ ПРОСМОТРА 0ошибка
fs.edit:W — редактирование файла
W — имя файла
пример: fs.edit:/terminal.dat ответ: ❱❱ ПЕРЕХОД В РЕДАКТОР 0ошибка
fs.delete:W — удаление файла
W — имя файла
пример: fs.remove:/test/file.txt ответ: 1выполнено 0ошибка
fs.rename:source(1),target(2) — переименование файла
source(1) — текущий путь и имя файла
target(2) — новый путь и имя файла
примеры: fs.rename:/terminal.dat,/test/terminal.dat
fs.rename:{"source":"/terminal.dat","target":"/test/terminal.dat"}
ответ: 1выполнено 0ошибка
fs.copy:source(1),target(2) — копирование файла
source(1) — имя файла-источника
target(2) — имя файла-приемника
примеры: fs.copy:/terminal.dat,/test/terminal.dat
fs.copy:{"source":"/terminal.dat","target":"/test/terminal.dat"}
ответ: 1выполнено 0ошибка
fs.download:url(1),file(2)[,size=30000] — скачивание файла с WEB-сайта (только HTTP)
url(1) — URL файла
file(2) — путь и имя сохраняемого файла
size(3) — максимальный размер скачиваемого файла, при большом размере возможны сбои при сохранении файла (необязательный параметр)
примеры:
fs.download:sim-roulette.com/download/test,/test/test ответ: 1выполнено 0ошибка
fs.download:{"url":"site.ru?get_request=123","file":"/test","size":"50000"} ответ: 1выполнено 0ошибка
fs.upload:url(1),file(2)[,newFileName(3)] — закачивание файла на WEB-сайт (только HTTP)
url(1) — URL сервера, на который планируем закачивать файл
file(2) — путь и имя файла для загрузки
newFileName(3) — имя загружаемого файла на сервере (необязательный параметр)
примеры:
fs.upload:sim-roulette.com/upload/test,/test/test ответ: 1выполнено 0ошибка
fs.upload:{"url":"site.ru?get_request=123","file":"/test","newFileName":"my_file"} ответ: 1выполнено 0ошибка
Важно! Механизм загрузки реализован на нашем сайте, в личном кабинете. На своем сервере вы можете воспользоваться готовым PHP-скриптом.
НАСТРОЙКИ
version — получение версии микропрограммы агрегатора
пример:
version ответ:1.00версия агрегатора
set.dev.serial — получение серийного номера агрегатора
пример:
set.dev.serial ответ:DDDDDDDDDDDDDDDDDDсерийный номер агрегатора
set.dev.rev — получение ревизии (HARD-версии) агрегатора
пример:
set.dev.rev ответ:5ревизия агрегатора
set.dev.ip — получение IP-адреса агрегатора
пример:
set.dev.ip ответ:192.168.1.2IP-адрес агрегатора
set.carrier_timer:[data(1){0...3600}] — таймер простоя (в секундах) без внешних обращений (Сервер, Терминал) к агрегатору, по окончании периода SIM Roulette переподключается к сети (0 — отключен)
примеры:
set.carrier_time ответ:3600текущее значение
set.carrier_time:60 ответ:60установленный таймер
set.server:[url(1)][,frequency(2){1000...100000}] — получение и установка параметров подключения к серверу (URL и частота обращений)
примеры:
set.server ответ:текущие параметры
set.server:sim-roulette.com/link/?token=DDDDDDDDDD,1000 ответ:установленые параметры
set.dev.mode:[data(1)] — получение и переключение режима работы агрегатора (SMART — агрегатор выполняет всю работу по взаимодействию с GSM-модемами, MANUAL — пользователь сам
опрашивает модемы для получения SMS, USSD и т.д.)
примеры:
set.dev.mode ответ:SMARTтекущий режим
set.dev.mode:MANUAL ответ:MANUALустановленый режим
set.dev.alert:[data(1){0...1}] — получение и становка режима вывода уведомлений в Терминал (сервер будет получать уведомления независимо от данной настройки)
примеры:
set.dev.alert ответ:1уведомления включены
set.dev.alert:0 ответ:0установленный режим отключения уведомлений
set.ntp_server:[address(1)] — получение и установка адреса NTP-серверу (Network Time Protocol)
примеры:
set.ntp_server ответ:pool.ntp.org текущий адрес
set.ntp_server:pool.ntp.org ответ:pool.ntp.org заданный адрес
set.ntp_server:none — отказаться от получения времени ответ:1 запрет подключения к NTP-серверу
set.time.zone:[data(1){-23...23}] — получение и установка значения текущей временной зоны агрегатора
примеры:
set.time.zone ответ:3текущая временная зона UTC+03:00 Москва
set.time.zone:5 ответ:5установлена временная зона UTC+05:00 Екатеринбург
set.time.daylightOffset:[data(1){-1...1}] — получение и установка значения поправки при переходе на летнее время
примеры:
set.time.daylightOffset ответ:0текущая поправка
set.time.zone:-1 ответ:-1установленая поправка
set.httpupdate:[data(1){0-10}] — частота подключения к серверу sim-roulette для проверки обновлений (0 — проверка отключена)
примеры:
set.httpupdate ответ:1 текущее значение
set.httpupdate:1 ответ:2 каждое второе включение
save — Сохранение настроек в конфигурационном файле (без сохранения настройки действуют до перезагрузки устройства)
пример: save ответ: 1 всегда
УПРАВЛЯЮЩИЕ КОМАНДЫ
answer.clear — очистка очереди ответов агрегатора
пример: answer.clear ответ:1 всегда
command.clear — очистка очереди команд агрегатору
пример: command.clear ответ:1 всегда
i2c — получение перечня внешних, подключенных по шине i2c устройств
пример: i2с ответ:1 всегда
restart — Soft-reset агрегатора
пример: restart ответ: 1 ❱❱ ПЕРЕЗАГРУЗКА УСТРОЙСТВА
load_default_settings — сброс настроек до заводских
пример: load_default_settings ответ:1 всегда
hard_reset — полный сброс устройства до состояния нового устройства
пример: hard_reset ответ: 1 ❱❱ ПЕРЕЗАГРУЗКА УСТРОЙСТВА
МОНИТОРИНГ
request — команда для получения ответа (результата выполнения предыдущих команд) от устройства (команда никаких действий не производит)
email.send:email(1);text(2) — отправка письма на E-mail
примеры: email:user@mail.ru,Новая информация от SIM Roulette
email:{"mail":"user@mail.ru","text":"Новая информация от SIM Roulette"}
ответ: 1письмо отправлено 0неверные настройки
МАКРОСЫ
Макросы (или скрипты) — это мощнейший внутренний механизм автоматизации агрегаторов SIM Roulette. С помощью макросов могут быть реализованы абсолютно любые сценарии работы.
macro:W[,W2] | m:W[,W2] — запуск макроса с заданным именем (W) из папки /m (допустимо использовать переменные) и необязательным входным параметром (W2)
примеры:
macro:filename ответ: ❱❱ ВЫПОЛНЕНИЕ МАКРОСА 0ошибка
m:filename ответ: ❱❱ ВЫПОЛНЕНИЕ МАКРОСА 0ошибка
macro:file_(a) ответ: ❱❱ ВЫПОЛНЕНИЕ МАКРОСА 0ошибка
macro:file,Текст ответ: ❱❱ ВЫПОЛНЕНИЕ МАКРОСА 0ошибка
Примечание: макросы можно редактировать и запускать в разделе Макросы WEB-интерфейса SR-Nano, там же можно отслеживать ход выполнения запущенного макроса.
macro.stop | m.stop — остановка выполнения текущего макроса
пример: m.stop ответ: 1 всегда
macro.event:event(1),macro(2),action(3) | m.event:event(1),macro(2),action(3) — добавление/удаление макроса-слушателя события
Примечание: при наступлении события останавливается запущенный макрос (если таковой был) и последовательно выполняются все зарегистрированные макросы-слушатели, по окончании управление возвращается ранее запущенному макросу. В качестве входного параметра макросу-слушателю в буфере передается ответ от устройства вызвавшее событие, например: 1. С помощью команды buffer.event.dev можно также получить в буфер имя устройства, например: modem1.
event(1) — cобытие:
inCall — поступил входящий вызов
noCarrier — попытка установить связь закончилась неудачей
answer — ответ на входящий вызов, "подняли трубку"
hangUp — завершение вызова, "положили трубку"
ussd — пришел ответ на USSD-запрос
smsAlert — на модем поступила новая SMS
smsReceived — SMS скопирована в файловую систему агрегатора
modemState — изменился статус регистрации SIM-карты в сети
modemAnswer — получен ответ от модема
key — нажата кнопка
portchangeState — изменился статус порта
portChangeUp — изменился порта от низкого к высокому
portChangeDown — изменился порта от высокому к низкому
i2cChangeState — изменился статуса I2C
timer1 — сработал Таймер 1
timer2 — сработал Таймер 2
dtmf — получен код нажатой кнопки
callBegin — начат разговор для 3G/4G-модемов
callEnd — закончен разговор
smsSent — SMS отправлена
smsNotSent — SMS не отправлена
macro(2) — макрос:метка, который будет запущен при наступлении события
action(3) — действие: add — добавить слушателя, delete — удалить слушателя
примеры:
m.event:event=modemState,macro=scanner:test,action=add ответ: 1выполнено 0ошибка
macros.event:event=key,macro=key,action=add ответ: 1выполнено 0ошибка
После старта агрегатора автоматически запускается макрос /m/autoexec, в котором прописаны условия обработки некоторых событий. Подробнее о макросах можно узнать здесь.
ПЛАНИРОВЩИК (CRON)
Для периодического выполнения заданий в определённое время на агрегаторе используется классический механизм CRON.
Регулярные действия описываются инструкциями, помещенными в файл /crontab.
Пример файла:
* * * * * macros:label
В примере инициализирован запуск макроса /m/macros с метки label каждую минуту.
Правила формирования времени запуска макросов
Минута | Час | День | Месяц | День недели |
---|---|---|---|---|
* — каждая X-Y — с минуты X по минуту Y X,Y — минуты X и Y */X — каждая X минута |
* — каждый X-Y — с часа X по час Y X,Y — часы X и Y */X — каждый X час |
* — каждый X-Y — со дня X по день Y X,Y — дни X и Y */X — каждый X день |
* — каждый X-Y — с месяца X по месяц Y X,Y — месяцы X и Y */X — каждый X месяц |
* — каждый X-Y — со дня X по день Y X,Y — дни X и Y |
@hourly — каждый час | @daily, @midnight — каждый день | |||
@weekly — раз в неделю | ||||
@monthly — раз в месяц | ||||
@yearly, @annually — раз год |
Интеграция SIM Roulette в ваш проект
Мы надеемся, что изложенная выше информация поможет без проблем интегровать SIM Roulette в ваш проект.
Для упрощения задачи рекомендуем использовать WEB-панель SR-Navigator и API для взаимодействия с вашим ПО.
И конечно, вы всегда можете воспользоваться услугами наших программистов.