Вопросы по работе системы
-
Да, копированием добавляете сколько нужно.
Настраиваете границы и переименовываете, как хотите.
А в свойствах устройства указываете, "метод определения состояния" - "аналоговые значения - интервалы".
Теперь гуд. Спасибо!
-
у устройства в нижнем меню можно создать много состояний.
Состояния привязать в граничным значениям.
Подскажите, пожалуйста, по шагам как у устройства добавить новые состояния. У меня в нижнем меню только Стандарт и других нет. На какие кнопки надо нажимать чтобы добавить новые состояния? В свойствах устройства указал, "метод определения состояния" - "аналоговые значения - интервалы". И объясните, пожалуйста, что такое Погрешность при изменении состояния.
-
@gis:
у устройства в нижнем меню можно создать много состояний.
Состояния привязать в граничным значениям.
Подскажите, пожалуйста, по шагам как у устройства добавить новые состояния. У меня в нижнем меню только Стандарт и других нет. На какие кнопки надо нажимать чтобы добавить новые состояния? В свойствах устройства указал, "метод определения состояния" - "аналоговые значения - интервалы". И объясните, пожалуйста, что такое Погрешность при изменении состояния.
Например, Вы хотите создать датчик температуры, у которого 5 состояний: Мороз(0) - Прохладно(1) - Норм(2) - Тепло(3) - Жарко(4)
Номера состояний должны идти строго по порядку!!
1. Выбираете строчку Стандарт, заменяете название на Мороз, ставите Верхнюю границу интервала например, -15. Все, что ниже (или равно) этого значения, будет рассматриваться как Мороз. При желании меняете картинку, цвет. Сохраняете запись,
2. Выбираете строчку Стандарт и нажимаете кнопку Копировать.
В новой записи ставите
Номер состояния - 1
Название - Прохладно
Верхняя граница -5
Картинка, цвет - по вкусу
И так для каждого состояния
Значения границ должны идти по нарастающей
Последнее состояние - границу не указываем. Все, что выше состояния Тепло, попадет сюда.
Если в самом устройстве Метод "аналоговые значения - интервалы" уже установлен, то при поступлении нового значения на датчик все должно начать работать. "Погрешность при изменении состояния" была добавлена, чтобы избежать дребезга при частом переключении на границе состояния. Смело можно оставить 0, если у вас не скоростные датчики с дребезгом.
Визуализацию каждого состояния можно адаптировать непосредственно на мнемосхеме, об этом писалось выше
-
Я так понимаю само реальное значение температуры/влажности не будет отображаться?
Мне бы хотелось так - если холодно, то цифры индикатора были бы синие. Жарко - оранжевые. Предельные - красные. И т.д.
-
Я так понимаю само реальное значение температуры/влажности не будет отображаться?
Почему? Значение никуда не исчезает
Если вы используете шаблон представления - Иконка или значение в виде теста - видите значение.
Можете рядом поставить то же устройство, но использовать шаблон Текстовое представление состояния - тогда будет состояние.
@Alex_Jet:Мне бы хотелось так - если холодно, то цифры индикатора были бы синие. Жарко - оранжевые. Предельные - красные. И т.д.
Да, конечно можно. Нужно настроить детали визуализации (в вашем случае Цвет индикатора) для каждого состояния непосредственно на мнемосхеме.
ВАЖНО!! Если меняете количество состояний устройства, нужно это устройство поставить на мнемосхему заново!
-
Подскажите пожалуйста.
При выборе устройства в меню "параметры" элементов на мнемосхеме или виджете наблюдаю устройства "_UNIT_плагин", названные именами установленных плагинов.
В списке устройств в структуре проекта их не видно.
Что это за сущности, и как их можно использовать?
-
@gis:
у устройства в нижнем меню можно создать много состояний.
Состояния привязать в граничным значениям.
Подскажите, пожалуйста, по шагам как у устройства добавить новые состояния. У меня в нижнем меню только Стандарт и других нет. На какие кнопки надо нажимать чтобы добавить новые состояния? В свойствах устройства указал, "метод определения состояния" - "аналоговые значения - интервалы". И объясните, пожалуйста, что такое Погрешность при изменении состояния.
После создания и сохранения актуатора при всех закрытых боковых меню нажимаем кнопку открытия нижнего меню, и видим окно с состояниями актуатора (или выбираем отображение состояний в меню 1).
Выделяем и дважды кликаем (или нажимаем кнопку свойства справа в шапке нижнего меню) название состояния (2), открывается правое боковое меню.
На нем можно:
изменить название состояния (4),
установить верхнюю границу состояния (5) (отображение актуатора на экране может быть разным для разных состояний, и отображения принимают соответствующий вид при нахождении значения актуатора в границах, указанных в описании состояний в этом меню).
Изменить иконку отображения состояния (6)
И цвет иконки (7)
При нажатии копки «копировать» (3) можно создать еще одно состояние актуатора, и настроить его необходимым образом.
Удалить состояния по-умолчанию (включено и выключено) нельзя. Это как раз то лишнее свойство, которое будет на термометрах, но не будет использоваться. Его можно использовать, например, менять цвет иконки, или цифр отображения температуры в соответствии с температурой. Настроить нужное количество состояний, например с шагом 5 градусов от +5 до +30 будет 5 состояний с 5-ю разными цветами, и в зависимости от температуры индикатор будет менять цвет.
После создания своих состояний нужно в свойствах актуатора (правое меню) на вкладке «дополнительно» «метод определения состояния» установить в «Аналоговое значение – интервалы».
А цвет текста, рамки настраивается уже в виджете или мнемосхеме
@Erik:При отображении устройства к состоянию привязывается и цвет фона, и цвет рамки, и цвет шрифта, и скругление углов.
Я термометр уличный сделал на 8 состояний. В нижнем меню устройства да, только цвет картинок.
Но я отображение поставил "значение с единицей измерения", и для каждого состояния настроил разные цвета текста, рамки и фона.
Можно и форму менять. Сделать состоянию "0" скругление углов 50.
Состояниям "-10", "-20", "-30" сделать скругление 0
Состояниям "+10", "+20", "+30" - скругление 100.
Будет при отрицательных температурах квадратный термометр, при положительных - круглый.
-
Подскажите пожалуйста.
При выборе устройства в меню "параметры" элементов на мнемосхеме или виджете наблюдаю устройства "_UNIT_плагин", названные именами установленных плагинов.
В списке устройств в структуре проекта их не видно.
Что это за сущности, и как их можно использовать?
Это виртуальные датчики - индикаторы плагинов - создаются автоматически при подключении плагина.
Работает как обычный датчик, можно вывести на индикацию, использовать в сценариях.
Состояние 0 - плагин остановлен,
Состояние 1 - плагин работает
Свойство err - ошибка плагина - эту возможность должен поддерживать плагин, не везде пока реализовано.
-
Это виртуальные датчики - индикаторы плагинов - создаются автоматически при подключении плагина.
Работает как обычный датчик, можно вывести на индикацию, использовать в сценариях.
Состояние 0 - плагин остановлен,
Состояние 1 - плагин работает
Свойство err - ошибка плагина - эту возможность должен поддерживать плагин, не везде пока реализовано.
Состояния
"Not activated"
"Stopped"
"Run"
правое меню у них обескураживает.
-
правое меню у них обескураживает.
Да, неаккуратно
Этот функционал в процессе доработки, так сказать, "недокументированные возможности"
Пока лучше "Запретить боковое меню устройства в пользовательском интерфейсе"
Мы используем в проектах в основном для создания полосы индикаторов (строки состояния)
-
А откуда у значений счетчиков берутся такие длинные хвосты после запятой? В настройках устройства стоит всегда 2-3 цифры после запятой, счетчик импульсов тоже прибавляет 1, 0,1, 0,01 или 0,001 соответственно отображается на мнемосхеме это нормально, но вот при обработке в скрипте всегда приходится округлять или обрезать. Может есть какое-то решение?
-
После создания и сохранения актуатора при всех закрытых боковых меню нажимаем кнопку открытия нижнего меню, и видим окно с состояниями актуатора (или выбираем отображение состояний в меню 1).
Erik, большое спасибо за подробные пояснения! Проблема была с открытием нижнего меню, сейчас разобрался где эта кнопка.
-
Дополнительные свойства устройству могут добавлять сценарии и плагины.
А можно где-нибудь опубликовать типы дополнительный свойств (помню, что уже рассказывали, но 30-ти минутный поиск ни к чему не привел)? Требуется выводить на вкладке "Параметры" плагинов их состояние. Состояние как правило - это строка.
И еще интересный вопрос - можно ли таким же образом сделать слайдер, при движении которого параметр будет улетать в железку? Суть - голосовой терминал, который интегрирован в iH посредством плагина. Вся оперативная настройка голосового терминала заключается в регулировке его громкости. Конечно можно было бы еще из этого же меню записывать голосовые модели и т.д., но мне кажется, что это должно делаться из веб-интерфейса терминала (пытаюсь продавить данный момент, пока разработчик реализовал только вебку для оперативного изменения кучи настроек).
-
Дополнительные свойства устройству могут добавлять сценарии и плагины.
А можно где-нибудь опубликовать типы дополнительный свойств (помню, что уже рассказывали, но 30-ти минутный поиск ни к чему не привел)? Требуется выводить на вкладке "Параметры" плагинов их состояние. Состояние как правило - это строка.
И еще интересный вопрос - можно ли таким же образом сделать слайдер, при движении которого параметр будет улетать в железку? Суть - голосовой терминал, который интегрирован в iH посредством плагина. Вся оперативная настройка голосового терминала заключается в регулировке его громкости. Конечно можно было бы еще из этого же меню записывать голосовые модели и т.д., но мне кажется, что это должно делаться из веб-интерфейса терминала (пытаюсь продавить данный момент, пока разработчик реализовал только вебку для оперативного изменения кучи настроек).
А с помощью get|post нельзя туда пульять изменения? Привязать уставку датчика и при изменении уставки отправлять в терминал запрос
-
А с помощью get|post нельзя туда пульять изменения? Привязать уставку датчика и при изменении уставки отправлять в терминал запрос
Создатель терминала сейчас сделал полноценный двусторонний обмен данными по соккетам с рукопожатием в том числе, но для этого надо пилить плагин, который я сделал для iH - ни времени, ни достаточных знаний у меня нет. Однако поскольку терминал делался изначально под МЖД, то он кидает в сервер get по http, а вот обратно есть возможность только открыть соккет на 7999 порту (сейчас плагин так и работает).
Однако тут смысл в том, что не хочется плодить какие-то эфимерные виртуальные устройства, а сделать все используя устройство самого плагина - в моем случае "_UNIT_voiceterminal1". Сейчас его параметры отображаются вот так:
Я думаю, что используя "общие принципы iH" можно сделать что я хочу. Только вопрос - как?
-
Однако тут смысл в том, что не хочется плодить какие-то эфимерные виртуальные устройства, а сделать все используя устройство самого плагина - в моем случае "_UNIT_voiceterminal1". Сейчас его параметры отображаются вот так:
VoiceTerminal_Settings.png
Я думаю, что используя "общие принципы iH" можно сделать что я хочу. Только вопрос - как?
Очень изобретательно у Вас получилось
Интерактивный параметр тоже можно сделать через сценарий и команду pluginCommand(). Например, так:
- Добавить на уровне сценария параметр
{"name":"setvolume", "note":"Установить громкость", "type":"number", "val":50}
- В сценарии, если громкость изменили - отправить команду плагину
if (this.isChanged(unit, 'setvolume')) { this.pluginCommand({unit:'voiceterminal1', command:{prop:'volume', value:unit.getParam('setvolume')}}); }
- плагин получит сообщение: {type:'command', command:…..все что прислали}
Он должен реализовать разбор command и выполнение
По типам параметров в сценарии - пока реализовано только три типа для ввода: number, cb (checkbox) и time (для ввода временных интервалов). Любой другой тип, включая string, выводится как readOnly string.
Тип слайдер пока не реализован
-
Очень изобретательно у Вас получилось
Интерактивный параметр тоже можно сделать через сценарий и команду pluginCommand(). Например, так:
- Добавить на уровне сценария параметр
> {"name":"setvolume", "note":"Установить громкость", "type":"number", "val":50} >
- В сценарии, если громкость изменили - отправить команду плагину
> if (this.isChanged(unit, 'setvolume')) { > this.pluginCommand({unit:'voiceterminal1', command:{prop:'volume', value:unit.getParam('setvolume')}}); > } > >
Не понимаю в какой момент setvolume меняется - при изменении значения или нажатия кнопки? Сейчас подобную структуру вставил в start, но в логе при изменении значения setvolume ничего подобного нет. Проверка на изменение происходит только при запуске скрипта внешним запросом (плагином):
26.02 15:58:55.737 do _UNIT_voiceterminal1 uptime 69:41:28 26.02 15:58:55.738 do _UNIT_voiceterminal1 status stop_record 26.02 15:58:55.739 isChanged(_UNIT_voiceterminal1,set_volume)=false 26.02 15:58:55.739 isChanged(_UNIT_voiceterminal2,set_volume)=false
Наверное, необходимо использовать startOnChange(…) чтобы скрипт запустился и отработал?
-
Наверное, необходимо использовать startOnChange(…) чтобы скрипт запустился и отработал?
Да, конечно.
-
Наверное, необходимо использовать startOnChange(…) чтобы скрипт запустился и отработал?
Да, конечно.
А можно поподробнее как? Поскольку все что я пробовал при сохранении ругалось на не верные аргументы
-
Не понимаю в какой момент setvolume меняется - при изменении значения или нажатия кнопки? Сейчас подобную структуру вставил в start, но в логе при изменении значения setvolume ничего подобного нет. Проверка на изменение происходит только при запуске скрипта внешним запросом (плагином):
Свойство (уставка) отправляется на сервер, когда нажимаете галочку.
При этом возникает событие устройства, свойство которого изменилось.
А можно поподробнее как? Поскольку все что я пробовал при сохранении ругалось на не верные аргументы
У Вас сценарий, который добавляет свойства индикатору unit, какие действия выполняет?
Как обычно, есть минимум три варианта
1. Добавить в этот же сценарий триггер: startOnChange(unit)
и действие в функцию start()
if (this.isChanged(unit, 'setvolume')) { this.pluginCommand({unit:'voiceterminal1', command:{prop:'volume', value:unit.getParam('setvolume')}}); }
Действие будет выполняться, если сценарий запускается при изменении свойства setvolume
2. Можно сделать отдельный сценарий - только управление громкостью, так как свойство можно объявить в одном сценарии, а использовать в другом
const unit = Device("_UNIT_voiceterminal1"); startOnChange(unit); script({ start() { if (this.isChanged(unit, 'setvolume')) { this.pluginCommand({unit:'voiceterminal1', command:{prop:'volume', value:unit.getParam('setvolume')}}); } } })
3. Можно и объявление свойства setvolume перенести в сценарий по 2 варианту, так как можно объявлять разные свойства устройства в разных сценариях, желательно конечно, чтобы имена свойств не совпадали.