Логика защиты от протечек с ручным сбросом блокировки в Node-RED
Система защиты от протечек воды — одна из важнейших инженерных подсистем современного умного дома. Большинство базовых сценариев автоматизации работают по простейшему двустороннему алгоритму: если датчик зафиксировал воду (состояние «влажно»), подается команда на закрытие шаровых электрокранов; как только датчик высыхает (состояние «сухо»), краны автоматически открываются обратно. Однако такой упрощенный подход несет в себе колоссальные риски и противоречит правилам безопасности.
Если в доме лопнет труба, датчик протечки мгновенно перекроет воду. Но как только вода на полу слегка подсохнет или испарится, датчик вернется в состояние «сухо». Без жесткой блокировки система автоматически откроет краны снова, что приведет к повторному затоплению квартиры. Для предотвращения таких аварий в Node-RED необходимо реализовать алгоритм с «защелкой» (софтверным триггером блокировки) и обязательным ручным подтверждением устранения аварии человеком.
Шаг 1: Инициализация флага блокировки протечки
Для реализации безопасной логики используется механизм запоминания состояния системы. При фиксации протечки сервер записывает специальный флаг аварии в память. Любые автоматические или ручные попытки открыть краны будут игнорироваться до тех пор, пока этот флаг активен.
Для хранения флага используется глобальный контекст сервера. О том, как настроить сохранение таких переменных, подробно описано в статье о глобальных переменных в Node-RED. Переменная будет называться global.waterLeakBlocked.
При запуске сервера или первом старте логики необходимо гарантировать, что переменная объявлена:
if (global.get("waterLeakBlocked") === undefined) {
global.set("waterLeakBlocked", false);
}
Файловое сохранение переменной критически важно, так как при перезапуске сервера Node-RED из-за перебоев с электричеством статус аварии не должен стереться.
Шаг 2: Создание триггера перекрытия воды
При поступлении сигнала от любого Zigbee-датчика протечки (например, датчика Aqara или Tuya) запускается сценарий экстренного закрытия.
Алгоритм работы цепочки реагирования:
- Сигнал от датчика протечки поступает на вход ноды
switch. - Если пришло состояние протечки (
true), сообщение раздваивается. - Первая ветка отправляет команду закрытия на электромагнитные краны или сервоприводы.
- Вторая ветка через ноду
changeзаписывает значениеtrueв глобальную переменнуюglobal.waterLeakBlocked. - Одновременно инициируются аварийные оповещения: отправка SMS на телефон и голосовое сообщение через Яндекс Станцию.
Даже если датчик высохнет через 10 минут и пришлет состояние false (сухо), краны не откроются, поскольку логика открытия будет заблокирована флагом.
Шаг 3: Блокировка ручного и автоматического открытия
Теперь необходимо предотвратить случайное открытие кранов пользователем. Хозяин дома может случайно нажать кнопку открытия воды в приложении Яндекс, сказать Алисе «Открой воду» или нажать физическую кнопку в ванной комнате до того, как найдет и отремонтирует лопнувшую трубу.
Для этого перед нодой управления кранами ставится логическая нода function или switch, проверяющая статус блокировки:
const isBlocked = global.get("waterLeakBlocked") || false;
if (isBlocked) {
// Блокируем команду открытия
node.warn("Попытка открытия воды заблокирована: активен режим протечки!");
msg.payload = "blocked";
return [null, msg]; // Сообщение на краны не идет, уходит только на предупреждение
} else {
// Разрешаем прохождение команды
return [msg, null];
}
Если произошла попытка открыть краны при активной аварии, Node-RED отсылает команду на Яндекс Станцию, и Алиса произносит: «Внимание! Открытие воды невозможно. Зафиксирована протечка. Сбросьте блокировку».
Шаг 4: Создание механизма ручного сброса аварии
Чтобы вернуть систему в штатный рабочий режим после устранения причин аварии (например, замены лопнувшего шланга смесителя), пользователю необходимо явно подтвердить сброс блокировки.
Для этого в приложении Дом с Алисой создается виртуальное устройство типа «Кнопка» или «Выключатель» с именем «Сброс протечки».
- При нажатии этой кнопки в приложении Яндекс отправляется сигнал в Node-RED.
- Нода-приемник передает импульс на изменение переменной
global.waterLeakBlockedв состояниеfalse. - Система переходит в штатный режим, и краны автоматически (или по команде пользователя) открываются.
Такой подход полностью исключает человеческий фактор и повторные затопления из-за невнимательности.
IMPORTANT
Никогда не нажимайте кнопку сброса блокировки до того, как визуально проверите все стыки труб, сифоны и гибкие подводки в местах установки датчиков. Логика умного дома защищает имущество, но устранить физическую течь может только человек.
WARNING
Обязательно убедитесь, что в файле settings.js включено постоянное дисковое хранилище (persistent contextStorage). Если глобальная переменная блокировки сохранится только в оперативной памяти (RAM), то при перезагрузке сервера Node-RED флаг сбросится в false, и краны могут автоматически открыться при высохшем датчике, создав аварийную ситуацию.
TIP
Шаровые краны с электроприводом имеют свойство закисать и покрываться известковым налетом, если ими не пользоваться месяцами. Настройте в Node-RED еженедельный автоматический цикл самоочистки (закрытие и открытие кранов в 4 часа утра в среду), но только при условии, что флаг waterLeakBlocked равен false.
NOTE
Логику блокировки можно дополнить датчиком давления в системе водоснабжения: если после сброса блокировки и открытия кранов давление в системе не стабилизируется в течение минуты, система расценит это как крупный скрытый порыв и заблокирует воду повторно.
Инструкция по настройке
Создание глобальной переменной блокировки
Инициализируйте логический флаг блокировки в глобальном контексте Node-RED для отслеживания аварийного состояния.
Настройка триггера протечки
Создайте сценарий перекрытия кранов при срабатывании любого из датчиков протечки и установите аварийный флаг.
Блокировка обратного открытия
Внедрите проверку флага блокировки перед отправкой команды на открытие кранов с выключателей или из приложения.
Создание кнопки сброса защиты
Настройте виртуальную кнопку сброса аварийного состояния в интерфейсе Алисы для ручного разблокирования системы.
Совет эксперта: Управляйте домом с компьютера
Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.