Типы графических элементов, поведение элемента в интерфейсе
Типы графических элементов, поведение в интерфейсе
Графический элемент – это объект управления или отображения, расположенный на странице или окне-попапе интерфейса визуализации. К графическим элементам относятся надписи, кнопки, уровни, джойстики и др.
В этом разделе рассмотрим ключевую информацию о графических элементах, как создавать элементы и как настраивать их поведение, меняя тип элемента и его основные параметры.
Типы и назначение элементов
Базовый элемент интерфейса i3 pro - это кнопка. Все объекты, которые вы видите - надписи, разделители, ползунки и клавиши - это элементы, поведение и отображение которых, изначально, было основано на поведении обычной кнопки (Button), к которой добавлены дополнительные особенности. Тип элемента описывает эти особенности:
| Элемент | Описание |
|---|---|
| Button кнопка | Кнопка - это нажимаемый элемент. Она имеет 2 варианта внешнего вида, условно: "не нажатый" (false) и "нажатый" (true). По нажатию на кнопку, можно отправлять команды. Значение, которое будет отправлено, нужно указать в команде - это может быть число или строка. При одних настройках, кнопка будет обозначать "нажатым" состоянием попадание пользователя пальцем по кнопке, и возвращаться в "не нажатое" состояние при отпускании. При других, кнопка будет менять состояние на "нажатое", если получит от оборудования любое значение, отличное от нуля. Можно выключить смену состояния, и использовать кнопку как Label. |
| Label лейбл | Лейбл - это ненажимаемый элемент. Он имеет 1 вариант внешнего вида. Лейбл можно использовать как дисплей для отображения данных, текстовый блок, элемент оформления, иконку и т.д. |
| Multistate Button кнопка с анимацией | Кнопка с анимацией отличается от обычной кнопки наличием множества вариантов внешнего вида. При нажатии или получении данных она, как и обычная кнопка, переходит из "не нажатого" (первого) состояния в "нажатое" (последнее), при этом последовательно отображает все свои промежуточные состояния. Процесс перехода между крайними состояниями - это покадровая анимация. Остановить воспроизведение в промежуточном состоянии нельзя (используйте для этого Multistate Level). При определенных настройках, воспроизведение анимации можно зациклить, и она будет выполняться все время, пока в кнопку передается ненулевое значение, или вообще всё время работы интерфейса. |
| Trigger Button кнопка триггер | Триггер - это нажимаемый элемент, который фиксируется в одном из двух состояний: "выключенном" (Value 1) или "включенном" (Value 2) при каждом последующем нажатии, и отправляет эти значения оборудованию. При получении данных, если полученное значение совпадает с Value 2, триггер переходит во включенное состояние. Данный тип элемента не будет работать правильно, если у него отсутствует канал обратной связи c информацией о текущем состоянии управляемого значения (требуется записать Feedback от оборудования в Value элемента Trigger Button для того, чтобы он правильно рассчитал значение). |
| Up/Down Button кнопка прирастить/убавить | Up/Down - это нажимаемый элемент с 2 состояниями: "не нажатое" и "нажатое"; внешне, он ведет себя как обычная кнопка Button, но служит для отправки оборудованию значений, увеличенных или уменьшенных относительно текущего. При каждом нажатии, Up/Down берет текущее состояние переменной, изменяет его на указанную величину и отправляет оборудованию. Типовое использование: управление заданием температуры +/- 1 градус, и подобные задачи с пошаговым изменением переменной. Этот тип элемента не будет правильно работать, если у него нет обратной связи о текущем состоянии управляемого значения (нужно записать Feedback от оборудования в Value элемента Up/Down, чтобы он правильно рассчитал значение). |
| Level уровень с ползунком | Уровень - это элемент с подвижным ползунком. Он имеет 2 варианта внешнего вида: "не заполненный" и "заполненный". Ползунок замещает одно состояние другим, перемещаясь по уровню от края до края. Для уровня определяются крайние значения - минимальное и максимальное, между которыми может перемещаться ползунок. Положение ползунка определяет значение, которое он будет отправлять оборудованию (при перемещении ползунка пальцем/курсором), или отображать при получении от оборудования. |
| Multistate Level уровень с анимацией | Уровень с анимацией отличается от обычного, линейного, наличием множества вариантов внешнего вида, которые не замещают, а сменяют друг друга при перемещении ползунка в пределе Min...Max. Уникальное состояние может соответствовать каждому значению или диапазону (если состояний меньше, чем значений). |
| Circular Level круговой уровень | Как и обычный Уровень, круговой может отправлять/отображать значения в пределах указанного диапазона, но изменение значения осуществляется перемещением ползунка по кругу или в пределах сектора. |
| Multistate Circular Level круговой уровень с анимацией | Круговой уровень с анимацией – обладает качествами кругового и анимированного уровней: у него множество вариантов внешнего вида, которые сменяют друг друга при перемещении ползунка по кругу. |
| Joystick джойстик | Джойстик - это двухкоординатный уровень, который генерирует значения ValueX и ValueY при перемещении ползунка в пределах области, ограниченной диапазонами по осям X и Y. Важная особенность джойстика - возможность получить текущее значение цвета под ползунком. |
| Edit Box поле ввода | Поле ввода - это прямоугольное окно, в котором можно вводить и редактировать текст с клавиатуры. |
| TextArea поле ввода | Поле ввода - графические элемент схожий с Edit Box с возможностью многострочного ввода. Перенос текста происходит по пробелам. |
| Virtual key виртуальная клавиша | Virtual key - это элемент для создания пользовательской клавиатуры. На базе виртуальной клавиши вы можете создать клавиатуру любого вида и конфигурации в проекте iRidium. |
| List динамически заполняемый список | Лист - это прокручивающийся список, который можно заполнить множеством пунктов, шаблоном для которых служит один попап. Содержимое каждого пункта заполняется скриптами и может быть изменено в процессе работы проекта. Работать со списком из скриптов довольно легко, но он не поддерживает перемещение пунктов, добавление пунктов в начало и середину списка (придется обновлять все содержимое). |
| Static List список попапов | Список - это элемент навигации по проекту, который позволяет разместить на одной странице множество попапов, и перемещаться между ними при помощи жестов. Список выглядит как графический элемент на странице или попапе. В его настройках указывается перечень и порядок следования попапов, которые будут прокручиваться внутри этого элемента. Если попап - в списке, его нельзя использовать самостоятельно или в еще одном списке (техническое ограничение). |
| Advanced List улучшенный динамически заполняемый список | Улучшенный лист также управляется скриптами. Он хорошо работает с очень большим количеством пунктов и позволяет добавлять пункты на любую позицию списка, но потребует больше времени на первоначальное изучение. |
| Picker барабан | Барабан позволяет прокручивать список пунктов, изменять их количество, информацию в них. Барабан можно создать только при помощи скрипта: см. Picker API. Основное применение – для установки даты или времени. |
| Linear Trend линейная диаграмма | Это график, на котором точки - значения переменной, соединены между собой линией. На линейной диаграмме можно отображать графики изменения нескольких переменных в указанном диапазоне времени и значений. Линейная диаграмма получает значения из базы данных iRidium server или из внешней базы данных SQL (в случае с внешней базой нужен скрипт). Приложение i3 pro не может сохранять собственную базу, поэтому диаграммы доступны только при использовании сервера или внешней БД. Ряд параметров линейной диаграммы доступен для изменения из скриптов. |
| Pie Chart круговая диаграмма | Круговая диаграмма разделена на фрагменты-секторы для иллюстрации числовой пропорции. На круговой диаграмме длина дуги каждого среза пропорциональна величине, которую он представляет. Заполнение диаграммы производится из скриптов. |
| Bar Chart столбцовая диаграмма | Столбчатая диаграмма отображает сравнение нескольких значений, представленных прямоугольными зонами, высоты (длины) которых пропорциональны величинам, которые они отображают. Заполнение диаграммы производится из скриптов. |
Создание графических элементов
Создание визуального проекта представляет собой процесс отрисовки графических элементов и их программирование на страницах и попапах.
Рисование при помощи инструмента "Draw"
Как выбрать инструмент рисования:
- в левой боковой панели инструментов размещены кнопки Select и Draw для переключения с выбора элементов на рисование. Зажмите кнопку Draw, чтобы из списка выбрать тип элемента, который будете рисовать по-умолчанию.
- кнопки Select и Draw продублированы в меню правой кнопки мыши при клике в рабочей зоне iRidium studio.
- удержанием и сочетанием клавиш:
- Hold L - нарисовать надпись в рабочей области.
- Hold B - нарисовать кнопку в рабочей области.
- D + Ctrl - нажмите однократно, чтобы переключиться на рисование.
- Esc - нажмите однократно, чтобы переключиться на режим Select.
- Полный список Hotkeys в статье обзор на iRidium Studio 2019.
Когда выбран инструмент рисования, курсор в рабочей зоне редактора имеет вид креста. Нажмите левой клавишей мыши, и растягивайте область в рабочей зоне, чтобы нарисовать элемент произвольного размера.
Включите инструмент Select, чтобы завершить рисование и вернуться к режиму выбора элементов в рабочей зоне.

Нарисованный элемент будет иметь стандартный внешний вид, изменить который можно в Настройках iRidium studio: Tools > Options > Project style .
Основные настройки элементов (General)
Основные настройки - это настройки, доступные каждому элементу в студии.
В основном, поведение элемента определяется его типом, но, реакция на нажатие и получение данных, возможность смены состояния - настраиваются после выбора типа элемента.
Тип элемента и его настройки доступны на вкладке General окна Project или на динамической панели iRidium Studio:

| Параметр | Описание |
|---|---|
| Name имя элемента | Имя элемента является уникальным идентификатором объекта при обращении к элементу через JavaScript или при настройке макросов в iRidium Studio. |
| X / Y координаты элемента | Координаты элемента по X и Y отчитываются от верхнего левого угла в пикселях. |
| Width / Height ширина / высота | Ширина и высота графического элемента в пикселях. - При выделении сразу нескольких элементов можно одновременно устанавливать их размер. - Если потянуть за край одного из выделенных элементов, то размер всех элементов изменится пропорционально. |
| Type тип элемента | Уже известный нам, тип элемента. Определяет количество состояний и значения, которые элемент может отправлять. Выберите тип элемента, который, по описанию, наиболее точно подходит под вашу задачу. |
| Feedback обратная связь | Определяет реакцию элемента на действия и данные. Типы: - None — не менять состояние ни при попадании пальцем, ни при получении данных от оборудования. - Momentary — менять состояние при попадании пальцем - если это Button, Trigger Button, Up/Down Button, Multistate Button, то "нажатое" состояние включится при попадании в элемент пальцем, "не нажатое" - при отпускании пальца. На получение данных элемент не отреагирует. - другие типы элементов или имеют одно состояние, или более сложную структуру, поэтому не подчиняются свойству Feedback. - Channel — менять состояние при получении данных от оборудования - если это Button, Up/Down Button, Multistate Button, то "нажатое" состояние включится при получении ненулевого значения. - если это Trigger Button, состояния будут сменять друг друга при каждом нажатии, т.к. триггер каждый раз меняет Value. При получении данных, триггер перейдет во включенное состояние, если значение равняется его "Value 2". - Invert Channel — менять состояние при получении данных от оборудования, но логика смены состояния инвертирована - Button, Up/Down Button, Multistate Button перейдут во "включенное" состояние при получении нуля, и будут находится в "выключенном" при любом ненулевом значении. - Trigger Button будет демонстрировать "включенное" состояние при "Value 1", в "выключенное" - при "Value 2". - On — элемент перейдет во включенное состояние в момент запуска проекта. С типом "On" у Multistate Button можно воспроизвести анимацию, однократно, в момент старта приложения (Loop animation: false) или циклически, всё время работы приложения (Loop animation: true). - Blink — элемент перейдет во включенное состояние при получении ненулевого значения |
| Visible отображение | Отображение элемента по умолчанию - включено. Если выключить отображение, при запуске i3 pro элемент будет полностью скрыт. Отображением элемента можно управлять в процессе работы i3 pro через свойство Visible. |
| Enable разрешить нажатие | Если выключить разрешение на нажатие, элемент будет заблокирован - перестанет реагировать на касание и отправлять команды, настроенные в Programming. При этом он продолжит отображать данные, полученные от оборудования. Цвет заблокированного элемента меняется - отображается в оттенках серого |
| Hit область и характер нажатия | Определяет область и поведение нажатий. Для кнопок: - Bounding Box — элемент обрабатывает нажатие на любую область, включая прозрачную. - Pass Through — «прозрачный» для попадания элемент, нажатия на который не обрабатываются вообще. Попадание будет обработано объектом, находящимся слоем ниже. Элемент только отображает значения. - Touch on Fill — обрабатывается нажатие на любую непрозрачную область элемента. Нажатие на прозрачную область не обрабатывается (будет обработано объектом, находящимся слоем ниже). Для уровней: - Bounding Box (ранее: Active) – обрабатываются все нажатия на уровень. - Pass Through (ранее: Display Only) – «прозрачный» для попадания элемент, нажатия на который не обрабатываются вообще. Попадание будет обработано объектом, находящимся слоем ниже. Элемент только отображает значения. - Active Centering — обрабатываются только одиночные нажатия - ползунок перемещается в точку нажатия, а после отпускания возвращается в середину шкалы.р - Drag — положение ползунка изменяется только при сдвиге ползунка (или любой точки уровня) пальцем. Одиночные нажатия не обрабатываются, можно начать сдвиг из любой точки уровня (рассмотрите Drag Slider как альтернативу этому типу нажатия). - Drag Slider — работает только при настройке ползунка Custom (картинка в качестве ползунка). Положение кастомного ползунка изменяется только при перетаскивании за сам ползунок! Если уровень находится на Static list, это помогает бороться с ложным срабатыванием при перемотке списка. - Drag Centering — положение ползунка изменяется только при перетаскивании, движение ползунка всегда начинается из центра шкалы, при отпускании ползунок возвращается в центр шкалы. - Touch on Fill — обрабатывается нажатие на любую непрозрачную область элемента. Нажатие на прозрачную область не обрабатывается (будет обработано объектом, находящимся слоем ниже). |
| Tags теги | Название, предназначенное для поиска графического элемента или группы элементов в проекте через поисковую строку. |
Специфические настройки, определяемые типом элемента
Специфические настройки - это настройки элемента, не распространяющиеся на остальные типы элементов, придающие элементу индивидуальные особенности поведения.
Button (кнопка)
Button — это графический элемент из 2-х состояний. Каждое нажатие на кнопку инициирует отправку одних и тех же команд, заранее к ней привязанных. Например, одна кнопка может включать свет, отправляя в канал значение "100", а другая выключать, отправляя значение "0".
Параметры элемента

| Type | Button |
|---|---|
| Feedback | Реакция кнопки на нажатие и данные от оборудования: - Momentary — кнопка переключится на состояние on при нажатии и вернется на off при отпускании, не отображает обратную связь; - Channel — кнопка переключается на состояние on при нажатии и вернется в состояние off при повторном нажатии, отображает обратную связь; - None — визуально не реагирует на нажатие или получение обратной связи, - Invert Channel — кнопка переключается на состояние off при нажатии и вернется в состояние on при повторном нажатии, отображает обратную связь инверсно (false - включена, true - выключена) |
| PasswordID | Здесь можно выбрать 1 из 4х системных паролей, который запросит кнопка Button при нажатии. Кнопка не выполнит привязанные к ней команды (PROGRAMMING), пока не будет введен пароль. Настраивается в настройках проекта |
| Hold Time | Время (мс), которое нужно удерживать кнопку для срабатывания события Hold |
| Repeat time | Период (мс), с которым повторяется событие Hold при удержании |
Привязка к оборудованию
Перетащите переменную на кнопку, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command | Number - записать в переменную число. Можно переключить на String для отправки ASCII строки. |
| Event for Action | Событие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано указанное значение: • When pressed — отправить по нажатию на кнопку • When released — отправить при отпускании кнопки • When held — отправлять в цикле при удержании • After holding — отправить по окончанию удержания Можно использовать несколько событий одновременно. Например: отправить 100 при нажатии и 0 при отпускании. |
| Value | Значение для записи в переменную. Кнопка всегда отправляет одно и то же значение, заданное в Value. |
| Delay | Задержка отправки значения после активации события (в миллисекундах). |
| Assign feedback channel | Включите, если кнопка должна не только отправлять значение, но и менять состояние при получении данных из той же переменной (обратная связь). |
Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:
- введите шаблон в текстовое поле элемента,
- перетяните Feedback на элемент, "In Value":
СПИСОК ШАБЛОНОВ
| Шаблон | Назначение |
|---|---|
| $V | целая часть полученного значения |
| $F1 ... $F5 | значение с плавающей точкой. От 1 до 5 - это число знаков после точки |
| $F,1 ... $F,5 | значение с плавающей запятой. От 1 до 5 - это число знаков после запятой |
| $S | номер выбранного состояния |
| $X | значение в формате HEX |
| $$ | символ "доллар" |
| $P | (только уровни) процент от максимального значения Уровня |
| $H | (только уровни) максимальное значение Уровня |
| $A | (только уровни) текущее значение минус минимальное значение Уровня |
| $L | (только уровни) минимальное значение Уровня |
| $R | (только уровни) размах Уровня: максимальное минус минимальное |
Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)
Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.
Принципы работы
- При нажатии на Button, кнопка берет значение из поля Value, указанное в диалоге привязки переменной, и отправляет оборудованию. Например, если указать в поле Value значение "100", то при нажатию на кнопку, диммируемая лампа включится с яркость 100%.
- Во время нажатия (удержания) кнопка принимает второе состояние, по отпусканию возвращается в первое. Такое поведение типично для кнопок клавиатуры смартфона.
пример ЗАГРУЗИТЬ
Label (лейбл)
Label - это графический элемент из одного состояния. Лейбл работает с командами точно так же, как обычная кнопка, но не отображает факт нажатия и не изменяет состояние при получении обратной связи. Например, лейбл может служить надписью к элементу (кнопке, уровню и др.) или группе элементов.
Параметры элемента

| Type | Label |
|---|---|
| PasswordID | Здесь можно выбрать 1 из 4 системных паролей, который запросит элемент Label при нажатии. Label не выполнит привязанные команды (PROGRAMMING), пока не будет введен пароль. Сами пароли нужно указать в настройках проекта. |
| Hold Time | Время (в мс), в течение которого нужно удерживать Label, чтобы сработало событие Hold. |
| Repeat time | Периодичность (в мс), с которой будет срабатывать событие Hold всё время, пока элемент удерживают. |
Привязка к оборудованию
Если хотите использовать лейбл как кнопку с одним состоянием, то перетащите переменную на кнопку, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command | Number - записать в переменную число. Можно переключить на String для отправки ASCII строки. |
| Event for Action | Событие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано указанное значение: * When pressed - отправить по нажатию на кнопку * When released - отправить при отпускании кнопки * When held - отправлять в цикле по удержанию * After holding - отправить по окончанию удержания |
| Value | Значение для записи в переменную. Кнопка отправляет всегда одно и то же, записанное в Value значение. |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах. |
| Assign feedback channel | (Create a feedback channel) Поставьте эту галочку, если нужно, чтобы кнопка не только записала значение в переменную, но и отображала значения, которые приходят от оборудования. |
Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:
- введите шаблон в текстовое поле элемента
- перетяните Feedback на элемент, "In Value":
СПИСОК ШАБЛОНОВ
| Шаблон | Назначение |
|---|---|
| $V | целая часть полученного значения |
| $F1 ... $F5 | значение с плавающей точкой. От 1 до 5 - это число знаков после точки |
| $F,1 ... $F,5 | значение с плавающей запятой. От 1 до 5 - это число знаков после запятой |
| $S | номер выбранного состояния |
| $X | значение в формате HEX |
| $$ | символ "доллар" |
| $P | (только уровни) процент от максимального значения Уровня |
| $H | (только уровни) максимальное значение Уровня |
| $A | (только уровни) текущее значение минус минимальное значение Уровня |
| $L | (только уровни) минимальное значение Уровня |
| $R | (только уровни) размах Уровня: максимальное минус минимальное |
Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)
Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.
Принципы работы
- При нажатии на лейбл, элемент не меняет состояние, но берет значение из поля Value, указанное в диалоге привязки переменной, и отправляет оборудованию.
- Элемент может отображать значения в текстовом формате, которые приходят от оборудования. Например, значения температуры или влажность воздуха.
Multistate Button (кнопка с анимацией)
Multistate Button - это анимированная кнопка, работает с командами точно так же, как обычная, но при нажатии (или получении обратной связи) воспроизводит анимацию. Например, анимированную кнопку можно использовать для привлечения внимания к элементу в оригинальном интерфейсе (отблески, показ слайдов прямо на кнопке).
Параметры элемента

| Type | Multistate Button |
|---|---|
| Feedback | Реакция кнопки на нажатия пользователя и на получение данных от оборудования: * None - визуально не реагирует на нажатие или получение обратной связи * Momentary – анимация при нажатии на кнопку. При отпускании кнопки, анимация пойдет в обратном порядке. Repeat: True - не остановится до отпускания кнопки * On – анимация в момент запуска проекта. Repeat: True - не остановится, пока запущен проект (бесконечный цикл) * Blink / Channel – анимация при получении любого ненулевого значения от оборудования. Repeat: True - не остановится до получения нуля * Invert Channel - анимация при получении нуля от оборудования. Repeat: True - не остановится до получения ненулевого значения |
| PasswordID | Здесь можно выбрать 1 из 4 системных паролей, который запросит кнопка при нажатии. Кнопка не выполнит привязанные к ней команды (PROGRAMMING), пока не будет введен пароль. Сами пароли нужно указать в настройках проекта |
| Time Up / Time Down | (десятые доли секунды) скорость воспроизведения анимации с первого по последний кадр и обратно |
| Repeat | Непрерывное повторение анимации, когда элемент находится в активном состоянии |
| Hold Time | Время (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold |
| Repeat time | Периодичность (в мс.), с которой будет срабатывать событие Hold всё время, пока кнопку удерживают |
| Default Value | Значение по умолчанию, которое будет присвоено кнопке при запуске приложения |
Привязка к оборудованию

| Параметр | Описание |
|---|---|
| Send to command | Number - записать в переменную число. Можно переключить на String для отправки ASCII строки. |
| Event for Action | Событие интерфейса, связанное с кнопкой. При возникновении события в переменную будет записано указанное значение: * When pressed - отправить по нажатию на кнопку * When released - отправить при отпускании кнопки * When held - отправлять в цикле по удержанию * After holding - отправить по окончанию удержания Одновременно можно использовать несколько событий. Например, отправить 100 по нажатию и 0 по отпусканию |
| Value | Значение для записи в переменную. Кнопка отправляет всегда одно и то же, записанное в Value значение |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах |
| Assign feedback channel | (Create a feedback channel) Поставьте галочку, если нужно, чтобы кнопка не только записала значение в переменную, но и изменила состояние при получении данных из этой же переменной. Полученное значение будет влиять на состояние кнопки (вкл/выкл) и воспроизведение анимации |
Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.
Принципы работы
- В бесконечном цикле (Feedback: On, Repeat: True ) кнопка будет воспроизводить анимацию, сменяя свои состояния через заданный промежуток времени (Time Up / Time Down). Примером такой кнопки может служить анимация отблесков на логотипе компании.
- Если настроить активацию кнопки по удержанию (Feedback: Momentary, Repeat: True) , то смена состояний кнопки будет повторяться пока мы нажимаем на неё и остановится когда отпустим. Например, такую кнопку можно использовать для анимирования жалюзи / штор, если открытие / закрытие происходит по удержанию кнопки.
- Если настроить активацию кнопки по получению от оборудования не нулевых значений (Feedback: Blink / Channel, Repeat: True), то смена состояний кнопки начнется при получении от оборудования значения не равного "0", например 1, и остановится при получении нуля. Подобную кнопку можно использовать для отображения скорости вращения вентилятора.
пример ЗАГРУЗИТЬ
Trigger Button (кнопка триггер)
Trigger Button - это кнопка - триггер, которая позволяет отправлять попеременно 2 произвольных значения, указанных в Value 1 и Value 2. Благодаря каналу обратной связи (Feedback), триггер автоматически принимает соответствующее состояние и при нажатии отправляет значение, противоположное текущему. Триггер нельзя настроить на работу с 3 и более значениями. Примером такой кнопки могут служить кнопки включения/ выключения света, теплого пола, кондиционера и др.
Параметры элемента

| Type | Trigger Button |
|---|---|
| Feedback | Реакция на нажатия и получение данных от оборудования: * None - кнопка визуально не реагирует на нажатие или получение обратной связи * Channel - кнопка переключается на состояние on при нажатии и возвращается в off при повторном нажатии, отображает обратную связь * Invert Channel - кнопка переключается на состояние off при нажатии и возвращается в on при повторном нажатии, отображает обратную связь инверсно (false = включена, true = выключена) * Channel Only - кнопка переключается на состояние on только при совпадении значения из канала обратной связи со значением, указанным в Value 2. Кнопка переключается на состояние off только при совпадении значения из канала обратной связи со значением, указанным в Value 1. При содержании канала обратной связи, не совпадающем с Value 1/Value 2- кнопка принимает значение, указанное в Undefined Value. * Тип фидбека Channel Only нельзя установить, если не создана связь с каналом обратной связи устройства* |
| Value 1 / Value 2 | Значения, которые отправляются переменной при нажатии на триггер |
| Default Value | Значение по умолчанию, которое будет присвоено кнопке при запуске приложения |
| Undefined Value | Значение по умолчанию, которое будет присвоено кнопке при получении значения, отличного от Value 1/Value 2 (активно только для типа Channel Only): * On – переводит кнопку в состояние On * Off – переводит кнопку в состояние Off * None – состояние кнопки не изменяется |
| Hold Time | Время (мс), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold |
| Repeat time | Периодичность (мс), с которой будет срабатывать событие Hold всё время, пока кнопку удерживают |
| Send Value By | Отправка значения по событию: * Send Value by Press - при нажатии * Send Value by Release - при отпускании * Send Value by Hold - при удержании |
Привязка к оборудованию
Перетащите переменную на триггер, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command | Отправить переменной значение Value, взятое из графического элемента (Trigger Value 1 или Value 2, в зависимости от текущего состояния триггера) |
| Event for Action | Событие интерфейса, связанное с кнопкой. При возникновении события в переменную будет записано указанное значение: * When pressed – отправить по нажатию * When released – отправить при отпускании * When held – отправлять в цикле по удержанию * After holding – отправить по окончанию удержания Одновременно можно использовать только одно событие для триггера |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать |
| Assign feedback channel | (Create a feedback channel) Поставьте галочку, чтобы триггер знал своё состояние и менял его при получении данных из переменной и при нажатии |
Теперь переменная связана с триггером. Посмотреть все связи кнопки можно в окне Programming.
Принципы работы
- Кнопка считывает значение из канала обратной связи переменной (Feedback) и выполняет запрограммированное действие:
- None. Кнопка визуально не реагирует на нажатие.
- Channel. Кнопка переключается на состояние on при нажатии. При повторном нажатии - возвращается в состояние off.
- Invert Channel. Принцип инверсии действиям при Channel. Кнопка переключается на состояние off при нажатии. При повторном нажатии - возвращается в состояние on .
- Channel Only - кнопка переключается на состояние on только при совпадении значения из канала обратной связи со значением, указанным в Value 2. Кнопка переключается на состояние off только при совпадении значения из канала обратной связи со значением, указанным в Value 1. При содержании канала обратной связи, не совпадающем с Value 1/Value 2- кнопка принимает значение, указанное в Undefined Value.
- Кнопку можно настроить как Radio Buttons. В этом случае мы объединяем несколько элементов Trigger Button под одной логикой. Нажимая на один из группы этих элементов, мы переводим все остальные элементы в неактивное состояние. Такое поведение кнопок часто можно увидеть при установке флажка одному из элементов списка.
пример ЗАГРУЗИТЬ
Radio Buttons
Радиокнопка (Radio Button) - элемент интерфейса, который позволяет выбрать одну из предварительно настроенных опций. В iRidium радиокнопки не выделены как отдельный тип элемента, вы можете настроить их, взяв за основу Trigger Button. Задача радикнопкок: отправлять переменным значения с разных кнопок, из которых можно выбрать только одну.
Настройки и поведение радиокнопки зависят от того, с какой переменной оборудования вы работаете. Приведем несколько ситуаций и примеров настройки.
вариант 1. Радиокнопки для управления одной переменной с возможностью получения обратной связи. Записывают значения в одну переменную; оборудование возвращает текущее состояние этой переменной.
- Настройте элементы Trigger Button (см. изображение) по числу радиокнопок. В полях
Value 1иValue 2укажите одинаковые значения, соответствующие тем, что каждая кнопка должна отправлять управляемой переменной. В поле Feedback укажите Invert Channel. - Перетяните команду управления переменной на все радиокнопки. Выберите событие
When pressedилиWhen releasedдля отправки, обязательно поставьте галочкуAssign feedback channelдля отображения статуса переменной.

- настроенная кнопка перейдет в State 2 только когда переменная примет значение, указанное в Value 1 или 2.
вариант 2. Радиокнопки для управления переменными с возможностью получения обратной связи. Записывают значения вкл\выкл в разные переменные; оборудование возвращает текущее состояние этих переменных. Переменные не синхронизированы оборудованием автоматизации для работы в режиме радиокнопок (нужно выключать неактивные режимы на стороне iRidium):
- Настройте элементы Type:
Trigger Button, Feedback:Channel, укажитеValue 1= неактивное,Value 2= активное состояние переменной (например 0/1, 0/100). - Перетяните команды управления переменными на графические элементы. На примере первого элемента группы:
- Отправьте нули во все переменные, которые входят в группу радиокнопок, чтобы отключить текущий активный режим. Для этого в диалоге отправки команды выберите Action:
Send Number. - Добавьте задержку Delay(50) мс через редактор макросов события Press, чтобы дать оборудованию время на отключение активного режима.
- Перетяните на элемент команду управления переменной, которая соответствует радиокнопке. Оставьте Action:
Value from object. Value на событииWhen pressed(или When released), обязательно поставьте галочкуAssign feedback channel.

Если режимы работы оборудования синхронизируются на стороне оборудования автоматизации (при включении одного из режимов остальные автоматически выключаются), вам не нужно отпрвлять нули в отключаемые переменные. Выполните только подпункт 2.3 настроек.
Up/Down Button (кнопка прирост/убывание)
Up/Down button — используется для последовательного изменения значения переменной устройства на фиксированную величину по нажатию или удержанию. Работает, только если у устройства есть канал обратной связи. Например, чтобы по каждому нажатию на кнопку увеличивать/уменьшать яркость света на 15, а по удержанию: на 25.
Параметры элемента

| Type | Up/Down Button |
|---|---|
| Feedback | Реакция кнопки на нажатия пользователя и на получение данных от оборудования: * Momentary – кнопка переключится на состояние on при нажатии и вернется на off при отпускании, не отображает обратную связь * None – визуально не реагирует на нажатие или получение обратной связи |
| Step | Шаг увеличения / уменьшения (может быть больше либо меньше нуля) |
| Limit | Предел увеличения / уменьшения (минимальный предел для отрицательного шага, максимальный для положительного) |
| Hold Value | Шаг увеличения / уменьшения при срабатывании события Hold. Команду управления оборудованием можно одновременно привязать на Press и Hold, тогда значение будет прирастать при удержании кнопки |
| Send step by | Режим работы счетчика кнопки: * Press – изменяет счетчик по нажатию на кнопку, независимо от сработанного события * Default – изменяет счетчик в зависимости от указанного события в окне Programming (только для Press и Release) |
| Hold time (ms) | Время удержания кнопки, чтобы сработало событие Hold |
| Repeat time (ms) | Частота повторения событий Hold |
Привязка к оборудованию
Перетащите переменную на кнопку, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command Value from object | Отправить переменной Value, рассчитанное как сумма текущего значения и величины шага. |
| Event for Action | Событие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано рассчитанное значение Value: * When pressed – отправить по нажатию * When released – отправить при отпускании * When held – отправлять в цикле по удержанию * After holding – отправить по окончанию удержания Можно использовать два события одновременно |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать |
| Assign feedback channel | (Create a feedback channel) Поставьте эту галочку, если нужно, чтобы значение Value рассчитывалось в соответствии с актуальным состоянием переменной |
Теперь переменная связана с Up / Down кнопками. Посмотреть все связи кнопки можно в окне Programming.
Принципы работы
- При нажатии Up/Down button, кнопка берет значение из канала обратной связи переменной. Например, лампа горит на 45%, и значение в канале тоже 45.
- После этого прибавляется к значению из канала - значение из поля «UpDownStep». Например, он равен «-10». 45 +«-10» = 35.
- Полученное значение (равное 35), отправляется в канал, привязанный к кнопке.
- При удержании, к значению из канала прибавляется значение из поля «Up Down Hold Step». Например, он равен «-25». 45 +«-25» = 15.
- Если отправляемое значение больше, чем значение в поле «Up Down Limit», то отправляется значение из этого поля. После этого кнопка перестает отправлять данные до тех пор, пока значение в канале обратной связи не изменится.
пример ЗАГРУЗИТЬ
Level (уровень)
Level - графический элемент, который по нажатию или перемещению ползунка уровня, отправляет в переменную число, соответствующее текущему положению ползунка. Например, при установке на уровне значения 25, - диммируемая лампа включится с яркостью 25%.
- Работает, только если у устройства есть канал обратной связи.
Параметры элемента

| Type | Level |
|---|---|
| Feedback | Channel – ползунок перемещается вручную или при получении данных Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до момента отпускания |
| Min / Max | Пределы регулирования уровня: определяют диапазон значений, в котором перемещается ползунок |
| Direction | Положение уровня: Vertical – ползунок перемещается по вертикальной оси Horizontal – ползунок перемещается по горизонтальной оси |
| Range | Тип отправляемых значений: Integer – целочисленные значения Float – дробные значения |
| Invert | Меняет местами нижнюю и верхнюю часть уровня (при вертикальном уровне регулирование будет идти сверху вниз вместо снизу вверх) |
| Slider1 Cursor | Выбор курсора для уровня: None – не использовать курсор Custom – использование курсора из личной галереи Стандартные – выбор курсора из предложенного списка |
| Slider1 Cursor Color | Цвет курсора уровня |
| Slider1 Cursor Image | Загрузка изображения для курсора уровня (только для Slider1 Cursor – Custom) |
| Slider1 Cursor Scale | Пропорции изображения для курсора уровня (только для Slider1 Cursor – Custom): Proportional – установить изображение пропорционально размеру уровня None – использовать исходные размеры изображения |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command Value from object | Отправить переменной значение Value, взятое как текущее положения ползунка уровня в диапазоне Min...Max. |
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение: When pressed – отправить Value по нажатию When released – отправить Value при отпускании When moved – отправлять все промежуточные значения Value при перемещении ползунка Можно использовать все три события одновременно |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах. * Рекомендуется добавлять команду Delay (мин. 100 мс, по умолчанию 500 мс) перед командой на событии Move, чтобы снизить нагрузку на оборудование (Move срабатывает не чаще, чем раз в 100 мс) |
| Assign feedback channel | (Create a feedback channel) Галочка нужна, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной |
Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:
- введите шаблон в текстовое поле элемента,
- перетяните Feedback на элемент, "In Value".
СПИСОК ШАБЛОНОВ
| Шаблон | Назначение |
|---|---|
| $V | целая часть полученного значения |
| $F1 ... $F5 | значение с плавающей точкой. От 1 до 5 - это число знаков после точки |
| $F,1 ... $F,5 | значение с плавающей запятой. От 1 до 5 - это число знаков после запятой |
| $S | номер выбранного состояния |
| $X | значение в формате HEX |
| $$ | символ "доллар" |
| $P | (только уровни) процент от максимального значения Уровня |
| $H | (только уровни) максимальное значение Уровня |
| $A | (только уровни) текущее значение минус минимальное значение Уровня |
| $L | (только уровни) минимальное значение Уровня |
| $R | (только уровни) размах Уровня: максимальное минус минимальное |
Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)
Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.
Принципы работы
Уровень может служить как для управления элементом, так и для отображения значений из фидбека. Например, по нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию. Установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%. При физическом диммировании лампы с оборудования - значение приходит в фидбек и отображается на уровне.
пример ЗАГРУЗИТЬ
Multistate Level (уровень с анимацией)
Multistate Level - графический элемент более чем из 2 состояний. Нажатие на уровень отправляет в переменную число, соответствующее текущему положению ползунка. Но ползунка, как такового, нет. Вместо него уровень показывает один из State - состояние, которое соответствует выбранному значению или диапазону значений. Каждому State анимированного уровня можно присвоить свое изображение, текст, цвет. Например, такой уровень можно использовать для отображения состояния подключения к оборудованию (online, offline, waiting for connection и др.).
Параметры элемента

| Type | Multistate Level |
|---|---|
| Feedback | Реакция уровня на нажатия пользователя и получение данных от оборудования: * Momentary – состояния меняются при нажатии и получении данных * Drag Lock – состояния меняются при нажатии и получении данных, но при удержании игнорируются входящие данные до момента отпускания |
| Min / Max | Пределы регулирования уровня: определяют диапазон значений, в котором работает уровень |
| Direction | Положение уровня: * Vertical – ползунок перемещается по вертикальной оси * Horizontal – ползунок перемещается по горизонтальной оси |
| Invert | Меняет местами нижнюю и верхнюю часть уровня — смена кадров будет происходить от последнего к первому |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command Value from object | Отправить переменной значение Value, взятое как текущее положения ползунка уровня в диапазоне Min...Max. |
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение: * When pressed – отправить Value по нажатию * When released – отправить Value при отпускании * When moved – отправлять все промежуточные значения Value при перемещении ползунка Можно использовать все три события одновременно |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах. * Добавляйте команду Delay (минимум 100 мс, по умолчанию 500 мс) перед командой на событии Move, чтобы уменьшить нагрузку на оборудование (Move будет срабатывать не чаще, чем раз в 100 мс) |
| Assign feedback channel | (Create a feedback channel) Поставьте эту галочку, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной |
Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.
Принципы работы
- Уровень берет значение из канала обратной связи переменной и отображает состояние, номер которого совпадает со значением этой переменной. Например, лампа горит на 45%, значение в канале тоже 45, уровень отображает State 45.
- Если максимальное количество значений уровня больше количества состояний, то уровень берет процентное соотношение значений и отображает соответственное состояние. Например, уровень принимает значения от 0 до 100, количество состояний 50. При получении значения 40 из канала обратной связи переменной - уровень отобразит State 20.
- По нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию. Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.
пример ЗАГРУЗИТЬ ::
Circular level (круговой уровень)
Circular level - это разновидность уровня с перемещением ползунка по круговой шкале. По нажатию или перемещению ползунка уровня, отправляет в переменную число, соответствующее текущему положению ползунка. Работает, только если у устройства есть канал обратной связи. Например, при установке на уровне значения 25, - диммируемая лампа включится с яркостью 25%.
Параметры элемента

| Type | Circular Level |
|---|---|
| Feedback | * Momentary – ползунок перемещается вручную или при получении данных. * Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до момента отпускания. |
| Level Mode | Режим кругового уровня: * Simple – с одним ползунком и активной зоной * Double – с двумя ползунками * Triple – с тремя ползунками * Looped – бесконечный |
| Level Min Angle / Level Max Angle | Пределы изменения угла поворота ползунка в градусах: допустимые значения от 0 до 360, начало и условное направление отсчёта угла - как у стрелок часов. Вы можете задать значения "Level Min Angle" / "Level Max Angle" одинаковыми или равными 0 и 360, тогда круговой уровень будет вращаться без ограничения угла. |
| Min / Max | Пределы изменения выходной регулируемой величины уровня. |
| Invert | Направление изменения уровня: * False – по часовой стрелке * True – против часовой стрелки |
| Range | Тип диапазона: * Integer – целочисленный * Float – с плавающей запятой |
| Active Zone | Размер активной зоны в процентах (0–100): * 100 – вся площадь кругового уровня активна * 0 – активной зоны нет, только зона ползунка |
| DrawFullFirstState | Отрисовка неактивного сектора кругового уровня: * False – не отрисовывается в неактивном секторе * True – отрисовывается целиком (Empty state в неактивном секторе) |
| Slider1 Cursor | Внешний вид ползунка. |
| Slider1 Cursor Color | Цвет ползунка. |
| Slider1 Cursor Image | Изображение ползунка в галерее проекта. Ползунок должен быть изображён вертикально вверх. Свойство доступно при Slider1 Cursor = Custom. |
| Slider1 Offset | Смещение изображения ползунка в пикселях вдоль оси от центра к верхней точке. Всегда неотрицательное значение. |
| Slider1 Cursor Scale | Подгонка изображения ползунка под размер кругового уровня: * None – с сохранением исходных размеров * Proportional – изменить размер пропорционально размеру кругового уровня |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command Value from object | Отправить переменной значение Value, взятое как текущее положения ползунка уровня в диапазоне Min...Max. |
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события, в переменную будет записано указанное значение: * When pressed – отправить Value по нажатию * When released – отправить Value при отпускании * When moved – отправлять все промежуточные значения Value при перемещении ползунка |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать. * Добавляйте команду Delay (минимум 100 мс., по умолчанию 500мс.) перед командой на событии Move, чтобы меньше нагружать оборудование (с командой Delay, Move будет срабатывать не чаще, чем раз в 100 мс). Можно использовать все три события одновременно. |
| Assign feedback channel | (Create a feedback channel) Поставьте эту галочку, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной. |
Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.
Принципы работы
-
Уровень берет значение из канала обратной связи переменной. Например, лампа горит на 45%, и значение в канале тоже 45.
-
По нажатию или перемещению ползунка уровня по круговой оси - значение с уровня передается оборудованию. Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.
-
Круговой уровень имеет несколько режимов настройки:
- Simple - простой круговой уровень, может использоваться как уровень громкости, освещенности и т.д.
- Looped - бесконечный круговой уровень. Уровень удобно использовать, если нужно более точно выставить значение. Например, при настройке громкости (значения уровня от 0 до 100), при значении 60 музыка играет тихо, а при 65 - очень громко, 62 - оптимальное значение. При установке промежуточных значений на простом круговом уровне могут возникнуть трудности. В таком случае можно использовать бесконечный уровень.
- Double - уровень с двумя значениями. Может использоваться, например, для настройки датчика температуры обогрева помещения. При этом одно значение будет уставкой датчика, а второе - текущей температурой в помещении. Обогрев будет работать пока не достигнет предельного отклонения от температуры уставки, а когда достигнет ее - отключится.
- Triple - уровень с тремя значениями. Пример использования этого режима такой же как и в режиме Double, но в этом режиме можно задать 3 значения: минимальная, максимальная и текущая температура в помещении.
пример ЗАГРУЗИТЬ


Режимы кругового уровня
Simple - простой круговой уровень, может использоваться как уровень громкости, освещенности и т.д.

Looped - бесконечный круговой уровень.
Уровень удобно использовать, если нужно более точно выставить значение. При выборе этого режима появляется свойство “Changing Angle”, которое устанавливает количество оборотов уровня, необходимое для достижения максимального значения.
Например, при настройке громкости (значения уровня от 0 до 100), при значении 60 музыка играет тихо, а при 65 - очень громко, 62 - оптимальное значение. При установке промежуточных значений на простом круговом уровне могут возникнуть трудности. В таком случае можно использовать бесконечный уровень.

Для этого выбираем соответствующий режим кругового уровня и ставим в свойстве “Changing Angle” удобное для нас значение (2 - один оборот=50, 4 - один оборот=25 и т.д.). Таким образом можно будет легко выставить значение 62.
Double - уровень с двумя значениями.

Может использоваться, например, для настройки датчика температуры обогрева помещения. При этом одно значение будет уставкой датчика, а второе - текущей температурой в помещении. Обогрев будет работать пока не достигнет предельного отклонения от температуры уставки, а когда достигнет ее - отключится.
Для этого в созданном уровне необходимо:
- Задать режим Double.

-
Одному из значений слайдера в параметре Hit установить значение Pass Through чтобы в дальнейшем пользователь не мог им управлять. Данное значение будет отображать текущую температуру.
-
Создать скрипт. В данном примере мы используем устройство Modbus.
var point;
IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetItem("Page 1").GetItem("Circle level"), function(){
data = IR.GetItem("Page 1").GetItem("Circle level").Value2;
});
var Modbus = IR.GetDevice("Modbus TCP");
IR.AddListener(IR.EVENT_CHANNEL_SET, Modbus, function() {
var temperature = IR.GetVariable("Drivers.Modbus TCP.Feedback 1");
IR.GetItem("Page 1").GetItem("Circle level").Value1 = temperature;
if(temperature>=point+2){
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 0);
}
if(temperature<=point-2) {
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 1);
}
});
Triple - уровень с тремя значениями.

Пример использования этого режима такой же как и в режиме Double, но в этом режиме можно задать 3 значения: минимальная, максимальная и текущая температура в помещении. Следовательно, обогрев будет включаться при установленной минимальной температуре и отключаться при достижении максимальной. Таким образом можно полностью автоматизировать процесс поддержания температуры в помещении.
Настройка данного режима уровня очень похожа на режим Double:
- Задать режим Triple.
- Одному из значений слайдера в параметре Hit установить значение Pass Through чтобы в дальнейшем пользователь не мог им управлять. Данное значение будет отображать текущую температуру.
- Создать скрипт. В данном примере мы используем устройство Modbus.
var min;
var max;
IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetItem("Page 1").GetItem("Circle level"), function(){
min = IR.GetItem("Page 1").GetItem("Circle level").Value1;
max = IR.GetItem("Page 1").GetItem("Circle level").Value2;
});
var Modbus = IR.GetDevice("Modbus TCP");
IR.AddListener(IR.EVENT_CHANNEL_SET, Modbus, function() {
var temperature = IR.GetVariable("Drivers.Modbus TCP.Feedback 1");
IR.GetItem("Page 1").GetItem("Circle level").Value3 = temperature;
if(data>=max){
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 0);
}
if(data<=min) {
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 1);
}
});
Multistate circular level (круговой уровень с анимацией)
Multistate circular level - круговой уровень, состоящий более чем из 2 состояний. Изменение значения уровня (вращение) отправляет в переменную число, соответствующее текущему положению ползунка. Но ползунка, как такового, нет. Вместо него уровень показывает один из State - состояние, которое соответствует выбранному значению или диапазону значений. Каждому State анимированного уровня можно присвоить свое изображение, текст, цвет. Такой уровень можно использовать для отображения температуры термостата, яркости света, уровня громкости аудиосистемы и др.
Параметры элемента
-8ea0055d36eee7581de0150fd7542fcb.png)
-3e98a7a64ed6a8f57e489c1f8f702b07.png)
| Type | Multistate Circular Level |
|---|---|
| Feedback | Реакция уровня на пользовательские действия и получение данных * Momentary – ползунок перемещается вручную или при получении данных * Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до отпускания |
| LevelMode | Режим кругового уровня * Simple – с одним ползунком и активной зоной * Double – с двумя ползунками * Triple – с тремя ползунками * Looped – бесконечный |
| Level Min Angle / Level Max Angle | Пределы изменения угла поворота ползунка в градусах: допустимые значения от 0 до 360, начало и условное направление отсчёта угла - как у стрелок часов. Вы можете задать значения Level Min Angle / Level Max Angle одинаковыми или равными 0 и 360, тогда круговой уровень будет вращаться без ограничения угла. |
| Min / Max | Пределы изменения выходной регулируемой величины уровня |
| Invert | Направление изменения уровня * False – по часовой стрелке * True – против часовой стрелки |
| Range | Тип диапазона * Integer – целочисленный * Float – с плавающей запятой |
| Active Zone | Размер активной зоны в процентах (0–100) * 100 – вся площадь кругового уровня активна * 0 – активной зоны нет, только зона ползунка(ов) |
| DrawFullFirstState | Отрисовка неактивного сектора кругового уровня * False – неактивный сектор не отрисовывается * True – отрисовывается полностью (Empty state в неактивной зоне) |
| Slider1 Cursor | Внешний вид ползунка |
| Slider1 Cursor Image | Изображение ползунка из галереи проекта (курсор должен быть направлен вертикально вверх) Доступно при выборе Slider1 Cursor = Custom |
| Slider1 Offset | Смещение изображения ползунка вдоль оси в пикселях от центра к верхней точке Всегда ≥ 0 |
| Slider Cursor Scale | Подгонка изображения ползунка под размер кругового уровня * None – сохранять исходные размеры * Proportional – масштабировать пропорционально размеру уровня |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Send to command Value from object | Отправить переменной значение Value, взятое как текущее положения ползунка уровня в диапазоне Min ...Max. |
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение * When pressed – отправить Value по нажатию * When released – отправить Value при отпускании * When moved – отправлять все промежуточные значения Value при перемещении ползунка |
| Delay | Задержка отправки значения после активации события. Можно включить и указать время в миллисекундах. Задержка добавляется в меню Programming и может быть изменена позже *Добавляйте команду Delay (минимум 100 мс., по умолчанию 500мс.) перед командой на событии Move, чтобы меньше нагружать оборудование (с командой Delay, Move будет срабатывать не чаще, чем раз в 100 мс). Можно использовать все три события одновременно. |
| Assign feedback channel | (Create a feedback channel) Галочка для того, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной |
Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.
Принципы работы
- Multistate circular level берет значение из канала обратной связи переменной и отображает состояние, номер которого совпадает со значением этой переменной. Например, лампа горит на 45%, значение в канале тоже 45, уровень отображает State 45.
- Если максимальное количество значений уровня больше количества состояний, то уровень берет процентное соотношение значений и отображает соответственное состояние. Например, уровень принимает значения от 0 до 100, количество состояний 50. При получении значения 40 из канала обратной связи переменной - уровень отобразит State 20.
- По нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию. Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.
Пример:
Joystick (джойстик)
Joystick - графический элемент из 1 состояния с курсором. Имеет координаты X и Y - текущее положение курсора джойстика. Диапазон движения курсора ограничен минимальным и максимальным значениями. Позволяет получить цвет под курсором для управления RGB освещением.
Параметры элемента

| Type | Joystick |
|---|---|
| Feedback | Реакция на события * Momentary – курсор перемещается пользователем |
| MinX ... MaxX / MinY ... MaxY Диапазон перемещения курсора по осям X и Y | – |
| Range | Тип диапазона * Integer – целочисленный * Float – с плавающей запятой |
| InvertX / InvertY | Минимум и максимум по осям X и Y меняются местами |
| Slider1 Cursor | Внешний вид курсора |
| Slider1 Cursor Color | Цвет курсора |
Привязка к оборудованию
Джойстик можно связать с переменной напрямую или через скрипт. Обычно используется скрипт для получения цвета под курсором и отправки составляющих цвета в каналы управления RGB лентой.
RGB светодиодные ленты управляются с помощью DMX контроллеров и имеют одну из конфигураций:
- Red, Green, Blue - три канала для управления цветом ленты. Уменьшение яркости достигается уменьшением яркости отдельных каналов цвета.
- Red, Green, Blue, Alpha - четыре канала для управления цветом и яркостью ленты.
вариант 1. Управлять RGB лентой с помощью трех (четырех) элементов Level.
В проекте создаются 3 (4) переменные Unsigned 8-bit (Subtupe: VALUE). Переменные управляются в диапазоне 0...255, увеличение значения в канале соответствует увеличению яркости соответствующего цвета.
вариант 2. Управлять RGB лентой с помощью палитры.
В качестве палитры можно использовать любой цветной элемент - перемещая палец по элементу, вы будете отправлять оборудованию команду установки выбранного цвета.
Это требует добавления в проект специального скрипта - библиотеки RGB. Скрипт необходимо добавить только 1 раз, далее можно использовать его для управления RGB лентами любых встроенных драйверов iRidium.
2.1. Создайте палитру и вспомогательные элементы. В качестве палитры можно использовать любое цветное изображение.
- Настройте палитру как Joystick с диапазоном регулирования 0...100 по Х и Y;
- Настройте неактивный элемент Button, который будет отображать выбранный на палитре цвет;
- Если нужно, настройте активные кнопки Button, которые будут пошагово изменять яркость ленты.

2.2. Скачайте файл RGB_Library.js
Этот файл обеспечивает управление цветом с помощью JavaScript. Добавьте файл в проект визуализации: откройте проект в iRidium Studio, нажмите клавишу , выберите пункт ( + ) "Add Script From File".
2.3. Создайте пустой файл скрипта: ( + ) "New Script", чтобы добавить в него описание вашей RGB палитры: В файле скрипта опишите палитру и элемент для отображения выбранного цвета:
///////// Copy this function to make one more RGB palette ///////
RGB_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
255, // Top limit for RGB channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker 1"), // Item "Color Picker"
/////// optional parameters ///////////////////////////
IR.GetItem("Page 1").GetItem("Item Display 1"), // Item "Display"
)
Расширенный вариант содержит кнопки управления яркостью:
///////// Copy this function to make one more RGB palette ///////
RGB_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
255, // Top limit for RGB channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker 1"), // Item "Color Picker"
/////// optional parameters ////////////////////////////
IR.GetItem("Page 1").GetItem("Item Display 1"), // Item "Display"
IR.GetItem("Page 1").GetItem("Up 1"), // Item "Up"
IR.GetItem("Page 1").GetItem("Down 1"), // Item "Down"
10 // Increment step for "Up" and "Down"
)
В описании укажите где находится палитра, и какому оборудованию отправляет данные:
- IR.GetDevice("Driver") - имя драйвера, которому вы будете отправлять команды RGB. Скопируйте имя драйвера на вкладке Devices > Name ;
- "Channel Red", "Channel Green", "Channel Blue" - имена переменных (Commands), которые отвечают за управление красной, зеленой, и синей составляющими цвета. Скопируйте имена на вкладке Device > Commands > Name . Имена Commands должны совпадать с именами Feedbacks, откуда приходит информация о текущем цвете RGB ленты.
HDL-Buspro, Domintell- имеют особый способ записи имен. Для них нужно указать имя устройства в сети:имя канала, например "Dimmer in Bedroom:Channel 1";
- 255 - максимальное значение яркости для каждого цвета. Для большей части оборудования яркость регулируется от 0 до 255, но есть драйверы, которые управляют яркостью цвета в диапазоне 0...100 (например, HDL). Для HDL-Buspro укажите значение 100 в этой строке настроек;
- IR.GetItem("Page 1").GetItem("Item Color Picker 1") - имя страницы ("Page 1") и элемента на ней ("Item Color Picker 1") который вы будете использовать как палитру;
- IR.GetItem("Page 1").GetItem("Item Display 1") - имя страницы ("Page 1") и элемента на ней ("Item Display 1") который вы будете использовать для отображения цвета, выбранного на палитре;
- IR.GetItem("Page 1").GetItem("Up 1") - имя страницы ("Page 1") и элемента на ней ("Up 1") который будет при нажатии увеличивать яркость выбранного цвета;
- IR.GetItem("Page 1").GetItem("Down 1") - имя страницы ("Page 1") и элемента на ней ("Down 1") который будет при нажатии уменшать яркость выбранного цвета;
- 10 - значение, на которое увеличится/уменьшится яркость выбранного цвета при нажатии кнопок Up и Down.
2.4. Нажмите "ОК" чтобы сохранить описание палитры, запустите Эмулятор, чтобы проверить ее работу.
Ошибки, которые могут возникать при некорректном описании палитры, отображаются в окне лога (F4).
вариант 3. Управлять RGBW лентой с помощью палитры и левела.
В качестве палитры можно использовать любой цветной элемент - перемещая палец по элементу, вы будете отправлять оборудованию команду установки выбранного цвета. Для управления яркостью - используйте графический элемент Level.
Это требует добавления в проект специального скрипта - библиотеки RGBW. Скрипт необходимо добавить только 1 раз, далее можно использовать его для управления RGBW лентами любых встроенных драйверов iRidium.
3.1. Создайте палитру и вспомогательные элементы (левел, кнопку выключения и др.). В качестве палитры можно использовать любое цветное изображение.
- Настройте палитру как Joystick с диапазоном регулирования 0...100 (255) по Х и Y;
- Настройте элемент Level для изменения яркости освещения с диапазоном регулирования 0...100 (255);
- Настройте неактивный элемент Button, который будет отображать выбранный на палитре цвет;
- Если нужно, настройте активные кнопки Button, которые будут пошагово изменять яркость ленты.

3.2. Скачайте файл RGBW Library.js
Этот файл обеспечивает управление цветом с помощью JavaScript. Добавьте файл в проект визуализации: откройте проект в iRidium Studio, нажмите клавишу , выберите пункт ( + ) "Add Script From File".
3.3. Создайте пустой файл скрипта: ( + ) "New Script", чтобы добавить в него описание вашей RGBW палитры: В файле скрипта опишите палитру и элемент для отображения выбранного цвета:
///////// Copy this function to make one more RGBW palette ///////
RGBW_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
"Channel White", // Name of White Channel
255, // Top limit for RGBW channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker"), // Item "Color Picker"
IR.GetItem("Page 1").GetItem("Item White Level"), // Item "White Level"
/////// optional parameters for feedback color and white channel value ///////
IR.GetItem("Page 1").GetItem("Color Display"), // Item "Color Display"
IR.GetItem("Page 1").GetItem("Item White Level") // Item "White Display"
);
В описании укажите где находится палитра, и какому оборудованию отправляет данные:
- IR.GetDevice("Driver") - имя драйвера, которому вы будете отправлять команды RGBW. Скопируйте имя драйвера на вкладке Devices > Name ;
- "Channel Red", "Channel Green", "Channel Blue", "Channel White" - имена переменных (Commands), которые отвечают за управление красной, зеленой, синей и белой (яркость) составляющими цвета. Скопируйте имена на вкладке Device > Commands > Name . Имена Commands должны совпадать с именами Feedbacks, откуда приходит информация о текущем цвете RGBW ленты.
HDL-Buspro, Domintellи другие драйвера типа network - имеют особый способ записи имен. Для них нужно указать имя устройства в сети:имя канала, например "Dimmer in Bedroom:Channel 1";
- 255 - максимальное значение яркости для каждого цвета. Для большей части оборудования яркость регулируется от 0 до 255, но есть драйверы, которые управляют яркостью цвета в диапазоне 0...100 (например, HDL). Для HDL-Buspro укажите значение 100 в этой строке настроек;
- IR.GetItem("Page 1").GetItem("Item Color Picker 1") - имя страницы ("Page 1") и элемента на ней ("Item Color Picker 1") который вы будете использовать как палитру;
- IR.GetItem("Page 1").GetItem("Item Display 1") - имя страницы ("Page 1") и элемента на ней ("Item Display 1") который вы будете использовать для отображения цвета, выбранного на палитре;
- IR.GetItem("Page 1").GetItem("Slider Level 1") - имя страницы ("Page 1") и элемента на ней ("Slider Level 1") который будет при изменении значения уровня регулировать яркость выбранного цвета;
3.4. Нажмите "ОК" чтобы сохранить описание палитры, запустите Эмулятор, чтобы проверить ее работу.
Ошибки, которые могут возникать при некорректном описании палитры, отображаются в окне лога (F4).
Принципы работы
- По нажатию или перемещению ползунка джойстика - выбранный цвет делится на 3 основных: красный, зеленый и синий. Например, фиолетовый цвет это сочетание синего и красного.
- Полученные значения отправляются соответственно в 3 канала: Red, Green, Blue, а на оборудование приходит тот цвет, который мы изначально выбирали. Таким образом, мы можем включить свет или подсветку в любом доступном цвете, ограниченным разнообразием палитры.
- Объединив 3 канала обратной связи, мы можем отобразить текущее значение цвета на дисплее.
пример ЗАГРУЗИТЬ
Edit Box (поле ввода)
Edit Box - элемент для ввода данных с клавиатуры. Введенные данные остаются на элементе, откуда их можно "забрать" - отправить оборудованию или обработать в скрипте. Поле ввода чаще всего используется для ввода пароля или других данных с клавиатуры.
Параметры элемента

| Type | Edit Box |
|---|---|
| Feedback | Реакция на нажатие * Momentary – поле ввода подсвечивается при получении фокуса |
| Hold Time | Время (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold |
| PasswordChar | Символ, на который будет визуально заменен любой текст, введенный в EditBox Используется для скрытия введенных паролей. Получить исходный текст можно из свойства .Text |
Привязка к оборудованию
Поле ввода можно связать с переменной напрямую или через скрипт.

При нажатии на поле ввода, выполните команду открытия клавиатуры:
- Programming > Press > «Show Keyboard [keyboard_type]».
По событию Enter, передайте данные из Editbox элементу или драйверу.
Пример работы:
- Press - открывается виртуальная клавиатура смартфона (планшета)
- Enter - поле ввода отправляет текст как команду драйверу; закрывает клавиатуру; очищает поле ввода.
Чтобы удалить ранее введенные данные, запишите в поле ввода пустую строку:


Принципы работы
- По нажатию на элемент Edit Box, поле ввода становится активным.
- Мы можем настроить шрифт, его цвет или размер, или полностью зашифровать вводимые данные. Например, шифровка вводимого текста часто используется для паролей.
- Запись значения, введенного в Edit Box, в переменную происходит по нажатию Enter на клавиатуре. Так же после отправки значения мы можем настроить автоматическую очистку текстового поля или вывод ошибки. Например, при вводе неверного пароля - очищается текстовое поле и появляется ошибка: "Неверный пароль, повторите попытку снова!".
пример ЗАГРУЗИТЬ
TextArea (поле ввода)
TextArea - элемент для ввода многострочного текста с клавиатуры. Представляет собой более усовершенствованную версию элемента Edit Box для работы с большим текстом. Элемент переносит текст в конце строки по пробелу или нажатию клавиши Enter, для удобного перехода по тексту используйте полосу прокрутки (scroll bar). Данный элемент имеет улучшенный paste helper . При вызове без выделения появляются режимы: Paste, Select, Select All. При вызове с выделением появляются режимы: Paste, Copy, Cut. TextArea чаще всего используют для заметок или редактирования многострочного текста.
Параметры элемента

| Type | TextArea |
|---------------|-------------|---------------------------|
| Feedback | Реакция на нажатие
* Momentary – поле ввода подсвечивается при получении фокуса |
| Hold time | Время (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold |
| Repeat time | Частота повторения событий Hold |
| PasswordChar | Символ, на который будет визуально заменен любой текст, введенный в TextArea
Используется для скрытия введенных паролей. Получить исходный текст можно из свойства .Text |
| Tags | Присвоить элементу тег для удобного поиска в дереве проекта
Для поиска укажите имя тега в поисковой строке панели Project; отобразятся все элементы с данным тегом |
Привязка к оборудованию
Поле ввода можно связать с переменной напрямую или через скрипт.

По нажатию на поле ввода выполните команду открытия клавиатуры:
- Programming > Press > «Show Keyboard [keyboard_type]».
По удержанию вызовите окно "paste helper":
- Programming > Hold > Show paste helper.
Запрограммируйте дополнительную кнопку на отправку текста в переменную .
Пример работы:
- По нажатию на элемент TextArea - открывается виртуальная клавиатура смартфона (планшета);
- По нажатию кнопки "Сохранить" - поле ввода отправляет текст в переменную, закрывает клавиатуру, очищает поле ввода.
Чтобы удалить ранее введенные данные, запишите в поле ввода пустую строку:


Принципы работы
- По нажатию на элемент TextArea, поле ввода становится активным.
- Мы можем настроить шрифт, его цвет или размер, или полностью зашифровать вводимые данные. Например, шифровка вводимого текста часто используется для паролей.
- По нажатию левой кнопки мыши или удержанию на экране появляется окно paste helper с помощью которого можно скопировать, вырезать или вставить выделенный текст. При вызове без выделения текста появляются режимы: Paste, Select, Select All. При вызове с выделением текста появляются режимы: Paste, Copy, Cut.
- Элемент поддерживает сочетание клавиш:
- Ctrl+A - выделить всё,
- Ctrl+C - скопировать выделенное в буфер обмена,
- Ctrl+V - вставить текст из буфера на элемент,
- Ctrl+X - вырезать выделенный текст с элемента в буфер обмена,
- Запись значения, введенного в TextArea, в переменную происходит по нажатию запрограммированной на это кнопки в графическом интерфейсе по событию Press или Release. Так же после отправки значения мы можем настроить автоматическую очистку текстового поля или вывод ошибки. Например, по нажатию кнопки "Сохранить", мы записываем текст в переменную проекта и очищаем поле ввода для дальнейших записей.
пример ЗАГРУЗИТЬ
Virtual key (виртуальная клавиша)
Virtual key - элемент для создания пользовательской клавиатуры. На базе виртуальной клавиши Вы можете создать клавиатуру любого вида и конфигурации в проекте iRidium.
Параметры элемента
-f323f47a145f28ab41ec72af913c2924.png)
| Type | Virtual key |
|---|---|
| Feedback | Реакция на нажатие: - Momentary – для клавиш, отвечающих за ввод отдельного символа - Channel – для клавиш с возможностью смены регистра Для переключения раскладки используйте переменную проекта, которая хранит число – текущее состояние клавиши. Привяжите переменную “In Value” для смены регистра. |
| Key Type | Тип клавиши, определяет ее поведение: - Normal – клавиша с 1 состоянием (без смены регистра) - Trigger – клавиша с 2 состояниями (например, со сменой регистра или раскладки клавиатуры) - Multistate – клавиша с несколькими состояниями (число состояний устанавливается произвольно) |
| Key Action | Событие клавиши: - Insert Text – ввод символа, указанного в текстовом поле клавиши. Впишите 1 букву или цифру в текстовое поле, и клавиша отправит ее - Enter, Up, Down, Left, … – команды клавиатуры ОС Windows |
Виртуальная клавиша отправляет значение в активное поле ввода (Edit Box). Если вы не создали поле ввода, значение не будет никуда записано.
Принципы работы
- Каждую клавишу Virtual key можно настроить на определенный символ или функцию клавиатуры (Enter, Delete и др.).
- По нажатию на виртуальную клавишу, в активное текстовое поле запишется выбранный символ. Такой принцип работы полностью схож с обычной сенсорной клавиатурой на Android или iOS, но Virtual key позволяет настроить дизайн этой клавиатуры непосредственно под дизайн текущего проекта.
пример ЗАГРУЗИТЬ