A
Size: a a a
A
ИК
A
ИК
A
ИК
A
ИК
ИК
A
A
ИК
A
A
AF
A
AF
AF
A
A
createState("gate_0.current"); // текущее состояние
createState("gate_0.target"); // целевое состояние
// сбрасываем состояние в 0, по прошествии 300мс
on({id: "mqtt.0.gate.gpio.13", ack: false, val: 1}, function (obj) {
setStateDelayed("mqtt.0.gate.gpio.13", 0, 300);
});
on({id: "mqtt.0.gate.gpio.12", ack: false, val: 1}, function (obj) {
setStateDelayed("mqtt.0.gate.gpio.12", 0, 300);
});
// если изменилось состояние открытости
on({id: "mqtt.0.gate.is_open", ack: false, val: 1}, function (obj) {
// "открылся"
setState("javascript.0.gate_0.current", 0, true);
});
on({id: "mqtt.0.gate.is_open", ack: false, val: 0}, function (obj) {
// "закрылся"
setState("javascript.0.gate_0.current", 1, true);
});
// если установили цель - открыть, значит посылаем сигнал на открытие
on({id: "javascript.0.gate_0.target", ack: false, val: 0}, function (obj) {
setState("mqtt.0.gate.gpio.12", 1);
});
// если установили цель - закрыть, значит посылаем сигнал на закрытие
on({id: "javascript.0.gate_0.target", ack: false, val: 1}, function (obj) {
setState("mqtt.0.gate.gpio.13", 1);
});
on({id: "mqtt.0.gate.in_progress", ack: true, change: 'any'}, function (obj) {
// если выставился режим "в процессе", то значит процесс пошел
if (obj.state.val === 1) {
// если целевой режим "открытие", то выставим состояние
const target = getState("javascript.0.gate_0.target");
if (target.val === 0) {
// "открывается"
setState("javascript.0.gate_0.current", 2, true);
} else {
// "закрывается"
setState("javascript.0.gate_0.current", 3, true);
}
}
// если сбросился режим "в процессе", то значит процесс закончен
if (obj.state.val === 0) {
// если целевой режим "открытие", то выставим состояние
const target = getState("javascript.0.gate_0.target");
if (target.val === 0) {
// "открылся"
setState("javascript.0.gate_0.current", 0, true);
} else {
// "закрылся"
setState("javascript.0.gate_0.current", 1, true);
}
}
});