Лучшая автоматизация света в ванной | Node-RED, Home-Assistant

13 июня 2021, 09:46

Казалось бы, простой вопрос: «Как сделать включение света автоматическим?» Решается это, действительно, очень просто. Но вот «Как сделать автоматическим, а, главное, корректным, его выключение?» - совсем не то же самое.

Суть задачи сводится к определению наличия человека в помещении. И сейчас я покажу, как с нуля построить вот такой сценарий в Node-RED, используя датчик движения и датчик открытия двери.

Ещё с самого начала пути внедрения умного дома в 2012 году мне никак не удавалось решить вторую часть этой головоломки, а именно – выключение света в ванной. Встроенные и сторонние инструменты создания сценариев в используемых тогда мною контроллерах не имели никаких шансов на это. 

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

Fibaro Home Center Lite – это iPhone в мире контроллеров домашней автоматизации, только версии Lite. Красиво, просто, для хомячков. Сложные сценарии создавались путём дробления алгоритма на несколько частей с последующей их связкой. Но это не спасало, и для еще большей гибкости нужно было писать сценарии на языке LUA.

Raspberry Pi – хардкорное решение с Raspbian и Domoticz. Такой инструмент как Blockly позволял реализовывать по-настоящему сложные вещи. Тогда мне казалось, что я решил поставленную задачу. Пусть с костылями и нагромождениями блоков. Но, нет, осечки и ложные выключения всё еще случались.

Лишь в 2018 году, когда я переехал на более-менее юзабельную версию Home Assistant, примерно 0.40, я познакомился с Node-RED – прекрасный, гибкий, мощнейший инструмент автоматизации. И в нём то я и обнаружил тот заветный компонент для решения моей задачи – state-machine.

State-машина или Конечный автомат в рамках Node-RED – это нода, имеющая определённое количество состояний и триггеров, которые вызывают её переход из одного состояния в другое. В любой момент времени нода может находиться только в одном из состояний и переходить в другое лишь, когда сработает определённый для этого состояния триггер. Один и тот же триггер может быть использован для перехода более чем из одного состояния.

Вот схематичный пример того, как будет выглядеть будущий сценарий:

1600x_image.png?1623471223

Я открываю дверь (2) – свет включился. Захожу внутрь (3) – движение обнаружилось (4). Закрываю дверь (5) и начинаю делать свои дела (6) – свет остаётся включённым, и при выполнении следующего условия по обнаружению движения (7), помещение помечается занятым (8). С этого момента свет сам не погаснет. Выхожу из санузла (9) и закрываю дверь (5) – свет выключится через заданный промежуток времени (10). Если оставить дверь открытой, то свет погаснет по таймауту после последнего события об отсутствии движения (11). Состояние помещения до тех пор не меняется. Если, находясь внутри (8), выключить свет выключателем (12), то при следующем обнаружении движения (13), он включится.

Детальный процесс построения сценария в Node-RED показан в видео ниже. Готовый код Node-RED flow доступен на GitHub.

Код Node-RED flow доступен на GitHub.

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


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Антон Григорьев (Infinity)

    Будет ли это в Sprut? :-)

  2. Геннадий Куракин (Onag)

    Игрался так года три назад. Пока не купил hiome. Прочитал статью. Понял, что ничего лучше не придумано. Автору спасибо. 

  3. Евгений Кононенко (eugene.kononenko)

    Всегда с интересом слежу за алгоритмами автоматизаций, что-то беру на заметку. С уважением почитал заметку. Но, к сожалению, ко мне не применимо. Санузел совмещённый :)

    • Сергей Исаенков (s.isaenkov)

      Применимо. В сценарии такой вариант учтён.

      • Евгений Кононенко (eugene.kononenko)
        Евгений Кононенко (eugene.kononenko) отредактировано месяц назад

        Дети живут отдельно, так что дверь закрывается только при важных делах :)

        Реализовал так - если появилось движение, то включается только ночник (зеркало), чего хватает с лихвой для ночных или быстрых походов и просто руки помыть. Выключается при отсутствии движения более 3х минут. Если включить большой свет принудительно, то ночник отключается, и включается таймаут на 10 минут, вдруг кто-то заснул с книжкой :). Этого алгоритма хватает на все случаи. 

  4. (BodyDoc)
    (BodyDoc) месяц назад
    1000x_image.jpeg?1623596961
  5. (egorz)
    (egorz) месяц назад

    Работа серьёзная! Прикрутил себе на пробу, вроде работает. Но словил "невыключение". Свет тупо горит и горит. Пока не понял почему.

    • Сергей Исаенков (s.isaenkov)
      Сергей Исаенков (s.isaenkov) отредактировано месяц назад

      Я бы порекомендовал на какое-то длительное время оставить открытым окно с Node-RED, чтобы отслеживать текущие статусы датчиков, таймеров и state-машины для сужения диапазона поиска возможных причин такого поведения.

  6. Александр Михалев (AlexSinttig)
    Интересный алгоритм, даже не задумывался о таком. Но для меня он применим в качестве "включение вытяжки в ванной по уровню влажности", Спасибо!
  7. (niagwahe)
    (niagwahe) месяц назад

    Интересно, я до сих пор обходился простейшей автоматизацией с одной акарой на движение. Единственная проблема – душевая кабинка. Если забыл включить второй светильник, то в душе может стать темновато. Планирую туда загнать ESPHome с дополнительным датчиком и небольшую полоску светодиодов. В принципе там родное освещение/вытяжка есть, но неохота держать постоянно включенной.

  8. (Snarky)
    (Snarky) месяц назад

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

    • Сергей Исаенков (s.isaenkov)
      1000x_image.png?1623677453

      В алгоритме предусмотрено использование таких датчиков, у которых есть лаг. В том числе это было подробно описано в видео.

  9. Александр Л.           (AlexOwl)
    Александр Л. (AlexOwl) отредактировано месяц назад

    Имею примерно такой же алгоритм (с датчиком движения и двери), только реализация чуть более красивая
    Создание дополнительного HA Entity (на скрине bathroom_occupancy) позволяет разделить автоматизацию определения человека внутри и управления состоянием устройств: включение ламп реализовано отдельной автоматизацией в HA с использованием дополнительного input_boolean, отвечающего за перевод света в ручной режим (включение этого ручного режима происходит с помощью другой автоматизации выключателем aqara opple); дополнительно автоматизация яндекс станции спрашивает через определенное время не забыл ли вы выключить ручной режим и предлагает перевести свет в автоматический, ответив всего лишь "да"/"нет" (дополнительно хочу еще сделать уведомление на айфон с кнопками)

    В дальнейшем планирую еще более сильно перестроить, создав "фейк оболочку" для каждой лампочки, чтобы их прокинуть в HomeKit и если изменение состояния происходит с телефона, то автоматизация переводится в ручной режим, потому как сейчас, например, принудительно выключив лампочку через HomeKit автоматизация сломается, пока не произойдет логическое выключение по стейт машине

    Ссылка на гист с флоу, автоматизацией ручного режима и примера управления через яндекс станцию

    1000x_image.png?1623680364 1000x_image.png?1623680349 1000x_image.png?1623680306
    • (Syndikats)
      (Syndikats) месяц назад

      А вы не могли бы поделиться остатками автоматизации? На яндекс скрипт и прочее? Очень интересно изучить...

  10. (ural)
    (ural) месяц назад

    И эта автоматизация ломается, если о какой-либо причине дверь не закрывается полностью :(

    • Сергей Исаенков (s.isaenkov)

      Я это решил установкой датчика двери ближе к петлям. Тогда даже при едва приоткрытой двери (хотя, формально, закрытой) она также считается закрытой.

  11. (maksimlin94)
    (maksimlin94) 19 дней назад
    Подскажите, пожалуйста, как в эту автоматизацию добавить условие работы в определенный промежуток времени, например, чтоб не работало с 23:00 до 08:00? Пробовал через time-switch, но упорно отказывается принимать 1000x_image.png?1626214941

К списку статей

Устройства в материале

Home Center Lite

Производитель: Fibaro

Raspberry Pi 4

Производитель: Raspberry Pi
Заказать на:

Vera Lite

Производитель: VERA

Скидки для сообщества

Ноотехника

+375 17 233-25-45
Промокод:
Sprut
Размер скидки:
10%
Действует у всех официальных представителей. Для применение необходимо указать в поле комментария или при звонке менеджеру.

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Тематические чаты

Похожие статьи

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
02 июля 2020, 07:24
Я хочу поделиться своей разработкой: "умным открывателем пластикового окна". В статье вы найдете все необходимое, чтобы повторить проект и изготовить собственный привод для открывания окна с использованием штатной фурнитуры окна.
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.