Параметры whenChanged

Хотел сделать так.
Вначале определить параметры в переменные (так проще было бы в одном месте менять а не по всему скрипту)

а потом уже использовать в параметрах переменные. Хотел вот так.
Но блина ругается на ошибку ((

var temperatureSensor = dev [“wb-w1/28-00000fabf9b5”]

defineRule( {
whenChanged: temperatureSensor,
then: function (newValue) {
dev [“termostat/currentTemp”] = newValue
}
});

Подскажите может можно как то указывать параметр именно переменной а не “имя устройства/имя параметра”

Надо весь скрипт выкладывать, т.к. скорее всего ругается не на это. И терминируй строки ; там где надо.
Кстати, да dev там лишнее.

Добрый день.
В событии whenChanged должна быть указана строка или массив строк. В вашем случае указан объект dev, т.е.:

//создаю переменную с которой хочу потом забирать температуру в виртуальный термостат
var temperatureSensor = dev [“wb-w1/28-00000fabf9b5”]

// гистерезис 1 градус
var hysteresis = 1

// создание виртуального термостата
defineVirtualDevice(‘termostat’, {
title: ‘Термостат’ ,
cells: {
status: {
title: “Состояние”,
type: “switch”,
value: false
},
usedTemp: {
title: “Желаемая температура”,
type: “range”,
value: 20,
max: 36,
min: 15
},
currentTemp: {
title: “Текущая температура”,
type: “temperature”,
value: 0
},
alarm: {
title: “есть ошибка”,
type: “alarm”,
value: 1
},
}
});

// привязка текущей температуры
defineRule( {
whenChanged: temperatureSensor,
then: function (newValue) {
dev [“termostat/currentTemp”] = newValue
log (“Температура”, newValue)
}
});

// кнопка состояния привязанная к исполнительному устройству
defineRule({
whenChanged: “wb-mrm2-mini_54/K2”,
then: function(newValue, devName, cellName) {
dev[“termostat/status”] = newValue;
}
});

defineRule({
whenChanged: “termostat/status”,
then: function(newValue, devName, cellName){
dev[“wb-mrm2-mini_54/K2”] = newValue;
}
});

// сам термостат
defineRule( {
whenChanged: “termostat/currentTemp”,
then: function (newValue) {
if (newValue <= (dev [“termostat/usedTemp”] - hysteresis) && dev[“termostat/status”] === false) {
dev[“termostat/status”] = true
log (“Виртуальный термостат включен c проверкой состояния включения”)
}
if (newValue >= (dev [“termostat/usedTemp”] + hysteresis) && dev[“termostat/status”] === true) {
dev[“termostat/status”] = false
log (“Виртуальный термостат ВЫКЛЮЧЕН с проверкой состояния”)
}

}
});

вот я жирным выделил там где ругается на ошибку, хотя я в самом начале кода создал такую переменную

Замените:

на:

ругается

Вы используете неправильные кавычки

  • ”“
    Надо везде заменить на эти “”

1 Like

все заработало, спасибо ))