Съдържание:

Аларма PIR към WiFi (и домашна автоматизация): 7 стъпки (със снимки)
Аларма PIR към WiFi (и домашна автоматизация): 7 стъпки (със снимки)

Видео: Аларма PIR към WiFi (и домашна автоматизация): 7 стъпки (със снимки)

Видео: Аларма PIR към WiFi (и домашна автоматизация): 7 стъпки (със снимки)
Видео: Динко Вълев иска да вкара Стоян Колев в багажника 2024, Ноември
Anonim
Image
Image
Аларма PIR към WiFi (и домашна автоматизация)
Аларма PIR към WiFi (и домашна автоматизация)

Общ преглед

Тази инструкция ще ви даде възможност да видите последната дата/час (и по избор история на времената), когато са задействани 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 (има вграден безжичен CHIP ESP8266)
  • Сравнител LM339 (това ще направи проверката на PIR празен ход спрямо задействан)
  • Източник на захранване 5V DC за Wemos (ИЛИ, DC-DC преобразувател. Забележка: Регулатор на напрежение LM7805 може да не работи за това приложение, както е обсъдено по-късно в този проект)
  • Два резистора за делител на напрежение (размерът ще зависи от вашите алармени напрежения, обсъдени по -късно в проекта)
  • Един 1K ом резистор да действа като издърпващ резистор за управление на мощността на LM339
  • Един 2N7000 (или подобен) MOSFET за логическо включване на LM339 (вероятно по избор, обсъдено по -късно в проекта)
  • Макет с подходящ размер за настройка и тестване на веригата
  • Куп жици, които свързват всичко
  • Необходими инструменти: странични фрези, едножилен проводник
  • DC мултиметър (задължително!)

Стъпка 1: Контролна кутия на алармената система

Кутия за управление на алармената система
Кутия за управление на алармената система

Първо някои предупреждения и отказ от отговорност

Лично аз имам алармена система на Bosch. Силно бих ви препоръчал да изтеглите съответното ръководство за вашата конкретна алармена система и да се запознаете с него, преди да започнете, тъй като ще трябва да изключите алармената система, за да свържете зоните. Бих ви препоръчал също да прочетете тази статия изцяло, преди да започнете!

По -долу е даден списък с няколко неща, които трябва да знаете, преди да започнете - уверете се, че сте прочели и разбрали всяко от тях, преди да продължите! Не поемам отговорност, ако прецакате алармената си система и/или трябва да платите на вашия инсталатор, за да я поправите. Ако обаче прочетете и разберете следното и вземете необходимите предпазни мерки, трябва да сте добре:

1. Алармената ми система имаше резервна батерия вътре в кутията и също имаше превключвател от вътрешната страна на капака (който осигурява достъп до платката на алармената система), така че дори да изключва алармата отвън, когато сваля предния панел на контрола кутия тя задейства алармата! За да заобиколя това, докато работех по проекта, заобиколих защитата от подправяне, като изключих и след това накратко включих превключвателя на тампера (дебелия червен проводник, както е показано на снимката по -горе)

2. При захранване на алармената система след около 12 часа аларменият контролен панел започна да издава звуков сигнал с кодове за грешки. След като определих кодовете за грешки чрез ръководството, разбрах, че ме предупреждава, че:

  • Датата/часът не бяха зададени (имах нужда от главния код и последователността на клавишите от ръководството, за да преконфигурирам)
  • Че резервната батерия не е свързана (лесно поправяне, току -що забравих отново да включа батерията)

3. В моята аларма има 4 x зонални свързващи блока (обозначени с Z1 -Z4), към които PIR могат да се свържат на основната алармена платка, но моята алармена система всъщност е способна на 8 зони. Всеки блок за свързване на зони може действително да изпълнява 2 x зони всяка (Z1 прави Z1 и Z5, Z2 прави Z2 и Z6 и така нататък). Алармената система има вградена защита срещу подправяне, за да спре някой да каже, отваряне на капака на алармената система, както е споменато по-горе, или прерязване на проводниците към PIR. Той прави разлика между всяка зонална намеса чрез EOL (край на линия) резистори. Това са резистори със специфични размери, които се намират в "края на линията" - с други думи, вътре в PIR (или превключвател на тампер за управление, или кутия за сирена или каквото и да е свързано към тази зона) Както бе споменато тези резистори се използват като "подправяне" защита “- технически, ако някой пререже кабелите към PIR - тъй като алармената система очаква да види определено съпротивление от този PIR, тогава ако съпротивлението се промени, се предполага, че някой е подправил системата и ще задейства алармата.

Например:

По моята аларма, Зона "Z4" има 2 проводника в себе си, един отива към PIR в коридора ми и един отива към превключвателя за контрол на алармената кутия. Вътре в коридора PIR, той има резистор от 3300 ома. Другият проводник, който преминава към превключвателя на контролната кутия, има резистор от 6800 ома, свързан последователно. Ето как алармената система (логически) прави разлика между "Z4" и "Z8" подправки. По същия начин, зона "Z3" има PIR (с резистор 3300 ома в нея), а също и превключвател за намеса на сирена (с резистор 6800 ома в нея), който съставлява "Z7". Инсталаторът на аларми би бил предварително конфигурирал алармената система, така че да знае кое устройство е свързано към всяка зона (и да промени размера на EOL резистора, така че алармената система да е програмирана да знае какъв размер са различните EOL резистори. при никакви обстоятелства не трябва да променяте стойността на тези резистори!)

Така че въз основа на горното, тъй като към всяка зона може да са свързани и множество устройства (с различни стойности на съпротивлението), и да запомните формулата V = IR (напрежение = ампера x съпротивление), това може да означава също, че всяка зона може да има различни напрежения. Което ни води към следващата стъпка, измервайки всяка зона IDLE срещу TRIGGERED напрежение …

Стъпка 2: Измерване на напрежението на алармената зона

Измерване на напрежението на алармената зона
Измерване на напрежението на алармената зона
Измерване на напрежението на алармената зона
Измерване на напрежението на алармената зона

След като сте получили достъп до основната платка на вашата алармена система (и сте заобиколили тамперния превключвател, ако имате такъв; съгласно предишната стъпка), включете отново алармената си система. Сега трябва да измерим напрежението на всяка зона, когато нейният IDLE (без движение пред PIR) срещу TRIGGERED (PIR е открил движение) Вземете химикалка и хартия, за да можете да запишете показанията на напрежението.

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

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

Имам 4 x PIR, свързани към Z1 до Z4. Измерете всяка от вашите зони, както следва.

  1. Първо, идентифицирайте терминала GND и терминалите на зоната на алармения панел. Подчертах ги в изображението, показано от ръководството на моята аларма на Bosch.
  2. Вземете вашия мултицет и настройте измерването на напрежението на 20V DC. Свържете черния (COM) кабел от вашия мултицет към терминала GND на алармата. Поставете червения (+) проводник от вашия мултицет върху първата зона - в моя случай с надпис „Z1“. Запишете показанията на напрежението. Изпълнете същите стъпки за останалите зони. Моите измервания на напрежение са следните:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Съгласно горното, първите ми две зони са прикрепени само към PIR. Последните две зони имат както PIR, така и защита срещу подправяне, свързани в тях (Z3 контролна кутия тампер, Z4 сирена тампер) Обърнете внимание на разликите в напрежението.

3. Вероятно ще имате нужда от 2 души за тази следваща стъпка. Също така ще трябва да знаете кой PIR е в коя зона. Върнете се и прочетете напрежението в първата зона. Сега накарайте някой в къщата ви да ходи пред PIR, напрежението трябва да спадне. Обърнете внимание на новото отчитане на напрежението. В моя случай напреженията се четат по следния начин при задействане на PIR:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4.30V
  • Z4 = 4.30V

Съгласно горното, мога да видя, че когато се задействат зони 1 и 2, напрежението пада от 6.65V на 0V. Когато обаче се задействат зони 3 и 4, напрежението пада от 7.92V на 4.30V.

Измерване на 12V захранване

Ще използваме 12V DC терминала от контролната кутия за аларма, за да захранваме нашия проект. Трябва да измерим напрежението от 12V DC захранването на алармата. Въпреки че вече заявява 12V, трябва да знаем по -точно отчитане. В моя случай той всъщност чете 13.15V. Запишете това, тази стойност ще ви е необходима в следващата стъпка.

Защо измерваме напрежението?

Причината, поради която се нуждаем от измерване на напрежението за всеки PIR, е поради веригата, която ще създаваме. Ще използваме LM339 четириядрен диференциален сравнителен чип (или компаратор с четириядрен оп-усилвател) като основен електрически компонент за този проект. LM339 има 4 независими сравнителя на напрежението (4 канала), където всеки канал приема 2 x входни напрежения (един инвертиращ (-) и един неинвертиращ (+) вход, вижте диаграмата) Ако напрежението на инвертиращото входно напрежение трябва да падне по-ниско от неинвертиращото напрежение, тогава свързаният му изход ще бъде изтеглен към земята. По същия начин, ако неинвертиращото входно напрежение падне по-ниско от инвертиращия вход, тогава изходът се издърпва до Vcc. Удобно е, че в моята къща имам 4 алармени PIR/зони - следователно всяка зона ще бъде свързана към всеки канал на компаратора. Ако имате повече от 4 x PIR, ще ви трябва компаратор с повече канали или друг LM339!

Забележка: LM339 консумира енергия в нано-усилватели, така че няма да повлияе на EOL съпротивлението на съществуващата алармена система.

Ако това е объркващо, продължете към следващата стъпка, така или иначе ще започне да има повече смисъл, след като го свържем!

Стъпка 3: Създаване на делител на напрежение

Image
Image

Какво е делител на напрежение?

Делителят на напрежение е верига с 2 x резистора (или повече) последователно. Ние осигуряваме напрежение в (Vin) към първия резистор (R1) Другият крак на R1 се свързва с първия крак на втория резистор (R2), а другият край на R2 се свързва към GND. След това вземаме изходно напрежение (Vout) от връзката между R1 и R2. Това напрежение ще се превърне в нашето референтно напрежение за LM339. За повече информация как работят разделителите на напрежение, вижте видеото на Adohms в YouTube

(Забележка: резисторите нямат полярност, така че могат да бъдат свързани по всякакъв начин)

Изчисляване на нашето референтно напрежение

Ако приемем, че напрежението спада, когато вашият PIR се задейства (това би трябвало да е случаят с повечето аларми), тогава това, което се опитваме да постигнем, е да получим отчитане на напрежението, което е почти по средата между най -ниското ни напрежение на празен ход и най -високото ни задействано напрежение, това ще стане нашето референтно напрежение.

Като пример за алармата ми …

Напреженията на зоната на празен ход бяха Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Следователно най -ниското напрежение на празен ход е 6.65V

Задействаните от зоната напрежения бяха: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Следователно най -високото задействано напрежение е 4.30V

Така че трябва да изберем число по средата между 4.30V и 6.65V (не трябва да е точно, само приблизително) В моя случай моето референтно напрежение трябва да бъде около 5.46V. Забележка: Ако най -ниският празен ход и най -високото задействано напрежение са много близки един до друг поради множество зони, причиняващи диапазон от различни напрежения, може да се наложи да създадете 2 или повече разделители на напрежение.

Изчисляване на стойностите на резистора за делителя на напрежението

Сега имаме референтно напрежение, трябва да изчислим какъв размер резистори са ни необходими, за да създадем делител на напрежение, който ще осигури нашето референтно напрежение. Ще използваме източник на напрежение 12V DC (Vs) от алармата. Въпреки това, съгласно предишната стъпка, когато измервахме 12V DC захранването, всъщност получихме 13.15V. Трябва да изчислим делителя на напрежението, като използваме тази стойност като източник.

Изчислете Vout, използвайки закона на ома …

Vout = Vs x R2 / (R1 + R2)

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

Ще трябва да експериментирате със стойностите на резистора, докато постигнете желания от вас изход. В моя случай се получи с R1 = 6.8k ohm и R2 = 4.7K ohm, изчислено в дълга форма, както следва:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805/11, 500

Vout = 5.37V

Стъпка 4: Свържете LM339

Окабеляване на Wemos D1 Mini
Окабеляване на Wemos D1 Mini

Делител на напрежение към LM339 инвертиращи входове

Както бе обсъдено по -рано относно сравнителя LM339, той ще отнеме 2 x входа. Едното ще бъде напрежение от всеки PIR към неинвертиращ (+) терминал на каналите, другото ще бъде нашето референтно напрежение към нашия инвертиращ (-) терминал. Референтното напрежение трябва да захранва всички 4 инвертиращи входа на компаратора. Изключете вашата алармена система, преди да изпълните тези стъпки.

  • Прекарайте проводник от 12V DC блок на алармената система към + шината на вашата дъска *
  • Прокарайте проводник от блока GND на алармената система към - шината на вашата макет **
  • Инсталирайте сравнителя LM339 в средата на макета (прорезът показва най -близо до щифт 1)
  • Инсталирайте 2 x резистора, за да създадете делител на напрежение и проводник за разделено напрежение
  • Прокарайте проводници от Vout „разделено на напрежение“към всеки инвертиращ терминал LM339

* СЪВЕТ: използвайте алигаторен щипка за захранване, ако е възможно, тъй като това улеснява предоставянето на ON/OFF захранване на вашия проект ** ВАЖНО! Може да се наложи MOSFET, ако захранвате Wemos от панела за аларми! В моя случай всички LM339, Wemos и Alarm получават захранване от един и същ източник (т.е. самата алармена система) Това ми позволява да включвам захранването на всичко с една единствена връзка за захранване. Въпреки това, по подразбиране GPIO щифтовете на Wemos са дефинирани като "INPUT" щифтове - което означава, че те приемат каквото напрежение е хвърлено върху тях и разчитат на този източник, за да осигурят правилни нива на напрежение (мин/макс нива), така че Wemos спечели ' t да се срине или изгори. В моя случай алармената система се захранва и започва да изпълнява последователността на зареждане много бързо - всъщност толкова бързо, че прави това, преди Wemos да може да се зареди и да обяви GPIO щифтовете като „INPUT_PULLUP“(напрежението се повишава вътрешно в чип). Това не означава, че разликите в напрежението биха причинили срив на Wemos, когато цялата система получи захранване. Единственият начин да го заобиколите ще бъде ръчното изключване и включване на Wemos. За да се реши това, се добавя MOSFET, който действа като "логически превключвател" за захранване на LM339. Това позволява на Wemos да се стартира, да настрои своите 4 x сравнителни GPIO пина като "INPUT_PULLUP's", да забави няколко секунди и ТОГАВА (чрез друг GPIO щифт D5, дефиниран като OUTPUT) да изпрати "HIGH" сигнал през GPIO щифт D5 към MOSFET, което логически включва LM339. Бих препоръчал свързването както по -горе, но АКО установите, че Wemos се срива както аз, тогава ще трябва да включите MOSFET с резистор за издърпване 1k ohm. За повече информация как да направите това, вижте края на тази инструкция.

Алармени зони към 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 приема максимум до 5V като негово Vcc (входен източник) напрежение (въпреки че регулира това вътрешно до 3.3V) Ние ще използваме много често срещан регулатор на напрежението LM7805 (EDIT: вижте по -долу), за да пуснем 12V шината на макета до 5V за захранване на Wemos. Листът с данни за LM7805 показва, че се нуждаем от кондензатор, свързан от всяка страна на регулатора, за да изгладим захранването, както е показано на изображението на макета. По -дългият крак на кондензатора е положителен (+), затова се уверете, че той е свързан по правилния начин.

Регулаторът на напрежението приема напрежение (лев страничен щифт), маса (среден щифт) и излизане на напрежение (десен страничен щифт) Проверете отново извода, ако вашият регулатор на напрежение варира от LM7805.

(РЕДАКТИРАНЕ: Открих, че усилвателите, идващи от алармения панел, са твърде високи, за да може LM7805 да ги обработва. Това причинява много топлина в малкия радиатор на LM7805 и го кара да се повреди и от своя страна да спре Wemos работещ. Смених LM7805 и кондензаторите с конвертор DC-DC и оттогава нямам проблеми. Те са много лесни за свързване. Просто свържете входното напрежение от алармата, първо се свържете с мултицет и използвайте винта на потенциометъра и регулирайте, докато изходното напрежение е ~ 5V)

GPIO входни щифтове

За този проект използваме следните щифтове:

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

Свържете изходите нагоре от LM339 към съответните GPIO щифтове на платката Wemos, както е показано на изображението в тази стъпка. Отново имам цветно кодиране на входовете и съответстващите изходи, за да улесня виждането на какво се отнася. Всеки GPIO щифт в Arduino е дефиниран като „INPUT_PULLUP“, което означава, че те ще бъдат изтеглени до 3.3V при нормална употреба (IDLE) и LM339 ще ги изтегли на земята, ако PIR се задейства. Кодът открива промяната от ВИСОКО до НИСКО и изпраща съобщение безжично до вашия софтуер за домашна автоматизация. Ако имате проблеми с това, което работи, възможно е вашите инвертиращи срещу неинвертиращи входове да се обърнат по грешен начин (ако напрежението от вашия PIR стане високо при задействане, както се случва с повечето PIR хобита, тогава ще искате връзките обратното)

Arduino IDE

Премахнете Wemos от макета, сега трябва да качим код към него (алтернативна връзка тук) Няма да навлизам в подробности как да го направя, тъй като има много статии в мрежата за качване на код в Wemos или друг ESP8266 тип дъски. Включете вашия USB кабел към платката Wemos и към вашия компютър и стартирайте Arduino IDE. Изтеглете кода и го отворете във вашия проект. Ще трябва да се уверите, че правилната платка е инсталирана и заредена за вашия проект, както и че е избран правилния COM порт (Инструменти, Порт). Ще ви трябват и инсталирани подходящи библиотеки (PubSubClient, ESP8266Wifi) За да включите платката Wemos във вашата скица, вижте тази статия.

Ще трябва да промените следните редове код и да го замените със собствен SSID и парола за вашата безжична връзка. Също така променете IP адреса, за да сочи към вашия собствен MQTT брокер.

// Wifi

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

След като бъде променен, проверете кода си и го качете на платката Wemos чрез USB кабел.

Бележки:

  • Ако използвате различни GPIO портове, ще трябва да коригирате кода. Ако използвате повече или по -малко зони от мен, вие също ще трябва да коригирате кода и TOTAL_ZONES = 4; постоянен, за да отговаря.
  • При стартиране на моята алармена система, алармената система ще направи тест за захранване на всички 4 x PIR, които издърпаха всички свързани 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/аларма/#

Трябва да се появят обичайните съобщения за състоянието, както и IP адресът на самия Wemos. Разходете се пред PIR и също трябва да видите информацията за зоната, която показва, че е ОТВОРЕНА, след това секунда или повече, че е ЗАТВОРЕНА, подобно на следното:

openhab/alarm/status 1

openhab/alarm/zone1 ОТВОРЕН

openhab/alarm/zone1 ЗАТВОРЕН

След като това работи, можем да конфигурираме OpenHAB да има това добре представено в GUI.

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

За OpenHAB са необходими следните промени:

'alarm.map' файл за преобразуване: (по избор, за тестване)

CLOSED = IdleOPEN = TriggeredNULL = Unknown- = Unknown

'status.map' файл за трансформиране:

0 = Неуспешно

1 = Онлайн -= НАДОЛУ! NULL = неизвестно

'items' файл:

String alarmMonitorState "Alarm Monitor [MAP (status.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/status: state: default]"} String alarmMonitorIPAddress "IP за алармен монитор [%s]" {mqtt = "<[mqttbroker: openhab/alarm/ipaddress: state: default]"} Number zone1_Chart_Period "Диаграма на зона 1" Контакт alarmZone1State "Състояние на зона 1 [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/zone1: state: default "} String alarmZone1Trigger" Lounge PIR [%1 $ ta%1 $ tr] "Number zone2_Chart_Period" Диаграма на зона 2 "Контакт alarmZone2State" Състояние на зона 2 [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab/alarm/zone2: state: default "} String alarmZone2Trigger" Първа зала PIR [%1 $ ta %1 $ tr] "Number zone3_Chart_Period" Диаграма 3 зона "Контакт alarmZone3State" Зона 3 Състояние [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" PIR за спалнята [%1 $ ta%1 $ tr] "Номер zone4_Chart_Period "Zone 4 Chart" Contact alarmZone4State "State of Zone 4 [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: default "} String alarmZone4Trigger" 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“видимост = [zone1_Chart_Period == 0, zone1_Chart_Period = = Неинициализиран] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" видимост = [zone1_Chart_Period == 1] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" видимост = [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" видимост = [zone2_Chart_Period == 0, zone2_Chart_Period == Неинициализиран] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" видимост = [zone2_Chart_Perd == 2]}} Текстов елемент = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Период" = [0 = "Час", 1 = "Ден", 2 = "Седмица"] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" видимост = [зона3_Chart_Period == 0, зона3_Chart_Period == Неинициализирана] Изображение url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] URL адрес на изображението = "https:// localhost: 8080/rrdchart.png" видимост = [zone3_Chart_Period == 2]}} Текст item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone4_Chart_Period label = " Период "mappings = [0 =" Hour ", 1 =" Day ", 2 =" Week "] URL адрес на изображението =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Неинициализиран] Image 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

файл с правила:

правило "Промяна на състоянието на алармена зона 1"

когато Item alarmZone1State е променен на OPEN, след това postUpdate (alarmZone1Trigger, нов DateTimeType ()) alarmZone1State.state = ЗАТВОРЕН край

правило "Промяна на състоянието на алармена зона 2"

когато Item alarmZone2State е променен на OPEN, след това postUpdate (alarmZone2Trigger, нов DateTimeType ()) alarmZone2State.state = ЗАТВОРЕН край

правило "Промяна на състоянието на алармена зона 3"

когато Item alarmZone3State е променен на OPEN, след това postUpdate (alarmZone3Trigger, нов DateTimeType ()) alarmZone3State.state = ЗАТВОРЕН край

правило "Промяна на състоянието на алармена зона 4"

когато Item alarmZone4State е променен на OPEN, след това postUpdate (alarmZone4Trigger, нов DateTimeType ()) alarmZone4State.state = ЗАТВОРЕН край

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

Ако имате някакви проблеми с задействането на PIR, започнете отначало и измерете напреженията за всяка част от веригата. След като сте доволни от това, проверете окабеляването си, уверете се, че има обща основа, проверете съобщенията на Wemos чрез серийна конзола за отстраняване на грешки, проверете MQTT комуникацията и проверете синтаксиса на вашите преобразувания, елементи и файлове на карта на сайта.

Късмет!

Препоръчано: