Типы графических элементов, поведение элемента в интерфейсе
Типы графических элементов, поведение в интерфейсе
В этом разделе рассмотрим ключевую информацию о графических элементах, как создавать элементы и как настраивать их поведение, меняя тип элемента и его основные параметры.
Типы и назначение элементов
Базовый элемент интерфейса i3 pro - это кнопка. Все объекты, которые вы видите - надписи, разделители, ползунки и клавиши - это элементы, поведение и отображение которых, изначально, было основано на поведении обычной кнопки (Button), к которой добавлены дополнительные особенности. Тип элемента описывает эти особенности:
| Элемент | Описание |
|---|---|
| Label лейбл | Лейбл — ненажимаемый элемент с одним вариантом внешнего вида. Используется как дисплей, текстовый блок, элемент оформления или иконка |
| Multistate Button кнопка с анимацией | Кнопка с множеством состояний. При нажатии или получении данных проигрывает покадровую анимацию между состояниями. Может зацикливаться |
| Trigger Button кнопка триггер | Переключатель с двумя состояниями (вкл/выкл). Отправляет значения оборудованию. Требует Feedback для корректной работы |
| Up/Down Button кнопка прирастить/убавить | Изменяет значение на шаг относительно текущего. Требует обратной связи (Feedback), иначе работает некорректно |
| Level уровень | Ползунок с диапазоном Min–Max. Определяет и отправляет значение в зависимости от позиции |
| Multistate Level уровень с анимацией | Уровень с множеством состояний вместо линейного отображения. Может отображать режимы через иконки |
| Circular Level круговой уровень | Круговой ползунок для изменения значения |
| Multistate Circular Level круговой уровень с анимацией | Круговой уровень с множеством визуальных состояний |
| Joystick джойстик | Двухкоординатный контрол (X/Y). Может возвращать цвет (RGB) при использовании палитры |
| Edit Box поле ввода | Однострочное поле ввода текста |
| TextArea поле ввода | Многострочное поле ввода с прокруткой и расширенными операциями вставки |
| Virtual key виртуальная клавиша | Используется для создания пользовательской клавиатуры |
| List динамический список | Список, заполняемый через скрипты. Не поддерживает вставку элементов в середину |
| Static List список попапов | Навигационный элемент для переключения между попапами |
| Advanced List расширенный список | Улучшенный список с поддержкой больших данных и гибкого управления |
| Picker барабан | Используется для выбора значений (например, дата/время) |
| Linear Trend линейная диаграмма | График изменения значений во времени. Требует сервер или внешнюю БД |
| 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:

| Параметр | Описание |
|---|---|
| X / Y координаты элемента | Координаты элемента относительно верхнего левого угла (в пикселях) |
| Width / Height ширина / высота | Размер элемента в пикселях. - Можно менять размер сразу у нескольких элементов - При изменении одного — остальные масштабируются пропорционально |
| Type тип элемента | Определяет поведение элемента (количество состояний и отправляемые значения). Выбирается в зависимости от задачи |
| Feedback обратная связь | Определяет реакцию элемента на действия и данные. Типы: - None — нет реакции - Momentary — реакция на нажатие - Channel — реакция на данные - Invert Channel — инвертированная логика - On — активен при запуске - Blink — мигание при ненулевом значении |
| Visible отображение | Определяет, отображается ли элемент при запуске. Можно менять динамически |
| Enable разрешить нажатие | Включает/отключает взаимодействие. При отключении элемент становится неактивным (серый), но продолжает получать данные |
| Hit область нажатия | Определяет область и поведение нажатий. Для кнопок: - Bounding Box — вся область - Pass Through — клики проходят сквозь элемент - Touch on Fill — только по непрозрачным зонам Для уровней: - Bounding Box — вся область - Pass Through — без обработки - Active Centering — возврат в центр - Drag — только перетаскивание - Drag Slider — только за ползунок - Drag Centering — перетаскивание с возвратом в центр - Touch on Fill — только непрозрачная часть |
| Tags теги | Используются для поиска элементов в проекте |
Специфические настройки, определяемые типом элемента
Специфические настройки - это настройки элемента, не распространяющиеся на остальные типы элементов, придающие элементу индивидуальные особенности поведения.
Button (кнопка)
Button — это графический элемент из 2-х состояний. Каждое нажатие на кнопку инициирует отправку одних и тех же команд, заранее к ней привязанных. Например, одна кнопка может включать свет, отправляя в канал значение "100", а другая выключать, отправляя значение "0".
Параметры элемента

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

| Параметр | Описание |
|---|---|
| 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 - это графический элемент из одного состояния. Лейбл работает с командами точно так же, как обычная кнопка, но не отображает факт нажатия и не изменяет состояние при получении обратной связи. Например, лейбл может служить надписью к элементу (кнопке, уровню и др.) или группе элементов.
Параметры элемента

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

| Параметр | Описание |
|---|---|
| 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 - это анимированная кнопка, работает с командами точно так же, как обычная, но при нажатии (или получении обратной связи) воспроизводит анимацию. Например, анимированную кнопку можно использовать для привлечения внимания к элементу в оригинальном интерфейсе (отблески, показ слайдов прямо на кнопке).
Параметры элемента

| Параметр | Описание |
|---|---|
| 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 | Значение по умолчанию, которое будет присвоено кнопке при запуске приложения |
Привязка к оборудованию

| Параметр | Описание |
|---|---|
| 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 и более значениями. Примером такой кнопки могут служить кнопки включения/ выключения света, теплого пола, кондиционера и др.
Параметры элемента

| Параметр | Описание |
|---|---|
| Feedback | Реакция на нажатия и получение данных от оборудования: * None - кнопка визуально не реагирует на нажатие или получение обратной связи * Channel - кнопка переключается на состояние on при нажатии и возвращается в off при повторном нажатии, отображает обратную связь * Invert Channel - кнопка переключается на состояние off при нажатии и возвращается в on при повторном нажатии, отображает обратную связь инверсно (false = включена, true = выключена) * Channel Only - кнопка переключается на on только при совпадении значения из канала обратной связи со Value 2 и на off только при совпадении со Value 1; иначе принимает значение 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 - при удержании |
Привязка к оборудованию
Перетащите переменную на триггер, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| 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. ### Параметры элемента

| Параметр | Описание |
|---|---|
| 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 |
Привязка к оборудованию
Перетащите переменную на кнопку, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| 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%.
- Работает, только если у устройства есть канал обратной связи.
Параметры элемента

| Параметр | Описание |
|---|---|
| Feedback | Momentary – ползунок перемещается вручную или при получении данных 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 – использовать исходные размеры изображения |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| 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 и др.).
Параметры элемента

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

| Параметр | Описание |
|---|---|
| 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. 3. По нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию.
Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.
пример
ЗАГРУЗИТЬ
Circular level (круговой уровень)
Circular level - это разновидность уровня с перемещением ползунка по круговой шкале. По нажатию или перемещению ползунка уровня, отправляет в переменную число, соответствующее текущему положению ползунка. Работает, только если у устройства есть канал обратной связи. Например, при установке на уровне значения 25, - диммируемая лампа включится с яркостью 25%.
Параметры элемента

| Параметр | Описание |
|---|---|
| Feedback | * Momentary – ползунок перемещается вручную или при получении данных. * Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до момента отпускания. |
| Level Mode | Режим кругового уровня: * Simple – с одним ползунком и активной зоной * Double – с двумя ползунками * Triple – с тремя ползунками * Looped – бесконечный |
| Level Min Angle / Level Max Angle | Пределы изменения угла поворота ползунка в градусах (0–360). Начало и направление отсчёта угла – как у стрелок часов. Можно задать одинаковые значения (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 – изменить размер пропорционально размеру кругового уровня |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание |
|---|---|
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события, в переменную будет записано указанное значение: * When pressed – отправить Value по нажатию * When released – отправить Value при отпускании * When moved – отправлять все промежуточные значения Value при перемещении ползунка |
| Delay | Задержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать. * Рекомендуется добавлять команду Delay (минимум 100 мс, по умолчанию 500 мс) перед событием Move, чтобы снизить нагрузку на оборудование. Можно использовать все три события одновременно. |
| 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.
2. Одному из значений слайдера в параметре Hit установить значение Pass Through чтобы в дальнейшем пользователь не мог им управлять. Данное значение будет отображать текущую температуру.
3. Создать скрипт. В данном примере мы используем устройство 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)
| Параметр | Описание | Варианты / Примечания |
|---|---|---|
| Feedback | Реакция уровня на пользовательские действия и получение данных | * Momentary – ползунок перемещается вручную или при получении данных * Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до отпускания |
| LevelMode | Режим кругового уровня | * Simple – с одним ползунком и активной зоной * Double – с двумя ползунками * Triple – с тремя ползунками * Looped – бесконечный |
| Level Min Angle / Level Max Angle | Пределы изменения угла поворота ползунка в градусах. Допустимые значения: 0–360. Начало и направление отсчета угла – как у стрелок часов. | Значения можно установить одинаковыми (например, 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 – масштабировать пропорционально размеру уровня |
Привязка к оборудованию
Перетащите переменную на уровень, в диалоге привязки переменной укажите:

| Параметр | Описание | Примечания / Варианты |
|---|---|---|
| Event for Action | Событие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение | * When pressed – отправить Value по нажатию * When released – отправить Value при отпускании * When moved – отправлять все промежуточные значения Value при перемещении ползунка |
| Delay | Задержка отправки значения после активации события. Можно включить и указать время в миллисекундах. Задержка добавляется в меню Programming и может быть изменена позже | * Для события Move рекомендуется добавить Delay (минимум 100 мс, по умолчанию 500 мс), чтобы снизить нагрузку на оборудование; Move с Delay срабатывает не чаще одного раза в 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 освещением.
Параметры элемента

| Параметр | Описание | Примечания / Варианты |
|---|---|---|
| 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 - элемент для ввода данных с клавиатуры. Введенные данные остаются на элементе, откуда их можно "забрать" - отправить оборудованию или обработать в скрипте. Поле ввода чаще всего используется для ввода пароля или других данных с клавиатуры.
Параметры элемента

| Параметр | Описание | Примечания / Варианты |
|---|---|---|
| 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 чаще всего используют для заметок или редактирования многострочного текста.
Параметры элемента

| Параметр | Описание | Примечания / Варианты |
|---|---|---|
| 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 позволяет настроить дизайн этой клавиатуры непосредственно под дизайн текущего проекта.
пример
ЗАГРУЗИТЬ