- Справочник
- Сценарии (Routines)
API iRidium. Сценарии (Routines)
Методы и свойства управления серверными сценариями, позволяющие работать напрямую с оборудованием или через элемент TimeTable.
Сценарий автоматически запускается при возникновении определенного события: при получении данных от оборудования или срабатывании событий расписания.
-
Подробнее о серверных сценариях в iRidium Studio здесь.
-
Описание работы с элементом TimeTable вы найдете по этой ссылке.
Методы
IR.AddProRoutine()
Создание серверного сценария.
Синтаксис:
IR.AddProRoutine( name, routine_type, schedule_type);
| Параметр | Значение | Описание |
|---|---|---|
| name | "Routine 1" | type: String Уникальное имя серверного сценария |
| rowspan="2" routine_type | IR.ROUTINE_TYPE_AUTONOMIC | type: Object Обычный серверный сценарий |
| IR.ROUTINE_TYPE_TIMETABLE | Сценарий, позволяющий работать с элементом Timetable | |
| rowspan="2" schedule_type | IR.ROUTINE_SERVICE_SCHEDULE_TYPE_WEEKLY_CYCLE | type: Object Недельное расписание |
| IR.ROUTINE_SERVICE_SCHEDULE_TYPE_CALENDAR | Календарное расписание |
| На выходе | ||
|---|---|---|
| Object | [Object ProRoutinePrototype] | type: Object Экземпляр объекта серверного сценария |
Пример
var routine = IR.AddProRoutine("Routine 1", IR.ROUTINE_TYPE_TIMETABLE, IR.ROUTINE_SERVICE_SCHEDULE_TYPE_WEEKLY_CYCLE); // недельное расписание
var routine2 = IR.AddProRoutine("Routine 2", IR.ROUTINE_TYPE_TIMETABLE, IR.ROUTINE_SERVICE_SCHEDULE_TYPE_CALENDAR); // календарное расписание
IR.GetProRoutine()
Позволяет получить доступ к созданному сценарию.
Синтаксис:
IR.GetProRoutine( name / ID);
| Параметр | Значение | Описание |
|---|---|---|
| name | "Routine 1" | type: String Имя серверного сценария |
| ID | 1 | type: Number Идентификатор серверного сценария |
| На выходе | ||
| Object | [Object ProRoutinePrototype] | type: Object Экземпляр объекта серверного сценария |
Пример
IR.Log("GET ROUTINE: " + IR.GetProRoutine("Routine 1")); // [Object proRoutinePrototype]
IR.GetProRoutines()
Позволяет получить доступ ко всем серверным сценариям в проекте.
Синтаксис:
IR.GetProRoutines()
| Параметр | Значение | Описание |
|---|---|---|
| Array | [[object ProRoutinePrototype], [object ProRoutinePrototype]] | type: Array Массив объектов серверных сценариев |
Пример
IR.Log("GET ROUTINE: " + IR.GetProRoutines()); // [[Object proRoutinePrototype], [Object proRoutinePrototype]]
IR.GetScheduler()
Позволяет получить доступ к созданному расписанию.
Синтаксис:
IR.GetScheduler(#IR.GetScheduler() | name);
| на входе | значение | описание |
|---|---|---|
| name | "Schedule 1" | type: String Имя расписания |
| На выходе | ||
| Object | - | type: Object экземпляр объекта расписания |
Пример
var schedule = IR.GetScheduler("Schedule 1");
IR.EditRoutineSettings()
Изменить настройки правила.
Синтаксис:
IR.EditRoutineSettings(name);
| на входе | значение | описание |
|---|---|---|
| name | "Routine 1" | type: String Имя правила |
| На выходе | ||
| Object | - | type: Object окно настроек правила |
Пример
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetPage("Page 1").GetItem("Item 1"), function () {
IR.EditRoutineSettings("Routine 1");
IR.Log("EditRoutines");
});
IR.ShowListOfAllRoutines()
Показать настройки настройки всех правил.
Синтаксис:
IR.ShowListOfAllRoutines();
| на входе | значение | описание |
|---|---|---|
| Object | - | type: Object окно настроек всех правил |
Пример
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetPage("Page 1").GetItem("Item 6"), function () {
IR.ShowListOfAllRoutines();
IR.Log("ShowList");
});
Свойства серверных сценариев
IR.GetProRoutine(name / ID). property
| параметр | значение | описание |
|---|---|---|
| .Name | "Routine 1" | type: String Позволяет задать имя сценарию |
| .ID | 1 | type: Number Позволяет получить ID сценария |
| .Type | 1 | type: Number Позволяет получить тип сценария 0 - обычный серверный сценарий 1 - сценарий для работы с Timetable |
| .Enabled | true | type: Boolean Позволяет активировать или деактивировать сценарий |
| .EventsCount | 2 | type: Number Позволяет получить количество событий, используемых в сценарии |
| .ConditionsCount | 2 | type: Number Позволяет получить количество условий, используемых в сценарии |
| .ActionsCount | 2 | type: Number Позволяет получить количество действий, используемых в сценарии |
| .ParametersCount | 3 | type: Number Позволяет получить количество параметров сценария |
Параметры серверных сценариев
Позволяет передать сценарию необходимые значения.
.AddParameter()
Создание параметра.
Синтаксис:
IR.GetProRoutine(routine).AddParameter({Type,Name...});
| на входе | значение | описание |
|---|---|---|
| routine | "Routine 1" | type: String Имя серверного сценария |
| Type | IR.ROUTINE_PARAMETER_TYPE_STRING / IR.ROUTINE_PARAMETER_TYPE_NUMBER / IR.ROUTINE_PARAMETER_TYPE_COLOR / IR.ROUTINE_PARAMETER_TYPE_SELECT | type: String / Number / RGBA / select Тип параметра сценария |
| Name | "numberParam" | type: String Уникальное имя параметра |
| ROUTINE_PARAMETER_TYPE_NUMBER | ||
| MinValue | 0 | type: Number Минимальное значение |
| MaxValue | 100 | type: Number Максимальное значение |
| ROUTINE_PARAMETER_TYPE_SELECT | ||
| SubType | IR.PT_TEXT / IR.PT_INTEGER / IR.PT_FLOAT | type: String / Number Служит для преобразования значений (Value) в необходимый тип |
| SubParameterArray | Key: ON/OFF, Value: 1/0 | type: String Выбор заданных значений |
| На выходе | ||
| Object | [object ProRoutineParameterPrototype] | type: Object Oбъект параметра |
Пример
var routine = IR.GetProRoutine(“Routine 1”); // получение доступа к сценарию
// создание параметров:
if (routine) {
// строковый параметр
var stringParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_STRING,
Name: "String"
});
<!--T:30-->
// числовой параметр
var numberParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_NUMBER,
Name: "Number",
MinValue: 0,
MaxValue: 100
});
<!--T:31-->
// параметр цвета
var colorParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_COLOR,
Name: "Color"
});
<!--T:32-->
// параметр выбора
var selectParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_SELECT,
Name: "Select",
SubType: IR.PT_INTEGER,
SubParameterArray: [{
Key: "ON",
Value: "1"
}, {
Key: "OFF",
Value: "2"
}]
});
.GetParameter()
Позволяет получить доступ к созданному параметру.
Синтаксис:
routine.GetParameter( name / ID)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine("Routine 1") | type: Object Сценарий, в котором используется параметр |
| ID | 1 | type: Number Уникальный идентификатор параметра |
| name | "Color" | type: String Имя параметра |
| На выходе | ||
| Object | [object ProRoutineParameterPrototype] | type: Object Объект параметра |
Пример
// создание параметра
var colorParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_COLOR,
Name: "Color",
});
<!--T:37-->
// получение параметра
IR.Log("GET PARAMETER: " + routine.GetParameter("Color"));
//GET PARAMETER: [object ProRoutineParameterPrototype]
.GetParameters()
Позволяет получить доступ ко всем параметрам, используемых в сценарии.
Синтаксис:
routine.GetParameters()
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine("Routine 1") | type: Object Сценарий, в котором используется параметр |
| На выходе | ||
| Array | [[object ProRoutineParameterPrototype], [object ProRoutineParameterPrototype]] | type: Array Массив параметров |
Пример
// получение параметра
IR.Log("GET PARAMETERS: " + routine.GetParameters());
//[[object ProRoutineParameterPrototype], [object ProRoutineParameterPrototype]]
.DeleteParameter()
Удаление выбранного параметра.
Синтаксис:
routine.DeleteParameter(Param)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine("Routine 1") | type: Object Сценарий, в котором используется параметр |
| Param | routine.AddParameter({Type: IR.ROUTINE_PARAMETER_TYPE_COLOR, Name: "Color"}); | type: Object Выбранный параметр |
Пример
//создание параметра
var colorParam = routine.AddParameter({
Type: IR.ROUTINE_PARAMETER_TYPE_COLOR,
Name: "Color"
});
IR.Log("DELETE_PARAMETER RESULT: " + routine.DeleteParameter(colorParam));
Свойства параметров
routine.GetParameter(name / ID).property
| параметр | значение | описание |
|---|---|---|
| .ID | 1 | type: Number Позволяет получить ID параметра |
| .Name | "String" | type: String Позволяет получить имя параметра |
| .Type | 1 | type: Object / Number Позволяет получить тип параметра |
События серверных сценариев
Это главное условие для активации серверного сценария.
.AddEvent()
Синтаксис:
routine.AddEvent({Type, ParametersValues...})
| Параметр | Значение | Описание |
|---|---|---|
| routine | IR.GetProRoutine("Routine 1") | type: Object Объект серверного сценария |
| Type | IR.ROUTINE_SERVICE_TYPE_TOKEN | type: Object Активация токена |
| IR.ROUTINE_SERVICE_TYPE_SCHEDULE | type: Object Активация расписания | |
| IR.ROUTINE_SERVICE_TYPE_TOKEN | ||
| Token | "Server.Tags.Virtual 1" | type: String Ссылка на токен |
| Operation | IR.ROUTINE_COMPARE_EQUAL (==) IR.ROUTINE_COMPARE_NOT_EQUAL ( !=) IR.ROUTINE_COMPARE_LESS ( <) IR.ROUTINE_COMPARE_MORE ( >) IR.ROUTINE_COMPARE_EQUAL_LESS ( <=) IR.ROUTINE_COMPARE_EQUAL_MORE ( >=) | type: Object Условные операторы для сравнения значений |
| Value | "50" | type: String Значение для проверки условия |
| IR.ROUTINE_SERVICE_TYPE_SCHEDULE | ||
| ScheduleID | 1 | type: Number Идентификатор расписания |
| ScheduleEventID | 1 | type: Number Идентификатор события |
| Value | IR.SCHEDULE_EVENT_STATE_START | type: Object Событие на старт |
| IR.SCHEDULE_EVENT_STATE_FINISH | type: Object Событие на финиш | |
| ParametersValues | [{ParameterID: 1, Value: "1"}, {ParameterID: 2, Value: "0"}] | type: {Number, String} Содержит список объектов со значениями |
Пример
var event = routine.AddEvent({ // Создание события
Type: IR.ROUTINE_SERVICE_TYPE_SCHEDULE, // Указание типа события
ScheduleID: 0, // Идентификатор расписания
ScheduleEventID: 0, // Идентификатор события расписания
Value: IR.SCHEDULE_EVENT_STATE_START, // Активация по старту события
ParametersValues: [{
ParameterID: stringParam.ID, // Идентификатор строкового параметра
Value: "Hello, world!" // Значение параметра
}, {
ParameterID: numberParam.ID, // Идентификатор числового параметра
Value: "50" // Значение параметра
}, {
ParameterID: colorParam.ID, // Идентификатор RGBA параметра
Value: 0xFF00FFFF.toString() // Значение параметра (в строковом виде)
}, {
ParameterID: selectParam.ID, // Идентификатор параметра выбора
Value: "ON" // Значение параметра
}]
});
- Если тип события и тип сценария отличаются, то событие не создастся!
- Если тип сценария ROUTINE_TYPE_TIMETABLE и не созданы параметры - событие не создастся!
- Если токен указан не правильно - событие не создастся!
- Если тип сценария ROUTINE_TYPE_TIMETABLE, то обязательно должны быть заданы все ParametersValues, в зависимости от количества параметров, иначе событие не создастся!
.GetEvent()
Позволяет получить доступ к созданному событию.
Синтаксис:
routine.GetEvent( ID)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| ID | 1 | type: Number Идентификатор события. |
| На выходе | ||
| Object | [object ProRoutineServicePrototype] | type: Object Объект события. |
Пример
IR.Log("GET EVENT: " + routine.GetEvent(1)); //[object ProRoutineServicePrototype]
.GetEvents()
Позволяет получить доступ к массиву событий.
Синтаксис:
routine.GetEvents()
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| На выходе | ||
| Array | [[object ProRoutineServicePrototype], [object ProRoutineServicePrototype]] | type: Array Массив событий. |
Пример
IR.Log("GET EVENTS: " + routine.GetEvents());
//[[object ProRoutineServicePrototype], [object ProRoutineServicePrototype]]
.DeleteEvent()
Удаление события.
Синтаксис:
routine.DeleteEvent(еvent)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| event | routine.GetEvent(0) | type: Object Объект события. |
Пример
// Удаление события
IR.Log("DELETE_EVENT RESULT: " + routine.DeleteEvent(event)); //true/false
Свойства событий
routine.GetEvent(ID).property
| параметр | значение | описание |
|---|---|---|
| .Operation | 3 | type: Number Позволяет задать тип сравнения. |
| .ID | 1 | type: Number Позволяет получить ID события. |
| .Type | 4 | type: Number Позволяет получить тип события. |
| .Value | 1 | type: Number Позволяет задать отправляемое значение. type: String (ROUTINE_SERVICE_TYPE_TOKEN). |
| .Token | Server.Channels.Modbus TCP.Channel 1 | type: String Позволяет получить имя токена. |
Условия серверных сценариев
Это дополнительные условия для активации серверных сценариев. Сценарий активируется только в том случае, если произойдет событие и будут выполнены все перечисленные условия.
.AddCondition()
Создание условия.
Синтаксис:
routine.AddCondition({Type,...})
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| Type | IR.ROUTINE_SERVICE_TYPE_TOKEN | type: Object Активация токена. |
| Type | IR.ROUTINE_SERVICE_TYPE_SCHEDULE | Активация расписания. |
| ROUTINE_SERVICE_TYPE_SCHEDULE | ||
| ScheduleID | 1 | type: Number Идентификатор расписания. |
| ScheduleEventID | 1 | type: Number Идентификатор события. |
| Value | IR.SCHEDULE_EVENT_STATE_UNKNOWN | type: Object Расписание не активно. |
| Value | IR.SCHEDULE_EVENT_STATE_START | Расписание активно. |
| ROUTINE_SERVICE_TYPE_TOKEN | ||
| Token | "Server.Tags.Virtual 1" | type: String Токен. |
| Operation | IR.ROUTINE_COMPARE_EQUAL(==), IR.ROUTINE_COMPARE_NOT_EQUAL( !=), IR.ROUTINE_COMPARE_LESS, IR.ROUTINE_COMPARE_MORE( >), IR.ROUTINE_COMPARE_EQUAL_LESS, IR.ROUTINE_COMPARE_EQUAL_MORE( >=) | type: Object Условные операторы сравнения. |
| Value | "50" | type: String Значение токена. |
Пример
var condition = routine.AddCondition({ //Создание условия
Type: IR.ROUTINE_SERVICE_TYPE_TOKEN, //Выбор типа
Value: "1", //Значение токена
Token: "Modbus TCP.Channel", //Имя токена
Operation: IR.ROUTINE_COMPARE_EQUAL //Условный оператор
});
.GetCondition()
Позволяет получить доступ к созданному условию.
Синтаксис:
routine.GetCondition(ID)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| ID | 1 | type: Number Идентификатор условия. |
| На выходе | ||
| Object | [object ProRoutineServicePrototype] | type: Object Объект условия. |
Пример
IR.Log("GET CONDITION: " + routine.GetCondition(1)); //[object ProRoutineServicePrototype]
.GetConditions()
Позволяет получить доступ к массиву созданных условий.
Синтаксис:
routine.GetConditions()
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| На выходе | ||
| Array | [[object ProRoutineServicePrototype], [object ProRoutineServicePrototype]] | type: Array Массив условий. |
Пример
IR.Log("GET CONDITIONS: " + routine.GetConditions());
// [[object ProRoutineServicePrototype], [object ProRoutineServicePrototype]]
.DeleteCondition()
Удаление условия.
Синтаксис:
routine.DeleteCondition(condition)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| condition | routine.GetCondition(1) | type: Object Объект условия. |
Пример
IR.Log("DELETE CONDITION RESULT: " + routine.DeleteCondition(condition)); // true/false
Свойства условий
routine.GetCondition(ID).property
| параметр | значение | описание |
|---|---|---|
| .Operation | 1 | type: Number Позволяет задать тип сравнения. |
| .ID | 1 | type: Number Позволяет получить ID условия. |
| .Type | 6 | type: Number Позволяет получить тип условия. |
| .Value | 1 | type: Number Позволяет задать отправляемое значение. type: String (ROUTINE_SERVICE_TYPE_TOKEN) |
| .Token | Server.Channels.Modbus TCP.Channel 1 | type: String Позволяет получить имя токена. |
Действия серверных сценариев
Действия, которые будут выполняться при активации сценария.
.AddAction()
Создание действия.
Синтаксис:
routine.AddAction({Type, Value...})
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| Type | IR.ACTION_TYPE_SEND_NUMBER, IR.ACTION_TYPE_SEND_TEXT, IR.ACTION_TYPE_SEND_TAG, IR.ACTION_TYPE_SEND_DATA, IR.ACTION_TYPE_DELAY, IR.ACTION_TYPE_NUMBER_TO_TAG, IR.ACTION_TYPE_TEXT_TO_TAG, IR.ACTION_TYPE_TAG_TO_TAG | type: Object Тип действия. |
| Value | ACTION_TYPE_SEND_NUMBER, ACTION_TYPE_SEND_TEXT, ACTION_TYPE_NUMBER_TO_TAG, ACTION_TYPE_TEXT_TO_TAG, ACTION_TYPE_DELAY(мс) Пример: “50”; ACTION_TYPE_SEND_TAG, ACTION_TYPE_TAG_TO_TAG Пример: "Server.Tags.Virtual 1"; ACTION_TYPE_SEND_DATA Пример: "01, 02, 03, 04, AA, BB" | type: String Отправляемые значения. |
| Channel | "AV & Custom Systems (HTTP).AV Control Command" | type: String Имя канала, в который отправляем значение. Используется только в: IR.ACTION_TYPE_SEND_NUMBER, IR.ACTION_TYPE_SEND_TEXT, IR.ACTION_TYPE_SEND_TAG, IR.ACTION_TYPE_SEND_DATA |
| Tag | "Server.Tags.Virtual 1" | Type: String Имя токена, в который отправляем значения. Используется только в: IR.ACTION_TYPE_NUMBER_TO_TAG, IR.ACTION_TYPE_TEXT_TO_TAG, IR.ACTION_TYPE_TAG_TO_TAG |
Пример
var numberAction = routine.AddAction({ //Создание действия
Type: IR.ACTION_TYPE_NUMBER_TO_NUMBER, //Тип данных
Channel: "Modbus TCP.Channel 1", //Имя канала
Value: "1" //Отправляемое значение
});
var colorAction = routine.AddAction({ //Создание действия
Type: IR.ACTION_TYPE_NUMBER_TO_TAG, //Тип данных
Tag: "Server.Tags.Virtual 1", //Имя тэга
Value: "1" //Отправляемое значение
});
- Создание действия для элемента Timetable, с применением параметров:
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| Type | IR.ACTION_TYPE_SEND_TAG | type: Object Тип действия. |
| Value | "Routines." + routine.Name + "." + parameter.Name | type: String routine - объект рутины, parameter - объект выбранного параметра. |
| Channel | "AV & Custom Systems (HTTP).AV Control Command" | type: String Имя канала, в который отправляем значение. |
| Tag | "Server.Tags.Virtual 1" | Type: String Имя токена, в который отправляем значения. |
Пример
var colorAction = routine.AddAction({ //Создание действия
Type: IR.ACTION_TYPE_SEND_TAG, //Тип данных
Channel: "AV & Custom Systems (TCP).Command 1", //Имя канала
Value: "Routines." + routine.Name + "." + colorParam.Name //Отправляемое значение
});
.GetAction()
Позволяет получить доступ к созданному действию.
Синтаксис:
routine.GetAction(ID)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| ID | 0 | type: Number Идентификатор действия. |
| На выходе | ||
| Object | [object ProRoutineActionPrototype] | type: Object Объект действия. |
Пример
IR.Log("GET ACTION: " + routine.GetAction(0)); //[object ProRoutineActionPrototype]
.GetActions()
Позволяет получить доступ к массиву действий.
Синтаксис:
routine.GetActions()
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| На выходе | ||
| Array | [[object ProRoutineActionPrototype], [object ProRoutineActionPrototype]] | type: Array Массив объектов действий. |
Пример
IR.Log("GET ACTIONS: " + routine.GetActions());
//[[object ProRoutineActionPrototype], [object ProRoutineActionPrototype]]
.DeleteAction()
Удаление действия
Синтаксис:
routine.DeleteAction(action)
| на входе | значение | описание |
|---|---|---|
| routine | IR.GetProRoutine(“Routine 1”) | type: Object Объект серверного сценария. |
| action | routine.GetAction(0) | type: Object Объект действия. |
Пример
IR.Log("DELETE ACTION RESULT: " + routine.DeleteAction(colorAction)); // true/false
Свойства действий
routine.GetAction(ID). property
| параметр | значение | описание |
|---|---|---|
| .Channel | "AV & Custom Systems (TCP).AV Control Command" | type: String Позволяет задать имя канала. |
| .ID | 1 | type: Number Позволяет получить ID действия. |
| .Type | 11 | type: Number Позволяет получить тип действия. |
| .Value | 1 | type: Number Позволяет задать значение. |
| .Tag | "Server.Tags.Virtual 1" | type: String Позволяет задать имя тега. |