Пользователь @regabriel написал в Вопросы по работе системы:
Здравствуйте. Не пойму ошибка или нет.
Создаю устройство - виртуальный датчик температуры, чтобы в нем выводить среднюю температуру с нескольких других датчиков.
Соответственно делаю мульти скриптик(так как таких средних будет несколько)
в котором прописываю:
const temp_room = Device("SensorA","Средняя температура комнаты");
....
script({
start() {
temp_room.setValue(15);
Так вот не работает x.setValue(15);
Для "ActorA" работает.
Это ошибка или так и должно быть?
Добрый день. Да, все верно, датчику значение таким образом присвоить нельзя.
Идея в том, что x.setValue задействует канал на запись, по которому значение записывается на железо. Датчик сам значение записать не может, его value только для чтения.
Для реализации виртуального датчика есть команда this.assign( имя устр-ва, имя свойства, значение)
this.assign(temp_room,"value",42);
В настройках-> дополнительно ставлю метод определения состояния "вычисляется сценарием".
Не совсем. У датчика есть value - значение и state - состояние, которое грубо говоря определяет картинку.
Этот пункт относится к state, Вы же сценарием хотите присвоить value.
Если нужно, чтобы средняя пересчитывалась динамически при изменении любого датчика, получится примерно так:
const temp1 = Device("SensorA","Датчик 1");
const temp2 = Device("SensorA","Датчик 2");
const temp3 = Device("SensorA","Датчик 3");
const temp4 = Device("SensorA","Датчик 4");
const temp_room = Device("SensorA","Средняя температура комнаты");
startOnChange([ temp1, temp2, temp3, temp4 ]);
script({
start() {
const average = (temp1.value+temp2.value+temp3.value+temp4.value)/4;
this.assign(temp_room,"value", average);
}
})
Сценарий будет запускаться при изменении любого исходного датчика и персчитывать значение виртуального.
И второй вопрос: при создании устройства выбор - актуатор бинарный(т.е. 2 состояния)
При этом в мультисценарии ActorD — дискретный актуатор.
Дискретный актуатор - имеется в виду актуатор с конечным числом состояний.
По умолчанию создается бинарный. Но можно расширить число состояний
Можно ли сделать более 2 состояний у актуатора и датчика и как? Где посмотреть примеры или описания?
Да, можно. Раздел Состояния устройств на странице https://ih-systems.com/ru/devices/
По состояниям:
-
у дискретных датчиков и актуаторов обычно делают value=state,
метод определения состояния "Стандартный"
-
у аналоговых можно использовать "Метод интервалов", то есть состояние расчитывается исходя из value, по нарастанию значения (более подробно см в док-и)
метод определения состояния "вычисляется сценарием" после перехода на v4 не используется
Также обратите внимание на 2 момента:
- Состояния должны нумероваться строго подряд, начиная с 0
- Если устройство уже стоит на мнемосхеме, после изменения числа состояний его нужно удалить и заново поставить. На мнемосхеме можно менять визуальное представление каждого состояния, причем каждое редактируется отдельно