Node-Red. Простые рецепты. Датчик движения.

20 марта 2019, 13:22

Исходные данные: есть установленные Home Assistant и Node-Red, прицеплен шлюз Xiaomi с датчиком движения.

Задача: сделать так, чтобы при срабатывании датчика движения на шлюзе включалась подсветка. Подсветка должна включаться только в темноте. Подсветка должна выключаться через 2 минуты после окончания движения.

Алгоритм работы датчика движения от Xiaomi: при сработке датчик посылает сообщение "on" и начинает двухминутный отчет. Если в течение этого времени было движение, то таймер сбрасывается на ноль и отсчет начинается заново. Если движения нет в течение 2 минут, он посылает сообщение "off" и в дополнительных атрибутах сообщения указывает время в секундах с момента последнего движения. Затем от посылает еще несколько аналогичных сообщений "off" через 3, 5, 10 минут. Этим можно воспользоваться в своих автоматизациях. Но сначала реализуем самый простой вариант с выключением света по первому сообщению "off" через две минуты после окончания движения.


Необходимые ноды: events:state, current state, call service.

Перетаскиваем ноды на рабочее поле, соединяем их, как показано на рисунке.

Логика работы такая: ждем срабатывания датчика движения. После сработки проверяем, было ли это включение ("on") или выключение ("off"). Если включение - то отправляем сообщение дальше на следующую проверку. Если выключение - то выключаем свет.

Свойства ноды events:state заполняем так:

Name: наименование ноды. Придумываете сами.

Server: имя соединения с Home Assistant.

Entity ID: тут мы вводим наименование датчика, которое хотим отслеживать. В данном случае это датчик движения binary_sensor.motion_sensor_158d0002c1877d.

Halt if State: вот это интересно. Тут мы можем ввести условие, при котором нода прекращает свою работу и не передает сообщения дальше. Например, мы не хотим получать сообщения о выключении датчика, для этого пишем условие is off, т.е. остановиться, если сообщение == "off". Тем самым мы пропускаем дальше только сообщения о включении датчика на движение. Но! Сообщение в этом случае отправляется на второй выход ноды. Этим и воспользуемся.

State type: String. Это тут по умолчанию.

Еще две галочки: 

Output only if state change: выдавать сообщение только если состояние изменилось. Пусть выдает все сообщения. Выключаем.

Output Initially / On Deploy: выдавать значение при запуске системе или при перезапуске потока. Включаем ее, это позволит освещению сразу включаться, если было движение перед запуском потока.

Жмем Done, закрываем ноду.


Теперь займемся реализацией проверки уровня освещенности. 

Нода current state проверяет значения датчика освещенности на шлюзе и, если темно, то пропускает выполнение дальше, иначе останавливает выполнение потока:

Первые два поля заполняем как и раньше.

Entity ID: здесь указываем датчик освещенности на шлюзе. Она нам выдает значения освещенности от 0 до 992. Это значение мы и будем использовать.

Halt if State: останавливаем выполнение, если слишком светло. Тут мы проверяем, что уровень освещенности с датчика больше 300 люкс. Если больше - останавливаемся. Обратите внимание на выпадающий список перед полем, куда мы вводим число 300 - там выбраны числовые значения (number).

Остальное оставляем по умолчанию.

Теперь самое интересное - включение света. Реализуется это вызовом соответствующего сервиса Home Assistant. Нода так и называется - call service, настраивается так:

Domain: homeassistant

Service: turn_on

Entity ID: вводим то, что хотим включить. В данном случает это подсветка на шлюзе light.gateway_light_04cf8c8f96cf.

Остальное по умолчанию.

При срабатывании этой ноды произойдет вызов сервиса turn_on и на этом выполнение закончится.

Вторая вызывает сервис, который выключает подсветку на шлюзе. Настраивается аналогично, только вызывается сервис turn_off:

После срабатывания этой ноды выполнение полностью прекратится до поступления новой сработки датчика движения.

Итого, все работает так:

  1. Получаем событие от датчика движения. Если оно равно off - выключаем подсветку. Если on - идем дальше.
  2. Проверяем уровень освещенности. Если слишком светло (> 300 люкс) - останавливаемся. Если темнее - идем дальше.
  3. Включаем подсветку на шлюзе.  Подсветка выключится через 2 минуты после последнего зарегистрированного движения.

Код к статье доступен тут. В Node-Red выберите Меню - Import - Clipboard, скопируйте этот кусок кода и выберите, куда вставить ноды. Поправьте наименования датчиков и шлюза на свои - и можно запускать.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 5 месяцев назад

    Ждём продолжение =)

  2. . . (Bonefolder)
    . . (Bonefolder) 5 месяцев назад

    Вопрос: неужели, это нельзя было решить силами ХА?

    • Рустам Панин (m_wildcat54)
      Рустам Панин (m_wildcat54) 5 месяцев назад

      Это - запросто. Но нужно начинать с чего-то простого, чтобы понять идею. Дальше - все сложнее. И все проще, по мере понимания.

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

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

MI-DOM

+7 977 282-80-53
Промокод:
SPRUTAI
Размер скидки:
5%

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

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

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

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется