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 понимал что сервер возвращает корректные данные.


URL сервера указывается в WEB-интерфейсе либо задается командой server_url, частота обращения к серверу регулируется через WEB-интерфейс либо командой server_fr.


Ответ 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)

Таким образом команда fs.rename:/terminal.dat,/test/terminal.dat является эквивалентом команды fs.rename:{"source":"/terminal.dat","target":"/test/terminal.dat"}

[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 — параметры разделенные символами "::":

1 — размер шрифта 10,16 или 24
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 — параметр:

i — включить инверсию / n — выключить инверсию, пример: display.com:i ответ: 1всегда


При подключенном Модуле Управления с 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)

D — вывод значения переменной
примеры: 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>str1 — вывод содержимого str1
пример: 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обытие:

outCall — начался исходящий вызов
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 для взаимодействия с вашим ПО.
И конечно, вы всегда можете воспользоваться услугами наших программистов.



Новости SIM Roulette

Анонсы новых девайсов и софта, информацию об акциях и скидках мы публикуем только в соцсетях: