Ошибок нет, но правило не работает

Друзья, добрый вечер! Подскажите пожалуйста в чем ошибка написания в правиле? Ошибок вроде нет, но правило не срабатывает. Суть проста, при превышении показания температуры с датчика Aqara выше уставки должно включаться реле A2_OUT.

var setpoint = 29;
defineRule(“test”, { //название правила
whenChanged: “/devices/0x00158d00090ee170/controls/temperature”, //при изменении состояния датчика Aqara zigbee с идентификатором 0x00158d00090ee170
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( newValue > setpoint) { //если температура датчика больше 29 градусов
dev[“wb-gpio/A2_OUT”] = true; //установи Реле 2 контроллера в состояние “включено”
} else {
dev[“wb-gpio”][“A2_OUT”] = false; //установи Реле 2 контроллера в состояние “выключено”
}
}
});

Проверьте какой тип данных у вас приходит string или number. Вот этим правилом:

defineRule(“test”, { //название правила
whenChanged: “0x00158d00090ee170/temperature”, //при изменении состояния датчика Aqara zigbee с идентификатором 0x00158d00090ee170
then: function (newValue, devName, cellName) { //выполняй следующие действия
log.info(typeof newValue)
}
});

Если String тогда нужно вот так: newValue.toFloat() > setpoint

var setpoint = 29;
defineRule(“test”, { //название правила
whenChanged: “0x00158d00090ee170/temperature”, //при изменении состояния датчика Aqara zigbee с идентификатором 0x00158d00090ee170
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( newValue.tofloat() > setpoint) { //если температура датчика больше 29 градусов
dev[“wb-gpio/A2_OUT”] = true; //установи Реле 2 контроллера в состояние “включено”
} else {
dev[“wb-gpio”][“A2_OUT”] = false; //установи Реле 2 контроллера в состояние “выключено”
}
}
});

Не правильно описали сработку. Должно быть whenChanged: “0x00158d00090ee170/temperature”

1 лайк

Спасибо, проглядел

Добрый вечер! Не удалось запустит правило - выдает ошибку
Ошибка правила: SyntaxError: error parsing token (line 1)
duk_lexer.c:1272

вариант с newValue.toFloat() > setpoint тоже не заработал ((

В чем может быть ошибка в вашем правиле?

Понял в чем проблема была…а именно в ковычках, у вас были с наклоном, а должны быть прямые

1 лайк

При публикации на портале - хорошо использовать символы

``` (Три символа на русской букве “ё”)
 Ваш код
``` (Три символа на русской букве “ё”)
для оформления - чтобы движок форума показывал “как есть”.
1 лайк

Спасибо, большое учту =))

1 лайк

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.