Найти тему
K12 :: О ESP32 и не только

Термостат на ESP32 с удаленным управлением. Часть 10. Охранно-пожарная и аварийная сигнализация

Оглавление

Добрый день, уважаемые читатели!

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

Данная статья является логичным продолжением и завершением серии статей “Термостат + ОПС”, но никто не запрещает вам применить его и в других ваших проектах. Краткое содержание предыдущих серий:

Концепция библиотеки reAlarm

Для начала определимся с терминами и понятиями, которые будут использоваться в дальнейшем в данной статье. А заодно разберемся с принципами функционирования библиотеки на текущий момент времени.

Дисклеймер.Все, что описано в данной статье – применимо в первую очередь для частных домовладений и квартир, где пока что не требуется обязательная установка только сертифицированных устройств охранно-пожарных сигнализаций, лицензирование и контроль со стороны соответствующих “органов”.
Все что вы делаете – исключительно на ваш страх и риск, я не могу дать никаких предварительных гарантий в ваших самодельных конструкциях и прошивках.
Я не являюсь профессиональным монтажником или инженером ОПС, поэтому некоторые фразы или термины могут показаться профессионалам из данной области некорректными или неуместными. Что ж, в этом случае можете поправить меня в комментариях.

Используемые датчики или сенсоры

Основной частью любого устройства сигнализации являются сенсоры. В данной библиотеке (и в данном устройстве, соответственно) вы можете использовать как проводные, так и  беспроводные сенсоры, работающие на частоте 433 MHz. Количество подключаемых датчиков ограничено только физическими возможностями микроконтроллера (по наличию свободных GPIO) и памятью устройства. Для подключения проводных датчиков можно так же легко использовать I2C-расширители GPIO.

Это могут быть:

  • Герконы или датчики дверей и окон, ворот и т.д. которые размыкаются при открытии окна или двери
  • PIR-датчики движения для обнаружения движения теплых объектов внутри охраняемых помещений
  • Датчики протечки, уровня воды, угарного и горючих газов – то есть датчики для контроля технического состояния инженерных коммуникаций дома
  • Датчики дыма и открытого пламени – позволяют своевременно обнаружить пожар и принять меры к его ликвидации (или хотя бы к эвакуации)
  • Датчики контроля сетевого напряжения – позволяют обнаружить пропадание основного сетевого питания дома или квартиры
  • Кнопки от дверных 433-MHz звонков – можно использовать как тревожные кнопки, либо просто прислать уведомление на телефон

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

Проводные датчики подключаются к входам устройства путем двухпроводного или трехпроводного шлейфа. Количество проводных датчиков ограничено только наличием свободных GPIO на вашем микроконтроллере, а также можно задействовать расширители различные GPIO. Поддерживаются как нормально замкнутые датчики, так и датчики с нормально разомкнутым выходом. Питание датчиков не зависит от напряжения питания микроконтроллера – например это могут быть стандартные промышленные 12-вольтовые PIR. Если рассматривать устройство “Термостат + ОПС”, то схема подключения проводных датчиков выглядит следующим образом:

-2

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

Беспроводные датчики 433 Мгц вы можете использовать, если по каким-либо причинам невозможно использовать проводные. Про принципы их работы я уже рассказывал в другой статье, сами датчики планирую подробнее рассмотреть позже.

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

В качестве датчиков так же могут выступать различные беспроводные пульты управления для переключения режима охраны – но учтите, что их довольно легко перехватить и имитировать. Впрочем, в подавляющем большинстве китайских WiFi и GSM-сигнализаций беспроводные 433 МГц датчики и пульты используются вообще без зазрения совести. Да и от деревенских синяков, ищущих чем-бы поживиться на вашей даче, уж точно защитят.

Также вы можете использовать в качестве датчиков множество DIY-модулей с AliExpress, как пяти-вольтовых, так и трех-вольтовых, при условии соответствующего подключения к микроконтроллеру. Здесь всё зависит только от вашей фантазии и бюджета.

Виртуальные датчики. Кроме датчиков, которые подключены тем или иным способом к вашему устройству, библиотека позволяет использовать данные с других “умных” устройств, созданных по той же самой технологии. Для этого можно использовать разные способы обмена данными между ESP, но проще всего – использовать локальный MQTT-брокер со специальными скрытыми  от внешних систем топиками. Это позволяет задействовать в работе “центрального пульта” сенсоры, которые физически подключены к другому контроллеру. А так же передавать данные о сигналов с датчиков на другие устройства. Локальный MQTT брокер позволяет сделать это с минимальными задержками, даже есть отсутствует доступ к “глобальному” интернету.

Например, у меня имеется несколько относительно автономных устройств: в доме, в гараже, в бане, в теплице. Все они подключены к моей локальной сети и локальному брокеру, который запущен на домашнем роутере. Да, использование wifi-это не 100% надежно, но зато очень просто и очень легко. Но потребуется предпринять дополнительные меры по поддержанию бесперебойной работы роутера.

В гараже установлены несколько проводных датчиков движения и датчики двери и подъемных ворот. Контроллер гаража использует данные с них для управления освещением. Но вместе с этим, сигналы с этих датчиков одновременно передаются на центральное устройство, которые выполняет функции ОПС (кроме прочих). Получается, что одни и те же датчики одновременно используются для двух совершенно разных целей – автоматики освещения и охраны. Там же есть датчики дыма, сигналы с которых так же передаются на центральный “пульт” дома.

В бане установлены датчики дыма на чердаке, но функций пожарной сигнализации контроллер не имеет – вместо этого при срабатывании дымового датчика он передаст сигнал на центральный пульт также через wifi и локальный брокер. Но для гарантии можно реализовать часть функций и на локальном контроллере.

Сигналы (сообщения) с датчиков

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

  • alarm (тревога) – это сигнал на пульт о любом событии, на которое рассчитан ваш датчик: открытие двери, движение в зоне охраны, нажатие кнопки, дым, протечка воды и т.д.
  • alarm cancel – отмена (сброс) тревоги – сигнал о восстановлении спокойствия: закрытие двери, устранение протечки, восстановление нормального процесса и т.д.
  • tamper – сигнал о попытке вскрытия или повреждения датчика или шлейфа охраны
  • low power – низкий уровень заряда батареи – для устройств с автономным питанием
  • и  т.д.

Как правило, “отмена тревоги” генерируется только проводными датчиками (например самыми обычными герконами или концевиками), поэтому в беспроводных сенсорах сброс тревоги происходит автоматически спустя какое-то время по таймеру. Иногда необходимо сбросить сам датчик после сигнала тревоги путем кратковременного снятия питания – например для пожарных датчиков, что также может делаться автоматически.

Для предупреждения ложных срабатываний имеется функция генерация тревоги “с подтверждением” – то есть для выдачи сигнала тревоги необходимы подтверждающие сигналы с того же или “соседних” датчиков той же зоны в течение определенного времени. Например PIR-сенсор может легко среагировать на солнечный зайчик или поток теплого воздуха, но это не вызовет включения сирены, если не будет подтверждения с другого датчика или открыта дверь, например.

Зоны охраны

Но сами по себе сигналы и сообщения с датчиков ничего в системе не генерируют – они просто подаются “на вход” той или иной зоны охраны. А уже настройки зоны определяют, каким образом необходимо реагировать на поступающие сигналы. Таким образом зона охраны – это виртуальная группа, которая позволяет логически объединять сигналы с датчиков и определять (настраивать) реакции на них в разных режимах работы системы.

Зоны могут быть организованы как по физическому расположению, так и по логическим функциям, например:

  • Зона “периметр дома” – датчики дверей и окон, срабатывание которых говорит о том, что в помещение пытаются проникнуть извне. В эту же зону можно включить датчики вибрации, которые сработают при разбитии окна, например.
  • Зона “внутри дома” – как правило в эту зону стоит “завести” сигналы с датчиков движения внутри охраняемого помещения.
  • Зона “вне дома”датчики движения во дворе используются для управления освещением, а в режиме охраны – выдадут сигнал на запись для камеры и пришлют тихое уведомление на телефон, не поднимая паники и не включая сирены.
  • Зона “tamper”это может быть виртуальная зона с круглосуточной охраной, куда стекаются данные со всех датчиков контроля целостности. Таким образом любой сигнал в этой зоне вызовет выдачу уведомлений вне зависимости от того, включена охрана или нет.
  • Зона “пожар”– зона с безусловной круглосуточной тревогой в любом режиме охраны.
  • Инженерные системы – при обнаружении сигнала тревоги в этой зоне присылается уведомление на телефон и предпринимаются меры по устранению аварии – перекрывается вода, газ и т.д.

Список зон вы можете расширить или изменить по своим вкусам и понятиям. Разные сигналы одного и того же датчика можно направлять в разные зоны с разными типами реакции.

Режимы работы

На текущий момент библиотека поддерживает четыре режима работы:

  • ASM_DISABLEDРежим охраны отключен. Реакции на датчики движения внутри охраняемой зоны и по её периметры (двери, окна) – нет. Инженерные и пожарные датчики обрабатываются в полном объеме.
  • ASM_ARMEDПолный режим охраны. Система реагирует на сигналы любых датчиков, подключенных к устройству тем или иным способом. При нарушении включается сирена и световой маячок.
  • ASM_PERIMETERРежим охраны периметра. Система не реагирует на датчики, установленные внутри охраняемого помещения, однако двери и окна охраняются как при полном режиме охраны. Инженерные и пожарные датчики обрабатываются в полном объеме.
  • ASM_OUTBUILDINGSРежим охраны внешних помещений. Для постановки на охрану только внешних строений, например гаража. Инженерные и пожарные датчики обрабатываются в полном объеме. Вот честно говоря, сам не пользовался ни разу.

Переключать режимы охраны можно:

  • С помощью MQTT панели управления со смартфона или компьютера
  • С 433 МГц радиопульта
  • С помощью кнопочной станции на панели управления устройством (опционально)

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

Оповещения о событиях

Предусмотрены несколько типов оповещений о событиях:

  • Сирена 12в
  • Световой маячок 12в
  • Уведомления в telegram

Сирена включается только в режиме тревоги на заданное время (например 3 минуты). При включении и отключении режима охраны выдается несколько коротких звуковых сигналов – для индикации переключения режима. Сирену можно отключить удаленно, если не вы хотите беспокоить соседей, например.

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

Уведомления в telegram отправляются в группу, в которую вы можете включить всех заинтересованных лиц. Например так:

-3

При наличии шлюза “MQTT – telegram” с обратной связью, вы можете управлять системой охраны непосредственно из telegram.

Типы реакции на события

Для каждой зоны охраны, и для каждого режима при запуске устройства вы должны настроить реакции – как будет реагировать система на различные сигналы в данной зоне и данном режиме работы. Библиотека поддерживает следующий список реакций:

  • ASR_ALARM_INC – Увеличить счетчик тревог
  • ASR_ALARM_DEC  – Уменьшить счетчик тревог
  • ASR_MQTT_EVENT  – Публикация события на MQTT
  • ASR_MQTT_STATUS – Публикация состояния охраны на MQTT
  • ASR_TELEGRAM – Уведомление в Telegram
  • ASR_SIREN – Включить сирену
  • ASR_FLASHER – Включить маячок
  • ASR_BUZZER – Звуковой сигнал на пульте
  • ASR_RELAY_ON – Включить реле (нагрузку)
  • ASR_RELAY_OFF – Выключить реле (нагрузку)
  • ASR_RELAY_SWITCH – Переключить реле (нагрузку)

Каждая реакция – это просто один бит 16-битного числа, таким образом их можно легко комбинировать между собой. Для упрощения настройки я чаще всего использую “стандартные” наборы реакций:

// "Стандартные" наборы реакций
ASRS_NONE = 0x0000; // Никакой реакции (по умолчанию)
ASRS_CONTROL = ASR_MQTT_EVENT | ASR_MQTT_STATUS;
ASRS_REGISTER = ASR_MQTT_EVENT | ASR_MQTT_STATUS;
ASRS_ONLY_NOTIFY = ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM;
ASRS_FLASH_NOTIFY = ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_FLASHER;
ASRS_ALARM_NOTIFY = ASR_ALARM_INC | ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_BUZZER;
ASRS_ALARM_SILENT = ASR_ALARM_INC | ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_BUZZER | ASR_FLASHER;
ASRS_ALARM_SIREN = ASR_ALARM_INC | ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_BUZZER | ASR_SIREN | ASR_FLASHER;
ASRS_POWER_ON = ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_FLASHER;
ASRS_POWER_OFF = ASR_ALARM_INC | ASR_MQTT_EVENT | ASR_MQTT_STATUS | ASR_TELEGRAM | ASR_BUZZER | ASR_FLASHER;

Таким образом ASRS_NONE означает полный игнор, ASRS_ONLY_NOTIFY – только уведомления в telegram,  ASRS_ALARM_SILENT – тихую тревогу без сирены, а ASRS_ALARM_SIREN – тревогу по полной программе, с сиреной, блекджеком и …

С концепцией разобрались, переходим к практической части – добавим в наш проект соответствующие функции.

Продолжить чтение статьи в нормальном оформлении вы можете на моем основном сайте