Добрый день!
Сделал небольшое правило для включения реле по датчику движения с задержкой отключения. Уставку порога срабатывания и уставку задержки отключения вывел в контрол. Уставка срабатывания принимается правилом, а вот уставка таймера нет. При чём если изменить уставку в панельке устройства, потом зайти в правило и ничего не делая записать, то примется то значение, что было в панельке устройства.
defineVirtualDevice("Motion", {
title: "Детектор движения",
cells: {
Set_motion_max: {
title: "порог включения",
type: "value",
value : "",
max: 1000,
min: 0,
readonly : false,
},
Set_timer_off: {
title: "задержка отключения",
type: "value",
units: ", c",
value : "",
max: 100,
min: 0,
readonly : false,
},
Motion_state: {
title: "детекция движения",//для индикации срабатывания
type: "switch",
value : false,
readonly : true,
},
}});
var timer_1off_s = dev ["Motion"]["Set_timer_off"];
var timer_1off_id = null;
defineRule("Motion_on", {
whenChanged: "wb-msw-v4_95/Max Motion",
then: function (newValue, devName, cellName) {
if (newValue > dev ["Motion"]["Set_motion_max"]){
dev ["Motion/Motion_state"] = true
dev ["wb-mr6cu_79/K3"] = true;
} else {
dev ["Motion/Motion_state"] = false;
}
}});
defineRule("Motion_off", {
whenChanged: "Motion/Motion_state",
then: function (newValue, devName, cellName) {
if ((newValue == false)&&(dev ["wb-mr6cu_79"]["K3"] == true)){
if (timer_1off_id) {
clearTimeout(timer_1off_id);
}
timer_1off_id = setTimeout(function () {
dev ["wb-mr6cu_79/K3"] = false;
timer_1off_id = null;
}, timer_1off_s*1000);
}
}});
Помогите разобраться.