Я хочу, чтобы у меня насос циркуляции ГВС автоматически запускался как только датчик заметил движение в ванной.
Сделал вот такой код, но проблема в том, что он продолжает спамить каждую секунду.
defineRule("BoilerCirculationAutomaticControlRule", {
whenChanged: "wb-msw-v3_62/Current Motion",
then: function (newValue, devName, cellName) {
if (newValue > 100) {
SendTelegramMsg('Есть движение в ванной. Уровень ' + newValue + '. Циркуляция бойлера запущена');
}
}
});
Как сделать, чтоб он сработал один раз, а потом не обращал внимание на повторные движения?
Добрый день!
Рекомендую добавить в логику таймер срабатывания. Пример реализации можно найти в документации.
Также можно добавить флаг для проверки, чтобы при повторном запуске устройство не активировалось снова. После срабатывания таймера насос можно отключить, и при следующем движении система вновь его запустит.
Добрый день, удалось ли решить вопрос?
Здравствуйте,
я решил отказаться от активации насоса циркуляции ГВС по датчику движения, т.к. при тестировании было слишком много непреднамеренных включений.
Вторая мысль была включать циркуляцию одновременно с включением света с ванной, но тут меня смутило, что за 2 дня свет в ванной включался раз 30, а насос дёргать так часто не очень хорошо, поэтому я решил сделать по-другому.
Циркуляция работает:
- по расписанию утром с 6 до 8 и вечером с 20 до 23
- по двойному нажатию кнопки включения света, если хочешь помыться в другое время
var BoilerCirculationTimeout = 120000; // 120 секунд
var BoilerCirculationRelay = "wb-mr6cu_76/K4";
var BoilerCirculationButtons = ["wb-mr6c_120/Input 4 Double Press Counter", "wb-mr6c_126/Input 6 Double Press Counter"];
var BoilerCirculationRoomNames = ["1й этаж", "2й этаж"];
defineRule("Start circulation cron job", {
when: cron("0 0 6,20 * * *"),
then: function () {
dev[BoilerCirculationRelay] = true;
}
});
defineRule("Stop circulation cron job", {
when: cron("0 0 8,23 * * *"),
then: function () {
dev[BoilerCirculationRelay] = false;
}
});
defineRule({
whenChanged: BoilerCirculationButtons,
then: function(newValue, devName, cellName) {
dev[BoilerCirculationRelay] = true;
var index = BoilerCirculationButtons.indexOf(devName + '/' + cellName);
SendTelegramMsg('Кто-то пошёл мыться на ' + BoilerCirculationRoomNames[index]);
setTimeout( function () { dev[BoilerCirculationRelay] = false; }, 120000 );
}
});
Добрый день,
Спасибо, что поделились своим опытом!
Цикличное расписание и принудительное включение действительно, наверное, самое надежное решение.