Добрый день. Подскажите пожалуйста, что не так с ним?
Вот правило:
defineRule(“1”, {
whenChanged: “Датчик присутствия коридор/illuminance”,
then: function (newValue, devName, cellName); {
debug(‘{}/{} = {}’, devName, cellName, newValue);
if (newValue<=10) {
publish(“zigbee2mqtt/Свет кухня/set”, JSON.stringify({ state_l2: “ON” }), 2, false);
log (‘Лампа включена’);
} else if (newValue>=11) {
publish(“zigbee2mqtt/Свет кухня/set”, JSON.stringify({ state_l2: “OFF” }), 2, false);
log (‘Лампа выключена’);
}
}
});
Вот ошибка:
SyntaxError: invalid object literal (line 13)
duk_js_compiler.c:2922
Добрый день,
В вашем правиле ошибка синтаксиса.
Правильное использование функции then
должно выглядеть следующим образом:
defineRule("1", {
whenChanged: "Датчик присутствия коридор/illuminance",
then: function (newValue, devName, cellName) {
debug('{}/{} = {}', devName, cellName, newValue);
if (newValue<=10) {
publish("zigbee2mqtt/Свет кухня/set", JSON.stringify({ state_l2: "ON" }), 2, false);
log ('Лампа включена');
} else if (newValue>=11) {
publish("zigbee2mqtt/Свет кухня/set", JSON.stringify({ state_l2: "OFF" }), 2, false);
log ('Лампа выключена');
}
}
});
Уберите точку с запятой после объявления функции then
.
Если возникнут дополнительные вопросы, не стесняйтесь обращаться.
1 сообщение было перенесено в новую тему: Проблема с написанием правил