По сути, этот поток, это простейшая виртуальная охранная система. Её основная задача, протоколировать проход и уведомлять о нем в приложении «Дом» на устройствах Apple. А при необходимости, можно подключить какие-либо другие действия, вплоть до уведомления охранного агентства…
Управляется поток из Apple Home через плагин «Mqttthing» для Homebridge, используя аксессуар типа «securitySystem». Если по какой-то причине не используется мост или не добавлен аксессуар1), его можно настроить2) напрямую в базе данных, хоть это неудобно3).
Реализовано два формата работы – с уведомлением и без уведомления. Без уведомления данные отображаются только на телефоне. С уведомлением, дополнительно отправляются на электронную почту.
Для работы потока необходим датчик положения двери4). Я использую Zigbee Sonoff SNZB-04.
В этой цепочке используются следующие узлы, которых нет в стандартной поставке:
Эти подпотоки входят в состав кода ниже и загружать отдельно их не надо!
Поток состоит из шести цепочек, часть из которых взаимосвязаны, а часть является дополнительными и не обязательными.
Протоколирование запуска системы – эта цепочка срабатывает только при запуске сервера или службы Node-RED, записывая в базу данных время начала работы потока. Помимо этого она восстанавливает состояние системы, установленное до перезапуска.
Получение и регистрация данных с датчиков – сюда подключаются датчики, которые инициируют выполнение цепочки – запись статусов, отправка уведомлений и писем. При подключении нового датчика, соответствующие записи в базе данных создаются автоматически. При необходимости переименования датчика, используется соответствующая цепочка ниже.
Прием и передача сообщений MQTT – эта цепочка взаимодействует непосредственно5) с приложением «Дом», принимая и передавая настройки и статусы охраны. Соответствующий код конфигурации Homebridge приведен тут.
Отправка ошибок SQLite и создание таблицы статусов – сервисная цепочка, отлавливающая ошибки и отправляющая соответствующие уведомления. Помимо этого, если необходимо, создает в базе данных базовую таблицу для записи статусов.
Изменение свойств существующих датчиков – цепочка для изменения имен датчиков, использующихся в уведомлениях, и названии таблиц в базе данных.
Резервное копирование базы – параноидальный модуль, создающий резервные копии на удаленном сервере при каждом срабатывании датчика. Это может пригодиться, если неприятель догадывается, где может храниться информация об его присутствии. Настройки6) вводятся в узле «Ввод параметров».
Для управления сигнализацией непосредственно из базы данных, необходимо добавить датчик в поток, вызвать его сработку, чтобы добавились необходимые данные в базу, открыть ДБ любым редактором7) и установить в таблице «statuses» следующие статусы:
Статус | target | current |
---|---|---|
Выключена | disarmed | disarmed |
Без уведомлений8) | athome | athome |
С уведомлениями | notathome | notathome |
Код для импорта можно скачать тут.
Обсуждение