Оглавление:

Сигнализация PIR для Wi-Fi (и домашней автоматизации): 7 шагов (с изображениями)
Сигнализация PIR для Wi-Fi (и домашней автоматизации): 7 шагов (с изображениями)

Видео: Сигнализация PIR для Wi-Fi (и домашней автоматизации): 7 шагов (с изображениями)

Видео: Сигнализация PIR для Wi-Fi (и домашней автоматизации): 7 шагов (с изображениями)
Видео: 🔥Подробная настройка Wi-Fi камеры видеонаблюдения c 🍒Wildberries, приложение iCsee от эксперта ipCom 2024, Ноябрь
Anonim
Image
Image
Сигнализация PIR для Wi-Fi (и домашней автоматизации)
Сигнализация PIR для Wi-Fi (и домашней автоматизации)

Обзор

Это руководство даст вам возможность просматривать последнюю дату / время (и, при необходимости, историю времени), когда срабатывали PIR (пассивные инфракрасные датчики) вашей домашней сигнализации, в вашем программном обеспечении домашней автоматизации. В этом проекте я расскажу, как использовать OpenHAB (бесплатное программное обеспечение для домашней автоматизации, которое я использую лично), хотя оно будет работать с любым другим программным обеспечением для домашней автоматизации или приложением, поддерживающим MQTT (также описанным далее в этой статье). Это руководство проведет вас через необходимые шаги по подключению печатной платы и Wemos D1 mini (плата IOT, в которой используется микросхема ESP8266), которая подключается к зонам сигнализации в вашем блоке управления сигнализацией, чтобы, когда зона (содержащая один или несколько PIR), Wemos отправляет сообщение по беспроводной сети, используя протокол MQTT, в ваше программное обеспечение домашней автоматизации, которое, в свою очередь, отображает последнюю дату / время этого триггера. Также предоставляется код Arduino для программирования Wemos.

Вступление

Изображение выше - это то, что я вижу на одном из экранов приложения OpenHAB на моем iPhone. Текст даты / времени имеет цветовую кодировку, чтобы обеспечить более быстрое представление о том, когда был активирован PIR - он будет отображаться красным (сработал в течение последней 1 минуты), оранжевым (сработал в течение последних 5 минут), зеленым (сработал в течение последних 30 минут)., синий (сработал в течение последнего часа) или иначе черный. Если щелкнуть дату / время, отобразится исторический обзор триггеров PIR, где 1 означает срабатывание, а 0 - бездействие. Для этого есть много применений, например, он может дополнить ваше решение для присутствия дома, он может обнаруживать движение, если вас нет, и с помощью правил OpenHAB, отправлять уведомления на свой телефон, вы можете использовать его, как и я, чтобы узнать, есть ли мои дети. встать посреди ночи, вызванный PIR, который находится за пределами их спален!

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

Предположения

Это руководство предполагает, что у вас уже есть (или будет настроено):

  • Очевидно, это домашняя сигнализация с PIR (пассивными инфракрасными датчиками), и что у вас есть доступ к блоку управления сигнализацией для подключения необходимой проводки.
  • OpenHAB (бесплатное программное обеспечение для домашней автоматизации с открытым исходным кодом) работает, хотя, как уже говорилось, он должен работать с любым программным обеспечением для домашней автоматизации, которое может включать привязку MQTT. Кроме того, вы можете изменить код самостоятельно в соответствии со своими потребностями.
  • Брокер Mosquitto MQTT (или аналогичный) установлен и привязка настроена с помощью OpenHAB (MQTT - это протокол типа подписки / публикации для обмена сообщениями, который является легким и отлично подходит для связи между устройствами)

Если вы не используете OpenHAB и брокер MQTT, прочтите эту отличную статью на веб-сайте MakeUseOf.

Что мне нужно?

Чтобы создать беспроводной контроллер, вам нужно будет получить следующие детали:

  • Wemos D1 mini V2 (имеет встроенный беспроводной ЧИП ESP8266)
  • Компаратор LM339 (он будет проверять состояние холостого хода PIR и срабатывание)
  • Источник питания 5 В постоянного тока для Wemos (ИЛИ, понижающий преобразователь постоянного тока в постоянный. Примечание: регулятор напряжения LM7805 может не работать для этого приложения, как обсуждается далее в этом проекте)
  • Два резистора для делителя напряжения (размер будет зависеть от напряжения вашей сигнализации, обсуждается позже в проекте)
  • Один резистор сопротивлением 1 кОм, который действует как понижающий резистор для управления мощностью LM339
  • Один полевой МОП-транзистор 2N7000 (или аналогичный) для логического включения LM339 (возможно, необязательно, обсуждается позже в проекте)
  • Макетная плата подходящего размера для настройки и тестирования схем
  • Связка макетных проводов для соединения всего вместе
  • Необходимые инструменты: бокорезы, одножильный провод
  • Мультиметр постоянного тока (обязательно!)

Шаг 1: Блок управления системой охранной сигнализации

Блок управления системой охранной сигнализации
Блок управления системой охранной сигнализации

Сначала несколько предупреждений и заявлений об отказе от ответственности

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

Ниже приведен список некоторых вещей, которые вам следует знать перед тем, как начать - убедитесь, что вы прочитали и поняли каждую из них, прежде чем продолжить! Я не несу ответственности, если вы испортите свою систему охранной сигнализации и / или заплатите установщику, чтобы он ее починил. Однако, если вы прочитаете и поймете следующее и примете необходимые меры предосторожности, все будет в порядке:

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

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

  • Дата / время не были установлены (мне понадобился мастер-код и последовательность клавиш из руководства для перенастройки)
  • Резервная батарея не была подключена (легко исправить, я просто забыл снова подключить батарею)

3. В моей системе сигнализации есть 4 блока подключения зон (обозначенные Z1-Z4) для подключения PIR к главной плате сигнализации, однако моя система сигнализации на самом деле способна работать с 8 зонами. Каждый блок подключения зон может фактически запускать по 2 зоны каждая (Z1 выполняет Z1 и Z5, Z2 выполняет Z2 и Z6 и т. Д.). Система охранной сигнализации имеет встроенную защиту от несанкционированного доступа, чтобы остановить кого-нибудь, открыв крышку системы охранной сигнализации, как указано выше, или перерезав провода к PIR. Он различает тампер каждой зоны через оконечные резисторы. Это резисторы особого размера, которые находятся на «конце линии» - другими словами, внутри PIR (или тамперного переключателя блока управления, или блока сирены, или чего-то еще, что подключено к этой зоне). Как уже упоминалось, эти резисторы используются как тамперные. защиты '' - технически, если кто-то перерезает кабели к PIR, - поскольку система сигнализации ожидает увидеть определенное сопротивление от этого PIR, тогда, если сопротивление изменится, она предполагает, что кто-то вмешался в систему, и вызовет тревогу.

Например:

На моей тревоге зона "Z4" имеет 2 провода, один идет к PIR в моем коридоре, а другой идет к тамперному выключателю блока управления сигнализацией. В коридоре PIR установлен резистор на 3300 Ом. Другой провод, идущий к тамперному переключателю блока управления, имеет резистор на 6800 Ом, подключенный последовательно. Так система охранной сигнализации (логически) различает тамперы "Z4" и "Z8". Аналогично, зона «Z3» имеет PIR (с резистором 3300 Ом в нем), а также датчик тампера сирены (с резистором 6800 Ом в нем), составляющий «Z7». Установщик сигнализации предварительно настроил систему сигнализации, чтобы он знал, какое устройство подключено к каждой зоне (и изменил размер оконечного резистора в соответствии с требованиями, потому что система охранной сигнализации запрограммирована так, чтобы знать, какого размера разные оконечные резисторы. Ни при каких обстоятельствах вы не должны изменять номинал этих резисторов!)

Итак, исходя из вышеизложенного, поскольку к каждой зоне может быть подключено несколько устройств (с разными значениями сопротивления), и помня формулу V = IR (напряжение = амперы x сопротивление), это также может означать, что каждая зона может иметь разные напряжения. Это приводит нас к следующему шагу, измерению каждой зоны ХОЛОСТОГО ХАРАКТЕРА по сравнению с АКТУАЛЬНЫМ напряжением …

Шаг 2: Измерение напряжения зоны тревоги

Измерение напряжения зоны тревоги
Измерение напряжения зоны тревоги
Измерение напряжения зоны тревоги
Измерение напряжения зоны тревоги

После того, как вы получите доступ к главной плате вашей системы охранной сигнализации (и обойдете тамперный переключатель, если он у вас есть; как в предыдущем шаге), снова включите систему охранной сигнализации. Теперь нам нужно измерить напряжение каждой зоны, когда она находится в режиме ХОЛОСТОГО ХОДА (нет движения перед ИК-датчиком) по сравнению с ИГРОВЫМ (ИК-датчик обнаружил движение). Возьмите ручку и бумагу, чтобы вы могли записать свои показания напряжения.

ВНИМАНИЕ: Большая часть вашей системы охранной сигнализации, скорее всего, будет работать от 12 В постоянного тока, однако ее начальное питание будет составлять 220 В (или 110 В) переменного тока, с трансформатором, преобразующим мощность из переменного тока в постоянный. ПРОЧИТАЙТЕ руководство и примите особые меры предосторожности, убедитесь, что вы НЕ измеряете никакие клеммы переменного тока !!! На скриншоте моей системы охранной сигнализации на этой странице вы можете видеть, что в самом низу изображения показано питание переменного тока, преобразованное в 12 В постоянного тока. Мы измеряем напряжение 12 В постоянного тока в выделенных красными полями. Никогда не прикасайтесь к источнику переменного тока. Будьте предельно осторожны!

Измерение напряжения PIR

У меня есть 4 x PIR, подключенных к Z1 через Z4. Измерьте каждую из ваших зон следующим образом.

  1. Сначала определите клемму GND и клеммы зоны на панели охранной сигнализации. Я выделил их на изображении, показанном в руководстве к моей сигнализации Bosch.
  2. Возьмите мультиметр и установите напряжение 20 В постоянного тока. Подключите черный (COM) кабель от мультиметра к клемме GND на сигнализаторе. Поместите красный (+) провод от вашего мультиметра в первую зону - в моем случае с надписью «Z1». Запишите значение напряжения. Выполните те же действия для остальных зон. Мои измерения напряжения следующие:
  • Z1 = 6,65 В
  • Z2 = 6,65 В
  • Z3 = 7,92 В
  • Z4 = 7,92 В

Как указано выше, к моим первым двум зонам прикреплены только PIR. Последние две зоны имеют как PIR, так и защиту от несанкционированного доступа (тампер блока управления Z3, тампер сирены Z4). Обратите внимание на разницу напряжений.

3. Для этого следующего шага вам, скорее всего, понадобятся 2 человека. Вам также необходимо знать, какой PIR в какой зоне. Вернитесь и прочтите напряжение в первой зоне. Теперь попросите кого-нибудь в вашем доме пройти перед PIR, напряжение должно упасть. Обратите внимание на новое значение напряжения. В моем случае напряжения при срабатывании пассивных инфракрасных датчиков выглядят следующим образом:

  • Z1 = 0 В
  • Z2 = 0 В
  • Z3 = 4,30 В
  • Z4 = 4,30 В

Как видно из вышеизложенного, при срабатывании зон 1 и 2 напряжение падает с 6,65 В до 0 В. Однако при срабатывании зон 3 и 4 напряжение падает с 7,92 В до 4,30 В.

Измерение напряжения питания 12 В

Мы будем использовать клемму 12 В постоянного тока от блока управления сигнализацией для питания нашего проекта. Нам нужно измерить напряжение от источника постоянного тока 12 В на сигнализацию. Хотя в нем уже указано 12 В, нам нужно знать более точное показание. В моем случае это действительно 13,15 В. Запишите это значение, оно понадобится вам на следующем шаге.

Почему мы измеряем напряжение?

Причина, по которой нам нужно измерять напряжение для каждого PIR, заключается в схеме, которую мы будем создавать. Мы будем использовать микросхему четырехканального дифференциального компаратора LM339 (или четырехканальный компаратор операционных усилителей) в качестве основного электрического компонента для этого проекта. LM339 имеет 4 независимых компаратора напряжения (4 канала), каждый из которых принимает 2 входных напряжения (один инвертирующий (-) и один неинвертирующий (+) вход, см. Диаграмму). неинвертирующее напряжение, то соответствующий выход будет заземлен. Аналогично, если неинвертирующее входное напряжение падает ниже инвертирующего входа, то выходное напряжение подтягивается до Vcc. Удобно, что в моем доме у меня есть 4 x PIR / зоны сигнализации - поэтому каждая зона будет подключена к каждому каналу на компараторе. Если у вас более 4 PIR, вам понадобится компаратор с большим количеством каналов или другой LM339!

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

Если это сбивает с толку, переходите к следующему шагу, в любом случае он станет более понятным, когда мы подключим его!

Шаг 3: Создание делителя напряжения

Image
Image

Что такое делитель напряжения?

Делитель напряжения - это цепь с двумя (или более) последовательно включенными резисторами. Мы подаем напряжение в (Vin) на первый резистор (R1). Другая ножка R1 подключается к первой ножке второго резистора (R2), а другой конец R2 подключается к GND. Затем мы берем выходное напряжение (Vout) от соединения между R1 и R2. Это напряжение станет нашим опорным напряжением для LM339. Дополнительные сведения о том, как работают делители напряжения, см. В видеоролике Adohms на YouTube.

(Примечание: резисторы не имеют полярности, поэтому их можно подключать любым способом)

Расчет нашего опорного напряжения

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

Возьмем, к примеру, мою сигнализацию…

Напряжения холостого хода зоны составляли Z1 = 6,65 В, Z2 = 6,65 В, Z3 = 7,92 В, Z4 = 7,92 В. Таким образом, минимальное напряжение холостого хода составляет 6,65 В.

Напряжения срабатывания зоны были: Z1 = 0 В, Z2 = 0 В, Z3 = 4,30 В, Z4 = 4,30 В. Таким образом, максимальное срабатываемое напряжение составляет 4,30 В.

Таким образом, нам нужно выбрать число на полпути между 4,30 В и 6,65 В (не обязательно быть точным, просто примерно). В моем случае мое опорное напряжение должно быть около 5,46 В. Примечание. Если наименьшее напряжение холостого хода и наибольшее напряжение срабатывания очень близки друг к другу из-за нескольких зон, вызывающих диапазон разных напряжений, вам может потребоваться создать 2 или более делителей напряжения.

Расчет наших номиналов резисторов для делителя напряжения

Теперь, когда у нас есть опорное напряжение, нам нужно рассчитать резисторы какого размера нам нужны для создания делителя напряжения, который будет обеспечивать наше опорное напряжение. Мы будем использовать источник постоянного напряжения 12 В (Vs) от сигнализации. Однако, согласно предыдущему шагу, когда мы измерили напряжение питания 12 В постоянного тока, мы фактически получили 13,15 В. Нам нужно рассчитать делитель напряжения, используя это значение в качестве источника.

Рассчитайте Vout по закону Ома…

Vout = Vs x R2 / (R1 + R2)

… Или воспользуйтесь онлайн-калькулятором делителя напряжения:-)

Вам нужно будет поэкспериментировать со значениями резистора, пока не достигнете желаемого результата. В моем случае это сработало с R1 = 6,8 кОм и R2 = 4,7 кОм, рассчитанных в длинной форме следующим образом:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 х 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5,37 В

Шаг 4: Подключите LM339

Подключение Wemos D1 Mini
Подключение Wemos D1 Mini

Делитель напряжения на инвертирующие входы LM339

Как обсуждалось ранее относительно компаратора LM339, для него потребуется 2 входа. Один будет напряжением от каждого PIR к неинвертирующему (+) выводу каждого канала, другой будет нашим опорным напряжением на нашем инвертирующем (-) выводе. Опорное напряжение должно подаваться на все 4 инвертирующих входа компаратора. Перед выполнением этих действий выключите систему охранной сигнализации.

  • Проложите провод от блока 12 В постоянного тока системы охранной сигнализации к шине + на вашей макетной плате *.
  • Проложите провод от блока GND системы охранной сигнализации к шине - на вашей макетной плате **
  • Установите компаратор LM339 в середине макета (выемка указывает ближайший к контакту 1)
  • Установите 2 резистора, чтобы создать схему делителя напряжения и провод для вывода разделенного напряжения.
  • Проложите провода от выхода Vout с разделением напряжения на каждую инвертирующую клемму LM339.

* СОВЕТ: по возможности используйте зажим типа «крокодил» для питания, так как это упрощает включение / выключение вашего проекта ** ВАЖНО! МОП-транзистор может потребоваться, если вы включаете Wemos с панели сигнализации! В моем случае LM339, Wemos и Alarm получают питание от одного и того же источника (то есть от самой системы сигнализации). Это позволяет мне включать питание всего с помощью одного подключения к источнику питания. Однако по умолчанию контакты GPIO на Wemos определены как контакты «INPUT» - это означает, что они принимают любое подаваемое на них напряжение и полагаются на этот источник для обеспечения правильных уровней напряжения (минимальные / максимальные уровни), чтобы Wemos выигрывал. t разбиться или перегореть. В моем случае система охранной сигнализации получает питание и начинает выполнять последовательность загрузки очень быстро - на самом деле настолько быстро, что делает это до того, как Wemos сможет загрузиться и объявить контакты GPIO как «INPUT_PULLUP» (внутреннее напряжение в чип). Это не означает, что разница в напряжении может вызвать сбой Wemos, когда вся система получит питание. Единственный способ обойти это - вручную выключить и включить Wemos. Чтобы решить эту проблему, добавлен полевой МОП-транзистор, который действует как «логический переключатель» для включения LM339. Это позволяет Wemos загрузиться, установить его 4 контакта GPIO компаратора как «INPUT_PULLUP», задержать несколько секунд и ЗАТЕМ (через другой вывод GPIO D5, определенный как ВЫХОД) отправить сигнал «HIGH» через вывод D5 GPIO на полевой МОП-транзистор, который логически включает LM339. Я бы порекомендовал выполнить подключение, как указано выше, но если вы обнаружите, что Wemos выйдет из строя, как это сделал я, вам придется включить MOSFET с понижающим резистором 1 кОм. Дополнительные сведения о том, как это сделать, см. В конце данного руководства.

Тревожные зоны к неинвертирующим входам LM339

Теперь нам нужно провести провода от каждой зоны на контрольной панели к входам компаратора LM339. Когда система охранной сигнализации все еще отключена, для каждой зоны подайте провод к каждому неинвертирующему (+) входу компаратора LM339. Например, в моей системе:

  • Провод от Z1 идет на вход LM339 1+
  • Провод от Z2 идет на вход LM339 2+
  • Провод от Z3 идет на вход LM339 3+
  • Провод от Z4 идет на вход LM339 4+

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

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

Шаг 5: Подключение Wemos D1 Mini

Подключение Wemos D1 mini

Теперь у нас есть все входы LM339, теперь нам нужно подключить Wemos D1 mini. Каждый выходной контакт LM339 подключается к контакту Wemos GPIO (вход / выход общего назначения), который мы обозначим с помощью кода как входной подтягивающий контакт. Wemos потребляет максимум 5 В в качестве напряжения Vcc (входного источника) (хотя внутренне регулирует его до 3,3 В). Мы будем использовать очень распространенный регулятор напряжения LM7805 (РЕДАКТИРОВАТЬ: см. Ниже), чтобы снизить напряжение на шине 12 В на макетной плате до 5 В для питания Wemos. В техническом описании LM7805 указано, что нам нужен конденсатор, подключенный к каждой стороне регулятора для сглаживания мощности, как показано на изображении макета. Более длинная ветвь конденсатора является положительной (+), поэтому убедитесь, что она правильно подключена.

Регулятор напряжения принимает напряжение (левый контакт), землю (средний контакт) и выходное напряжение (правый контакт). Дважды проверьте распиновку, если ваш регулятор напряжения отличается от LM7805.

(РЕДАКТИРОВАТЬ: я обнаружил, что усилители, исходящие от панели сигнализации, были слишком высокими для LM7805, чтобы справиться с ними. Это вызывало много тепла в небольшом радиаторе LM7805 и приводило к его выходу из строя и, в свою очередь, к остановке Wemos Я заменил LM7805 и конденсаторы на понижающий преобразователь постоянного тока, и с тех пор у меня не было проблем. Их очень легко подключить. Просто подключите входное напряжение от будильника, сначала подключите к мультиметру и используйте винт потенциометра. и регулируйте, пока выходное напряжение не будет ~ 5 В)

Входные контакты GPIO

Для этого проекта мы используем следующие пины:

  • зона Z1 => контакт D1
  • зона Z2 => контакт D2
  • зона Z3 => контакт D3
  • зона Z4 => контакт D5

Подключите выходы от LM339 к соответствующим контактам GPIO на плате Wemos, как показано на макете, показанном на этом шаге. Опять же, я закодировал входы и соответствующие выходы цветом, чтобы было легче понять, что к чему относится. Каждый вывод GPIO в Arduino определяется как INPUT_PULLUP, что означает, что они будут подтягиваться до 3,3 В при нормальном использовании (IDLE), и LM339 будет опускать их на землю, если сработает PIR. Код обнаруживает изменение ВЫСОКОГО на НИЗКИЙ и отправляет сообщение по беспроводной сети в программное обеспечение домашней автоматизации. Если у вас возникли проблемы с этой работой, возможно, у вас неправильные инвертирующие и неинвертирующие входы (если напряжение от вашего PIR становится высоким при срабатывании, как это происходит с большинством хобби PIR, тогда вам понадобятся соединения наоборот)

IDE Arduino

Удалите Wemos с макета, теперь нам нужно загрузить на него код (альтернативная ссылка здесь) Я не буду вдаваться в подробности о том, как это сделать, так как в Интернете есть множество статей о загрузке кода в Wemos или другой ESP8266 типа досок. Подключите USB-кабель к плате Wemos и к компьютеру и запустите Arduino IDE. Загрузите код и откройте его в своем проекте. Вам нужно будет убедиться, что для вашего проекта установлена и загружена правильная плата, а также правильный выбранный COM-порт (Инструменты, Порт). Вам также потребуются установленные соответствующие библиотеки (PubSubClient, ESP8266Wifi). Чтобы включить плату Wemos в ваш скетч, см. Эту статью.

Вам нужно будет изменить следующие строки кода и заменить их собственным SSID и паролем для беспроводного подключения. Кроме того, измените IP-адрес, чтобы он указывал на вашего собственного брокера MQTT.

// Вай фай

const char * ssid = "your_wifi_ssid_here"; const char * password = "ваш_wifi_password_here"; // IP-адрес брокера MQTT MQTT_SERVER (172, 16, 223, 254)

После изменения проверьте свой код, затем загрузите его на плату Wemos через USB-кабель.

Примечания:

  • Если вы используете разные порты GPIO, вам нужно будет настроить код. Если вы используете больше или меньше зон, чем у меня, вам также потребуется скорректировать код и TOTAL_ZONES = 4; константа для соответствия.
  • При запуске моей системы охранной сигнализации система сигнализации проверяет питание всех 4-х пассивных инфракрасных датчиков, которые замыкают все подключенные GPIO на землю, в результате чего Wemos считает, что зоны срабатывают. Код игнорирует отправку сообщений MQTT, если видит, что все 4 зоны активны одновременно, поскольку предполагает, что система охранной сигнализации включается.

Альтернативная ссылка для скачивания кода ЗДЕСЬ

Шаг 6: Тестирование и настройка OpenHAB

Тестирование и настройка OpenHAB
Тестирование и настройка OpenHAB

Тестирование MQTT

MQTT - это система обмена сообщениями «подписка / публикация». Одно или несколько устройств могут общаться с «брокером MQTT» и «подписываться» на определенную тему. Любые входящие сообщения от любого другого устройства, которые «публикуются» в той же теме, будут отправлены брокером на все устройства, которые на него подписались. Это чрезвычайно легкий и простой в использовании протокол, который идеально подходит в качестве простой системы запуска, такой как здесь. Для тестирования вы можете просматривать входящие сообщения MQTT от Wemos к вашему MQTT-брокеру, выполнив следующую команду на вашем сервере Mosquitto (Mosquitto - одно из многих доступных программ MQTT Broker). Эта команда подписывается на входящие сообщения keepalive:

mosquitto_sub -v -t openhab / тревога / статус

Вы должны видеть входящие сообщения, приходящие из Wemos каждые 30 секунд или около того с цифрой «1» (что означает «Я жив»). Если вы видите постоянные «0» (или отсутствие ответа), то связи нет. Как только вы видите число 1, это означает, что Wemos обменивается данными с брокером MQTT (выполните поиск по запросу «MQTT Last Will and Testament» для получения дополнительной информации о том, как это работает, или посмотрите эту действительно хорошую запись в блоге)

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

mosquitto_sub -v -t openhab / alarm / #

Должны появиться обычные сообщения о состоянии, а также IP-адрес самого Wemos. Пройдите перед PIR, и вы также должны увидеть информацию о зоне, указывающую, что она ОТКРЫТА, а через секунду или около того, что она ЗАКРЫТА, аналогично следующему:

openhab / тревога / статус 1

openhab / сигнализация / зона1 OPEN

openhab / сигнализация / зона1 ЗАКРЫТО

Как только это заработает, мы можем настроить OpenHAB так, чтобы это было хорошо представлено в графическом интерфейсе.

Конфигурация OpenHAB

В OpenHAB требуются следующие изменения:

Файл преобразования 'alarm.map': (необязательно, для тестирования)

ЗАКРЫТО = бездействие OPEN = сработал NULL = Неизвестно- = Неизвестно

Файл преобразования 'status.map':

0 = Ошибка

1 = Онлайн - = ВНИЗ! NULL = неизвестно

файл 'items':

Строка alarmMonitorState "Монитор тревог [MAP (status.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / status: state: default]"} Строка alarmMonitorIPAddress "IP-адрес монитора тревог [% s]" {mqtt = "<[mqttbroker: openhab / alarm / ipaddress: state: default]"} Номер zone1_Chart_Period "График зоны 1" Contact alarmZone1State "Состояние зоны 1 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / zone1: state: default "} Строка alarmZone1Trigger" Lounge PIR [% 1 $ ta% 1 $ tr] "Номер zone2_Chart_Period" График зоны 2 "Контакт alarmZone2State" Состояние зоны 2 [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone2: state: default "} Строка alarmZone2Trigger" First Hall PIR [% 1 $ ta% 1 $ tr] "Number zone3_Chart_Period" Зона 3 Диаграмма "Контакт alarmZone3State" Зона 3 Состояние [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} Строка alarmZone3Trigger" Спальня PIR [% 1 $ ta% 1 $ tr] "Номер zone4_Chart_Period "Диаграмма зоны 4" Контакт alarmZone4State "Состояние зоны 4 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openha b / alarm / zone4: state: default "} Строка alarmZone4Trigger" Main Hall PIR [% 1 $ ta% 1 $ tr]"

файл sitemap (включая график rrd4j):

Текстовый элемент = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone1_Chart_Period label = Отображения "Период" = [0 = "Час", 1 = "День", 2 = "Неделя"] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Неинициализировано] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 1] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Текстовый элемент = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone2_Chart_Period label = "Период" сопоставлений = [0 = "Час", 1 = "День", 2 = "Неделя"] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Текстовый элемент = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] сопоставления {Frame {Switch item = zone3_Chart_Period label = "Period" = [0 = "Час", 1 = "День", 2 = "Неделя"] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Uninitialized] Изображение url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Текст item = alarmZone4Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " Period "mappings = [0 =" Hour ", 1 =" Day ", 2 =" Week "] URL изображения =" https:// localhost: 8080 / rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Неинициализировано] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 1] URL изображения = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // НЕОБЯЗАТЕЛЬНО, но удобно для диагностики статуса и IP-адреса ss Текстовый элемент = alarmMonitorState Текстовый элемент = alarmMonitorIPAddress

файл rules:

правило «Изменение состояния Тревожной Зоны 1»

когда элемент alarmZone1State изменился на OPEN, затем postUpdate (alarmZone1Trigger, new DateTimeType ()) alarmZone1State.state = CLOSED end

правило «Изменение состояния тревожной зоны 2»

когда элемент alarmZone2State изменился на OPEN, затем postUpdate (alarmZone2Trigger, new DateTimeType ()) alarmZone2State.state = CLOSED end

правило «Изменение состояния Тревожной Зоны 3»

когда элемент alarmZone3State изменился на OPEN, затем postUpdate (alarmZone3Trigger, new DateTimeType ()) alarmZone3State.state = CLOSED end

правило «Изменение состояния тревожной зоны 4»

когда элемент alarmZone4State изменился на OPEN, затем postUpdate (alarmZone4Trigger, new DateTimeType ()) alarmZone4State.state = CLOSED end

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

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

Удачи!

Рекомендуемые: