Азы Node Red. Сигнализация (контроллер сцен) - зачем нужна и пример работы в HomeKit и Node Red

10 октября 2019, 19:05

В качестве предисловия

Многие из нашего сообщества держали в руках устройство управления умным домом (Hub) от компании Xiaomi. У меня он тоже есть и я им был доволен определенное время, понимая что это только первый шаг к умному дому.  Конечно сложные автоматизации на нем не сделать, но ценовой порог вхождение в тему умного дома и возможность физического взаимодействия с объектами управления, заставляют многих людей обратить на него внимание.

Так вот, одно из интересных возможностей этого устройства - это система сигнализации. При установке плагина для HomeKit появилась возможность  управлять состояниями сигнализации через программу "Дом" и использовать автопереключение по геолокации. При переходе на Node Red мне захотелось получить эту опцию обратно, так как я отказался от использования Хаба от компании Xiaomi в качестве устройства управления умным домом из-за его работы через китайские облака, невозможности написать сложные автоматизации,привязки к Wi-Fi и непонятных отказов.

Зачем нужна сигнализация?

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

В программе "Дом" устройство сигнализации представлено переключателем на 4 возможных сцены, которые вы можете увидеть на фото слева. 

При срабатывании тревоги, выводится оповещение и на иконке сигнализации вы увидите сообщение - тревога сигнализации.

Фактически, это устройство является контроллером сцен и от выбранной сцены происходят определенные действия, либо наоборот - какие-то действия будут блокироваться. Что и как будет работать в доме, в зависимости от выбора сцены, зависит только от вашей фантазии. В данном случае я поставлю знак равенства между  названиями сигнализация и контроллер сцен.

Основная функция сигнализации - это оповещение о каком-то событии и реакция на это событие, когда что-то происходит дома при определенных условиях (статус сигнализации). Мне лично не нравится получать сообщения о состоянии дверей, окон и т.д. когда я нахожусь "Дома", но эти сообщения не помешали бы мне когда я "Не дома". Конечно можно какие-то сообщения получать и средствами программы "Дом", но тут список событий достаточно ограничен.

Мой вывод, китовая функция сигнализации - это контроллер сцен с получением сигнала тревоги, где ваши автоматизации могут сформировать этот сигнал и сделать это устройство сигнализацией. 

Как завести в Homekit

Для того чтобы добавить сигнализацию в Homekit необходимо установить плагин node-red-contrib-alarm. Выглядеть все это будет как на картинке снизу. Ничего сложного, в параметрах входной и выходной ноды задаем формат HomeKit и определяем название панели в одной из нод, а во второй выбираем тоже имя.

Работа в HomeKit и Node Red одновременно

Получить контроллер сцен только в HomeKit недостаточно интересно, так как большинство автоматизаций мы создаем в Node Red и поэтому, есть необходимость задавать и получать статус сигнализации непосредственно из Node Red. Флоу с демонстрацией возможностей данного контроллера сцен со множеством комментариев, непосредственно во флоу, Вы найдете по ссылке. Для начинающих советую прочитать предыдущие статьи про глобальные переменные и функции в Node Red, где я старался разъяснить как это работает и для чего нужно. Все эти навыке использованы во флоу сигнализации.

Пояснения по работе примера по ссылке

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

Плагин node-red-contrib-alarm  имеет входную ноду State Changed и выходную Change State. Работает это так: надо отправить запрос на выходную ноду о смене режима и во входной ноде мы получим текущее состояние. Почему я выбрал 2 набора нод по смене режима? Мне так просто было удобно, хотелось работать с цифровыми значениями, а не в формате HomeKit. Одна пара работает в формате HomeKit, а другая работает с цифровыми значениями. Выбор формата происходит внутри нод State Changed и Change State. Для работы флоу я добавил две глобальные переменные: SecuritySet и SecurityStatus. Первая задает режим сигнализации, а вторая показывает текущий статус. Это очень удобно, так как я могу использовать статус сигнализации или менять режим в любом флоу проекта. В правой части картинки показана принудительное задание глобальной переменной при старте Node Red, а смена режимов (используется только для тестирования работы флоу). 

В самом верху картинки расположена связка для работы сигнализации с HomeKit, а также введен дополнительный переключатель  с интеграцией в HomeKit. Суть этого переключателя - переключение между двух режимов "Дома" и "Не дома". Это сделано для активации этих режимов по сценариям HomeKit c геолокацией, так как напрямую Apple требует подтверждения включения режимов сигнализации. Функция SecuritySystem нужна для преобразования статуса цифровых значений в HomeKit формат (обратная связь если сигнализация меняет статус не в HomeKit). Чуть ниже, смена режимов сигнализации от кнопки Xiaomi (круглая), которая может отдавать 6 состояний, если ее подключить через китовый выход плагина Deconz. При желании, можно организовать определенную последовательность нажатий типа пин-код (3-5-2 для примера), чтобы сделать отключение более безопасным, но это уже другая тема. Еще чуть ниже идет последовательность нод для отправки значения смены режима сигнализации из глобальной переменной, опрос изменения каждую секунду. Если где-то в проекте вы поменяли режим сигнализации, то через секунду он активируется. Теперь посмотрим на картинку снизу.

Вверху находится селектор сообщений статуса сигнализации, которые я отправляю в Телеграмм и на озвучку голосом через TTS, а также я передаю статус сигнализации в глобальную переменную, которую я потом буду использовать в качестве фильтра сообщений. Чуть ниже разместилась нода Alarm, где можно настроить задержку срабатывания выхода (у меня настроена на 15 секунд) и которая отправляет сообщение в Телеграмм, но можно прицепить и какую-нибудь сирену. Еще ниже размещен набор нод для работы со статусами открытия/закрытия входной двери, где я подключил симулятор смены статуса для тестов. Как это работает: при открытии входной двери и при условии, что состояние сигнализации Away ("Не дома") - активируется нода DoorOpened (название режима активации выбирается внутри ноды) и поступает сообщение тревоги. Нода Alarm активирует выход с задержкой 15 секунд и отправляет сообщение в Телеграмм. Сброс тревоги в HomeKit и ноды Alarm можно сделать при смене режима сигнализации. В этом же наборе нод происходит отправка сообщений по статусам открытия/закрытия двери, при условии выбора режима "Не дома". Это реализуется с помощью ноды AND (Плагин node-red-contrib-bool-gate), где в качестве условия использована глобальная переменная статуса сигнализации. Если дверь не закрыта в течении 30 секунд, то тоже происходит отправка сообщения, но в данном примере независимо от режима сигнализации.

Выводы

Сигнализация - по сути контроллер сцен и его наличие в управлении умного дома необходимо. Режимы которые использованы - это исторически сложившееся решение управления домом. Мне не хватает лишь одного "В отъезде" (длительный период отсутствия). Я дополню этот режим за счет дополнительного переключателя в HomeKit. 

Все вопросы, пожелания оставляйте в комментариях к статье и я рад буду ответить.


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

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

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Блюфоксов Блюфокс (GermanBluefox)

    В названии HomKit => HomeKit ?

    Node Red => Node-RED

  2. (Brain)
    (Brain) отредактировано 3 дня назад

    Еще чуть-чуть и вы бы переплюнули структурную схему большого адронного коллайдера. Но там хоть бозон Хигса нашли. А вы событие превратили в звук и свет ))

    • Евгений Лузин (EvLuz)
      Евгений Лузин (EvLuz) 3 дня назад

      На самом деле - это понять возможности Node Red, попрактиковаться. Цель - не является главным результатом, а лишь процесс её достижения.))

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

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

MI-DOM

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

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

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

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

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit