whenChanged & oldValue

then: function (newValue, devName, cellName) в обработчик предается новое значение, часто требуется старое значение, конечно можно прихранить, но не очень красивый код выходит, лучше передавать и старое значение. Например, нужно понять, что влажность увеличивается. Какой паттерн посоветуете?

var HimiditySensorMqttTopic = “device/control”
var oldValue = dev[HimiditySensorMqttTopic]; //При загрузке правила, в oldValue передаем данные с датчика влажности

defineRule(“newValue oldValue”, {
whenChanged: HimiditySensorMqttTopic,
then: function (newValue, devName, cellName) {
if(newValue > oldValue){
log.info(“Влажность растет”)
}
else{
log.info(“Влажность падает”)
}

oldValue = newValue; //После прохождения всех проверок, передаем новое значение, в старое.
}
});

Нарушен принцип инкапсуляции логики, так можно, но лучше подать отдельным параметром в whenChanged.

И вообще, вопрос ребятам из WB. А не пора ли перейти на ECMAScript 6+?

Добрый день.
“старое” - оно ведь не хранится нигде в брокере. Это только выделять место в движке и хранить их там, но сразу виден очевидный недостаток: Если используется не имя топика а подстановочный символ, например “#” - то надо сохранять значения всех топиков?
Если нужно старое значение как правило сохраняю его в переменной, так же как @Vlad_Volchkov

Да, планируется капитальный рефакторинг движка правил.

Ясно, Жду ООП.

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