Yet Another Toilet Smart Light Solution

Туалет, будучи одним из стратегически важных помещений жилища, привлекает большое внимание как граждан, занимающихся построением своего умного дома, так и проживающих совместно с ними. Причём, вторые вынуждены поневоле быть бета-тестерами, поскольку помещение приходится посещать регулярно, вне зависимости от степени готовности к этому со стороны умного дома. Уверен, с обратной связью от бета-тестеров всё в порядке, сообщения о возникающих нештатных ситуациях поступают мгновенно и максимально доходчиво. :-)

Картинка для привлечения внимания
Картинка для привлечения внимания

Я перед собой поставил задачу автоматического включения/выключения света в туалете. Причём, свет не должен гаснуть, если в туалете есть кто-то, даже если этот кто-то какое-то время не шевелится.

К этому решению для умного освещения в туалете я пришёл почти в самом начале своего пути погружения в пучину умного дома. На тот момент основная логика отрабатывала в Apple HomeKit. Со временем, всё плавно переехало в Home Assistant с автоматическим резервированием некоторых вещей через Mi Home.

Итак, для реализации основного функционала из «железок» нам понадобится:
- датчик открытия двери (в моём случае: Aqara door & window contact sensor MCCGQ11LM);
- датчик движения (в моём случае: какой-то Noname, работающий по RF433);
- умная лампочка или умный выключатель (в моём случае: Aqara smart LED bulb ZNLDP12LM).

Датчик открытия двери должен уметь отправлять состояние «открыто» и «закрыто». Да, есть датчики открытия двери, отправляющие своё состояние только при открытии двери и ничего не делающие при закрытии, такие не подойдут.

Датчик движения, наоборот, нужен такой, который шлёт только информацию об обнаружении движения. Крайне желательно, чтобы у датчика движения время сна[1] было небольшим. Например, 4–5 секунд. И, да, встречаются датчики движения, которые шлют информацию как об обнаружении движения, так и об отсутствии движения, такие лучше не использовать для этого решения.

Кроме того, понадобится виртуальный признак состояния занятости туалета. В Home Assistant это может быть, например, Input Boolean. Я же использую MQTT Binary Sensor, выставляя нужные мне значения из соответствующих автоматизаций.

Если захотите применить вспомогательные сценарии, может понадобиться:
- индикатор занятости туалета (в моём случае: подсветка шлюза Xiaomi Gateway 2 DGNWG02LM);
- беспроводная кнопка (в моём случае: Xiaomi wireless switch WXKG01LM).

Я думал о том, в каком виде привести логику работы решения. Решил пока остановиться на человеческом языке, чтобы не ограничиваться только Home Assistant’ом. Думаю, дополнительно, это поможет вникнуть в суть происходящего и создавать свои сценарии обдуманно, а не просто копировать готовое решение.

Основные сценарии:
1. Если открывается дверь или обнаружено движение и при этом выключен свет, включаем свет.
2. Если от датчика движения прилетает любое обновление статуса и при этом дверь закрыта, обнаружено движение и признак занятости туалета не установлен, устанавливаем признак занятости туалета. Логично, что при закрытой двери и наличии движения в туалете, там кто-то есть.
3. Если закрывается дверь и установлен признак занятости туалета, выключаем свет и снимаем признак занятости туалета. Признак занятости туалета устанавливается только при закрытой двери. Поэтому условие срабатывания сценария выполнится, когда дверь закроется после того, как ранее она была открыта. Обычно это происходит, когда посетитель покидает туалет. Да, это, наверное, одно из слабых мест. Бывают случаи, когда посетитель, находясь в положении сидя, открывает дверь, и снова её закрывает не меняя своего положения.
4. Если свет горит более минуты или датчик движения прекращает обнаруживать движение и при этом признак занятости туалета не установлен, выключаем свет. Обычно срабатывает, когда посетитель зашёл в туалет и вышел не закрывая дверь, т.е. прибыл не с целью использования данного помещения по основному назначению. Например, для визуального контроля счётчиков расхода воды или для замены накопителя бытовых отходов. В этом случае признак занятости туалета не выставится, а свет таки надо выключить автоматически.

Вспомогательные сценарии:
1. Если нет движения в течение 5 минут и при этом установлен признак занятости туалета, выключаем свет и снимаем признак занятости туалета. Туалет — не читальный зал. :-)
2. Если дверь открыта более полутора минут, выключаем свет и снимаем признак занятости туалета.
3. Если устанавливается признак занятости туалета, включаем индикацию занятости туалета. ВНИМАНИЕ! Дополнительно необходим индикатор занятности.
4. Если снимается признак занятости туалета, выключаем индикацию занятости туалета. ВНИМАНИЕ! Дополнительно необходим индикатор занятности.
5. Если нажата беспроводная кнопка, включаем свет и устанавливаем признак занятости туалета. ВНИМАНИЕ! Дополнительно необходима беспроводная кнопка. Применяется, если что-то пошло не так. Например, если произошёл случай из третьего основного сценария.

ВНИМАНИЕ! Для оптимальной работы вышеописанного решения, рекомендуется использовать туалет по основному назначению с закрытой дверью.

Никого ни к чему не призываю, ничего не навязываю. Просто делюсь тем, как реализовал у себя. Допускаю, что моя реализация не оптимальна, но на данном этапе меня она устраивает. Если есть желание поделиться своими решениями или появились вопросы, заходите обсудить.

Vladimir Turekhanov ・ June 17, 2021

вернуться


  1. Время, в течение которого датчик движения не будет отправлять сигналы об обнаружении движения, даже если обнаружит его.  ↩