Sadržaj:

Alarm PIR na WiFi (i kućna automatizacija): 7 koraka (sa slikama)
Alarm PIR na WiFi (i kućna automatizacija): 7 koraka (sa slikama)

Video: Alarm PIR na WiFi (i kućna automatizacija): 7 koraka (sa slikama)

Video: Alarm PIR na WiFi (i kućna automatizacija): 7 koraka (sa slikama)
Video: Pregled i konfiguracija EBYTE LoRa modula 2024, Novembar
Anonim
Image
Image
Alarm PIR na WiFi (i kućna automatizacija)
Alarm PIR na WiFi (i kućna automatizacija)

Pregled

Ovo uputstvo dat će vam mogućnost da u svom softveru za kućnu automatizaciju vidite posljednji datum/vrijeme (i opcionalno povijest vremena) kada su se PIR -ovi vašeg kućnog alarma (pasivni infracrveni senzori) aktivirali. U ovom projektu ću raspravljati o tome kako se koristi s OpenHAB -om (besplatnim softverom za kućnu automatizaciju, koji ja osobno koristim), iako će raditi s bilo kojim drugim softverom ili aplikacijom za kućnu automatizaciju koji podržava MQTT (također opisano kasnije u ovom članku). Ova instrukcija će vas provesti kroz potrebne korake o tome kako spojiti ploču i Wemos D1 mini (IOT ploča koja koristi čip ESP8266) koja ulazi u zone alarma u vašoj kontrolnoj kutiji za alarm tako da kada zona (koja sadrži jedan ili više PIR -ova), Wemos šalje poruku bežičnim putem koristeći MQTT protokol vašem softveru za kućnu automatizaciju koji prikazuje zadnji datum/vrijeme tog okidača. Dostupan je i Arduino kod za programiranje Wemosa.

Uvod

Gornja slika je ono što vidim putem jednog od ekrana u aplikaciji OpenHAB na svom iPhoneu. Tekst datuma/vremena je kodiran bojom kako bi se omogućio brži prikaz trenutka pokretanja PIR -a - prikazat će crvenu (aktivirano u posljednjih 1 minutu), narančastu (aktivirano u posljednjih 5 minuta), zelenu (aktivirano u posljednjih 30 minuta), plava (aktivira se u posljednjih sat vremena) ili na drugi način, crna. Klikom na datum/vrijeme prikazat će se povijesni prikaz PIR okidača, pri čemu 1 znači aktivirano, a 0 je neaktivno. Za to postoji mnogo upotreba, na primjer, može nadopuniti vaše rješenje prisutnosti u kući, može otkriti kretanje ako ste odsutni i putem pravila OpenHAB -a, slati obavijesti na vaš telefon, mogli biste ga koristiti kao i ja da vidim jesu li moja djeca ustajanje usred noći, pokrenuto PIR -om koji se nalazi izvan njihovih spavaćih soba!

OpenHAB je jednostavno softver za kućnu automatizaciju koji koristim, postoji mnogo drugih - i ako podržavaju MQTT, onda možete lako prilagoditi ovaj projekt softveru koji koristite.

Pretpostavke

Ovo uputstvo pretpostavlja da već imate (ili će se postaviti):

  • Očigledno je kućni alarmni sistem s PIR -ovima (pasivni infracrveni senzori) i da imate pristup kontrolnoj kutiji za alarm za povezivanje potrebnih ožičenja
  • OpenHAB (besplatni softver za kućnu automatizaciju otvorenog koda) je pokrenut, iako bi, kako je već rečeno, trebao raditi sa bilo kojim softverom za kućnu automatizaciju koji može uključivati MQTT povezivanje. Alternativno, kôd možete sami promijeniti prema vlastitim potrebama.
  • Mosquitto MQTT (ili sličan) posrednik instaliran i povezivanje konfigurirano s OpenHAB -om (MQTT je protokol za pretplatu/objavljivanje poruka koji je lagan i odličan za komunikaciju između uređaja)

Ako ne pokrećete OpenHAB i MQTT brokera, pogledajte ovaj odličan članak na web stranici MakeUseOf

Šta mi treba?

Da biste stvorili bežični kontroler, morat ćete nabaviti sljedeće dijelove:

  • Wemos D1 mini V2 (ima ugrađen bežični CHIP ESP8266)
  • Komparator LM339 (ovo će provjeriti PIR u mirovanju u odnosu na aktivirano)
  • Izvor napajanja od 5 V DC za Wemos (ILI, DC-DC pretvarač napona. Napomena: regulator napona LM7805 možda neće raditi za ovu aplikaciju, o čemu će biti riječi kasnije u ovom projektu)
  • Dva otpornika za razdjelnik napona (veličina će ovisiti o vašim naponima alarma, o čemu će biti riječi kasnije u projektu)
  • Jedan otpornik od 1K ohma koji djeluje kao otpornik za kontrolu snage LM339
  • Jedan 2N7000 (ili sličan) MOSFET za logičko uključivanje LM339 (moguće opcionalno, o čemu će biti riječi kasnije u projektu)
  • Matična ploča odgovarajuće veličine za postavljanje i testiranje kola
  • Gomila žica za povezivanje sve zajedno
  • Potreban alat: bočni rezači, jednožilna žica
  • DC multimetar (obavezno!)

Korak 1: Kontrolna kutija alarmnog sistema

Kontrolna kutija alarmnog sistema
Kontrolna kutija alarmnog sistema

Prvo neka upozorenja i odricanja od odgovornosti

Lično imam Bosch alarmni sistem. Toplo bih vam preporučio da preuzmete odgovarajući priručnik za vaš određeni alarmni sistem i upoznate se s njim prije nego počnete jer ćete morati isključiti alarmni sistem da biste povezali zone. Također bih vam preporučio da prije početka pročitate ovaj članak u cijelosti!

Ispod je popis nekoliko stvari koje biste trebali znati prije nego počnete - provjerite da ste pročitali i razumjeli svaku od njih prije nego nastavite! Ne preuzimam odgovornost ako zeznete alarmni sistem i/ili morate platiti instalateru da ga popravi. Ako ipak pročitate i razumijete sljedeće i poduzmete potrebne mjere opreza, trebali biste biti u redu:

1. Moj alarmni sistem je imao rezervnu bateriju unutar kutije, a takođe je imao i prekidač sa unutrašnje strane poklopca (koji omogućava pristup ploči alarmnog sistema), pa čak i vanjsko isključivanje alarma, prilikom uklanjanja prednje ploče kontrole kutija je aktivirala alarm! Da bih to zaobišao dok sam radio na projektu, zaobišao sam zaštitu od neovlaštenog isključivanja, a zatim kratkog spoja prekidača za otvaranje (debela crvena žica kao što je prikazano na gornjoj fotografiji)

2. Prilikom ponovnog uključivanja alarmnog sistema, nakon približno 12 sati, alarmna kontrolna tabla je počela da se oglašava kodovima grešaka. Nakon što sam odredio kodove grešaka putem priručnika, otkrio sam da me upozorava na sljedeće:

  • Datum/vrijeme nije postavljeno (trebao sam glavni kod i niz ključeva iz priručnika za ponovnu konfiguraciju)
  • Da pomoćna baterija nije spojena (lako se popravlja, samo sam zaboravio ponovo uključiti bateriju)

3. U mom alarmu postoje 4 x zonska priključna bloka (označena sa Z1 -Z4) za uključivanje PIR -ova na glavnu alarmnu ploču, međutim - moj alarmni sistem zapravo ima 8 zona. Svaki blok za povezivanje zona zapravo može pokretati 2 x zone (Z1 radi Z1 i Z5, Z2 radi Z2 i Z6 itd.). Alarmni sistem ima ugrađenu zaštitu od neovlaštenog rada da spriječi nekoga da kaže, otvaranje poklopca alarmnog sistema kao što je gore spomenuto, ili presijecanje žica na PIR. Razlikuje svaku zonsku manipulaciju preko EOL (kraj linije) otpornika. To su otpornici specifične veličine koji se nalaze na "kraju linije" - drugim riječima, unutar PIR -a (ili prekidača za otvaranje kontrolne kutije, ili kutije sirene ili bilo čega što je spojeno na tu zonu) Kao što je spomenuto, ovi otpornici se koriste kao "neovlašteni pristup" zaštita ' - tehnički, ako netko presiječe kabele na PIR - jer alarmni sistem očekuje da će vidjeti određeni otpor od tog PIR -a, tada ako se otpor promijeni, pretpostavlja se da je neko ometao sistem i da će aktivirati alarm.

Na primjer:

Na moj alarm, zona "Z4" ima 2 žice u sebi, jedna odlazi do PIR -a u mom hodniku, a jedna od prekidača za neovlašteno otvaranje alarmne kutije. Unutar hodnika PIR, ima otpornik od 3300 ohma. Druga žica koja vodi do prekidača neovlaštenog otvaranja upravljačke kutije ima 6800 ohmski otpornik spojen u seriju. Ovako alarmni sistem (logički) pravi razliku između "Z4" i "Z8" neovlaštenih izmjena. Slično, zona "Z3" ima PIR (sa otpornikom od 3300 ohma u njemu), a takođe i prekidač neovlaštenog aktiviranja sirene (sa 6800 ohmskim otpornikom u njemu) koji čini "Z7". Instalater alarma bi unaprijed konfigurirao alarmni sistem tako da zna koji je uređaj spojen na svaku zonu (i promijenio veličinu EOL otpornika tako da mu odgovara, jer je alarmni sistem programiran da zna koje su veličine različiti EOL otpornici. ni u kom slučaju ne smijete promijeniti vrijednost ovih otpornika!)

Dakle, na osnovu gore navedenog, jer svaka zona može imati priključeno više uređaja (s različitim vrijednostima otpora), i sjećajući se formule V = IR (napon = amper x otpor), onda to također može značiti da svaka zona može imati različite napone. Što nas dovodi do sljedećeg koraka, mjereći svaku zonu IDLE u odnosu na TRIGGERED napon …

Korak 2: Mjerenje napona zone alarma

Mjerenje napona zone alarma
Mjerenje napona zone alarma
Mjerenje napona zone alarma
Mjerenje napona zone alarma

Nakon što ste pristupili glavnoj ploči na svom alarmnom sistemu (i zaobišli prekidač neovlašćenog pristupa ako ga imate; prema prethodnom koraku), ponovo uključite alarmni sistem. Sada moramo mjeriti napon svake zone kada njen IDLE (nema kretanja ispred PIR -a) u odnosu na TRIGGERED (PIR je otkrio kretanje) Uzmite olovku i papir kako biste mogli zapisati očitavanja napona.

UPOZORENJE: Najveći dio vašeg alarmnog sistema najvjerojatnije će raditi na 12V DC, međutim početno napajanje će imati na 220V (ili 110V) AC, s transformatorom koji pretvara snagu iz AC u DC. PROČITAJTE priručnik i poduzmite dodatne mjere opreza pazeći da NE mjerite nijedan priključak naizmjenične struje !!! Prema snimci ekrana mog alarmnog sistema na ovoj stranici, možete vidjeti da je samo dno slike naizmjenično napajanje, pretvoreno u 12V DC. Mjerimo 12V DC u označenim crvenim okvirima. Nikada ne dodirujte AC napajanje. Budite izuzetno pažljivi!

Mjerenje PIR napona

Imam 4 x PIR -a spojena na Z1 preko Z4. Izmjerite svaku svoju zonu na sljedeći način.

  1. Prvo identificirajte GND terminal i zonske terminale na alarmnoj ploči. Istaknuo sam ih na slici prikazanoj u priručniku mog Bosch alarma.
  2. Uzmite multimetar i postavite mjerenje napona na 20 V DC. Spojite crni (COM) kabel s vašeg multimetra na GND terminal na alarmu. Postavite crveni (+) provodnik sa vašeg multimetra na prvu zonu - u mom slučaju označenu sa "Z1". Zapišite očitavanje napona. Izvršite iste korake za preostale zone. Moja mjerenja napona su sljedeća:
  • Z1 = 6,65 V
  • Z2 = 6,65 V
  • Z3 = 7,92V
  • Z4 = 7,92V

Kao što je gore navedeno, moje prve dvije zone imaju samo PIR -ove. Potonje dvije zone imaju i PIR -ove i zaštitu od neovlaštenog rada (Upravljačka kutija Z3, Udaranje sirene Z4) Obratite pažnju na razlike u naponu.

3. Vjerojatno će vam za sljedeći korak trebati 2 osobe. Također ćete morati znati koji je PIR u kojoj zoni. Vratite se i očitajte napon na prvoj zoni. Sada neka netko u vašoj kući prošeta ispred PIR -a, napon bi trebao pasti. Obratite pažnju na novo očitavanje napona. U mom slučaju, naponi se čitaju na sljedeći način kada se aktiviraju PIR -ovi:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4,30V
  • Z4 = 4.30V

Prema gore navedenom, mogu vidjeti da kada se aktiviraju zone 1 i 2, napon pada sa 6,65 V na 0 V. Međutim, kada se aktiviraju zone 3 i 4, napon pada sa 7,92 V na 4,30 V.

Mjerno napajanje od 12V

Za napajanje našeg projekta koristit ćemo 12V DC terminal iz alarmne kontrolne kutije. Moramo izmjeriti napon iz 12V DC napajanja na alarmu. Iako već navodi 12V, moramo znati točnije očitanje. U mom slučaju, on zapravo čita 13,15 V. Zapišite ovo, trebat će vam ova vrijednost u sljedećem koraku.

Zašto mjerimo napon?

Razlog zašto moramo mjeriti napon za svaki PIR je zbog kola koje ćemo stvoriti. Koristit ćemo LM339 četvero diferencijalni komparacijski čip (ili komparator sa četiri op-amp-a) kao jezgru električne komponente za ovaj projekt. LM339 ima 4 nezavisna komparatora napona (4 kanala) gdje svaki kanal uzima 2 x ulazni napon (jedan invertujući (-) i jedan neinvertirajući (+) ulaz, pogledajte dijagram) Ako bi napon invertirajućeg ulaznog napona trebao pasti ispod neinvertirajući napon, tada će se njegov povezani izlaz povući na masu. Slično, ako neinvertirajući ulazni napon padne niže od invertirajućeg ulaza, tada se izlaz podiže na Vcc. Prikladno, u svojoj kući imam 4 x alarmne PIR -ove/zone - stoga će svaka zona biti ožičena do svakog kanala na komparatoru. Ako imate više od 4 x PIR -a, trebat će vam usporednik s više kanala ili drugi LM339!

Napomena: LM339 troši energiju u nano-pojačalima, pa neće utjecati na EOL otpor postojećeg alarmnog sistema.

Ako je ovo zbunjujuće, ipak nastavite na sljedeći korak, on će imati više smisla kad ga povežemo!

Korak 3: Kreiranje razdjelnika napona

Image
Image

Šta je razdjelnik napona?

Razdjelnik napona je kolo sa 2 x otpornika (ili više) u nizu. Prvom otporniku (R1) dajemo napon u (Vin). Druga noga R1 povezuje se s prvom nogom drugog otpornika (R2), a drugi kraj R2 spaja se na GND. Zatim uzimamo izlazni napon (Vout) iz veze između R1 i R2. Taj će napon postati naš referentni napon za LM339. Više informacija o načinu rada razdjelnika napona potražite u videu Adohms youtube

(Napomena: otpornici nemaju polaritet, pa se mogu ožičiti na bilo koji način)

Izračunavanje referentnog napona

Pretpostavljajući da napon pada kada se aktivira vaš PIR (to bi trebao biti slučaj za većinu alarma), ono što pokušavamo postići je da dobijemo očitanje napona koji je otprilike na pola puta između našeg najnižeg napona u praznom hodu i najvećeg aktiviranog napona, ovo će postati naš referentni napon.

Uzimajući moj alarm kao primjer …

Napon u praznom hodu zone bio je Z1 = 6,65 V, Z2 = 6,65 V, Z3 = 7,92 V, Z4 = 7,92 V. Najniži napon u praznom hodu je stoga 6,65V

Zonski aktivirani naponi bili su: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Stoga je najveći aktivirani napon 4,30V

Dakle, moramo izabrati broj na pola puta između 4,30V i 6,65V (ne mora biti točno, samo otprilike) U mom slučaju, moj referentni napon mora biti oko 5,46V. Napomena: Ako su najniži prazni i najveći aktivirani napon vrlo blizu jedan drugom zbog više zona koje uzrokuju raspon različitih napona, možda ćete morati stvoriti 2 ili više razdjelnika napona.

Izračunavanje vrijednosti našeg otpornika za razdjelnik napona

Sada imamo referentni napon, moramo izračunati veličinu otpornika koji su nam potrebni da bismo stvorili razdjelnik napona koji će osigurati naš referentni napon. Koristit ćemo 12V DC izvor napona (Vs) iz alarma. Međutim, prema prethodnom koraku kada smo mjerili 12V DC napajanje dobili smo zapravo 13.15V. Moramo izračunati razdjelnik napona koristeći ovu vrijednost kao izvor.

Izračunajte Vout pomoću ohmskog zakona …

Vout = Vs x R2 / (R1 + R2)

… ili upotrijebite mrežni kalkulator razdjelnika napona:-)

Morat ćete eksperimentirati s vrijednostima otpornika dok ne postignete željeni izlaz. U mom slučaju, radilo je s R1 = 6,8 k ohma i R2 = 4,7 K ohma, izračunato u dugoj formi na sljedeći način:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805 /11, 500

Vout = 5.37V

Korak 4: Povežite LM339

Ožičenje Wemos D1 Mini
Ožičenje Wemos D1 Mini

Razdjelnik napona na LM339 invertirajuće ulaze

Kao što je ranije rečeno u vezi s komparatorom LM339, bit će potrebno 2 x ulaza. Jedan će biti napon iz svakog PIR-a na svakom kanalu bez invertirajućeg (+) terminala, drugi će biti naš referentni napon na naš invertirajući (-) terminal. Referentni napon mora napajati sva 4 invertirajuća ulaza komparatora. Isključite alarmni sistem prije izvođenja ovih koraka.

  • Provedite žicu od 12V DC bloka na alarmnom sistemu do + šine na vašoj matičnoj ploči *
  • Provedite žicu od bloka GND na alarmnom sistemu do - šine na vašoj matičnoj ploči **
  • Instalirajte komparator LM339 na sredinu ploče (zarez označava najbliži pin 1)
  • Ugradite 2 x otpornika kako biste stvorili krug razdjelnika napona i žicu za podijeljeni napon
  • Vodite žice od "naponski podijeljenog" Vouta do svakog LM339 invertirajućeg priključka

* SAVJET: po mogućnosti upotrijebite štipaljku od aligatora za napajanje, jer to olakšava uključivanje/isključivanje vašeg projekta ** VAŽNO! MOSFET može biti potreban AKO napajate Wemos sa Alarmne ploče! U mom slučaju, svi LM339, Wemos i Alarm primaju napajanje iz istog izvora (tj. Iz samog alarmnog sistema). To mi omogućava da uključim napajanje sa jednim priključkom za napajanje. Međutim, prema zadanim postavkama GPIO pinovi na Wemosu definirani su kao "INPUT" pinovi - što znači da uzimaju bilo koji napon na koji se baci i oslanjaju se na taj izvor da osigura ispravne razine napona (min/max razine) kako bi Wemos pobijedio ' t srušiti se ili izgorjeti. U mom slučaju, alarmni sistem dobiva snagu i počinje izvršavati niz pokretanja vrlo brzo - zapravo toliko brzo, da to čini prije nego što se Wemos može pokrenuti i proglasiti GPIO pinove kao "INPUT_PULLUP" (napon se podigao iznutra unutar čip). To ne znači da bi razlike u naponu uzrokovale pad Wemosa kada bi cijeli sistem dobio napajanje. Jedini način za to bi bio ručno isključivanje i uključivanje Wemosa. Da bi se to riješilo, dodaje se MOSFET koji djeluje kao "logički prekidač" za napajanje LM339. To omogućava Wemosu da se pokrene, postavi svoje 4 x usporedne GPIO pinove kao "INPUT_PULLUP -ove", odgodi nekoliko sekundi i ONDA (preko drugog GPIO pina D5 definiranog kao OUTPUT) pošalje "HIGH" signal putem GPIO pina D5 na MOSFET, koji logički uključuje LM339. Ja bih preporučio ožičenje kao gore, ali AKO utvrdite da se Wemos ruši kao ja, tada ćete morati uključiti MOSFET sa otpornikom na izvlačenje od 1 k ohma. Za više informacija o tome kako to učiniti pogledajte kraj ovog uputstva.

Zone alarma na LM339 neinvertirajuće ulaze

Sada moramo provesti žice iz svake zone na upravljačkoj ploči alarma do ulaza komparatora LM339. Dok je alarmni sustav još uvijek isključen, za svaku zonu dovedite žicu do svakog neinvertirajućeg (+) ulaza na usporedniku LM339. Na primjer, u mom sistemu:

  • Žica sa Z1 ide na ulaz LM339 1+
  • Žica sa Z2 ide na ulaz LM339 2+
  • Žica sa Z3 ide na ulaz LM339 3+
  • Žica sa Z4 ide na ulaz LM339 4+

Pogledajte pin-out LM339 u koraku 3 ako vas podsjeća (boja je kodirana slikom matične ploče). Kada završite, vaša ploča bi trebala izgledati slično slici prikazanoj u ovom koraku.

Uključite alarmni sistem i izmjerite napon koji izlazi iz razdjelnika napona kako biste bili sigurni da je jednak vašem referentnom naponu kako je ranije izračunato.

Korak 5: Ožičenje Wemos D1 Mini

Ožičenje Wemos D1 mini

Sada smo se pobrinuli za sve ulaze LM339, sada moramo spojiti Wemos D1 mini. Svaki izlazni pin LM339 ide na Wemos GPIO (opći ulaz/izlaz opće namjene) koji ćemo putem koda označiti kao ulazni izvlačni pin. Wemos uzima maksimalno do 5V kao svoj Vcc (ulazni izvor) napon (iako to interno regulira do 3,3 V) Koristit ćemo vrlo uobičajeni regulator napona LM7805 (EDIT: pogledajte dolje) da spustite 12V šinu na ploču do 5V za napajanje Wemosa. Tehnički list za LM7805 ukazuje da nam je potreban kondenzator ožičen sa svake strane regulatora kako bi se napajanje smanjilo, kao što je prikazano na slici matične ploče. Duža noga kondenzatora je pozitivna (+) pa se uvjerite da je ona pravilno ožičena.

Regulator napona prima napon (lijevi bočni pin), uzemljenje (srednji pin) i napon izlazi (desni bočni pin) Dvaput provjerite pin-out ako se vaš regulator napona razlikuje od LM7805.

(EDIT: Otkrio sam da su pojačala koja dolaze sa alarmne ploče previsoka da bi LM7805 mogao to rukovati. To je uzrokovalo mnogo topline u malom hladnjaku LM7805 i uzrokovalo njegovo otkazivanje, a zauzvrat i zaustavljanje Wemosa radi. Zamijenio sam LM7805 i kondenzatore umjesto DC-DC konvertera i od tada nemam problema. Vrlo ih je lako spojiti. Jednostavno spojite ulazni napon s alarma, prvo se spojite na multimetar i upotrijebite vijak potenciometra i podešavajte dok izlazni napon ne bude ~ 5V)

GPIO ulazni pinovi

Za ovaj projekt koristimo sljedeće pinove:

  • zona Z1 => pin D1
  • zona Z2 => pin D2
  • zona Z3 => pin D3
  • zona Z4 => pin D5

Povežite izlaze s LM339 na povezane GPIO pinove na Wemos ploči, prema slici matične ploče prikazanoj u ovom koraku. Opet, kodirao sam ulaze i odgovarajuće izlaze bojama kako bih lakše vidio šta se odnosi na šta. Svaki GPIO pin u Arduinu definiran je kao 'INPUT_PULLUP', što znači da će biti povučeni do 3,3 V pri normalnoj upotrebi (IDLE), a LM339 će ih povući na tlo ako se PIR aktivira. Kôd detektira promjenu od VISE do NISKE i bežično šalje poruku vašem softveru za kućnu automatizaciju. Ako imate problema s ovim radom, moguće je da imate invertirajuće i neinvertirajuće ulaze na pogrešan način (ako napon iz vašeg PIR-a poraste pri pokretanju, kao što se događa s većinom hobi PIR-ova, tada ćete htjeti da veze budu obrnuto)

Arduino IDE

Uklonite Wemos s matične ploče, sada moramo postaviti kôd na njega (alternativna veza ovdje) Neću ulaziti u detalje o tome kako to učiniti, jer na webu ima dosta članaka o učitavanju koda na Wemos ili drugi ESP8266 tip ploča. Priključite USB kabel na ploču Wemos i u računalo i pokrenite Arduino IDE. Preuzmite kôd i otvorite ga u svom projektu. Morat ćete osigurati da je ispravna ploča instalirana i učitana za vaš projekt, kao i da je odabran ispravan COM port (Alati, Port). Takođe će vam trebati instalirane odgovarajuće biblioteke (PubSubClient, ESP8266Wifi) Da biste uključili Wemos ploču u svoju skicu, pogledajte ovaj članak.

Morat ćete promijeniti sljedeće redove koda i zamijeniti ih vlastitim SSID -om i lozinkom za bežičnu vezu. Također, promijenite IP adresu tako da pokazuje na vašeg MQTT brokera.

// Wifi

const char* ssid = "your_wifi_ssid_here"; const char* password = "your_wifi_password_here"; // MQTT posrednik IP adresaMQTT_SERVER (172, 16, 223, 254)

Nakon promjene potvrdite svoj kôd, a zatim ga prenesite na Wemos ploču putem USB kabela.

Napomene:

  • Ako koristite različite GPIO portove, morat ćete prilagoditi kôd. Ako koristite više ili manje zona od mene, morat ćete također prilagoditi kôd i TOTAL_ZONES = 4; stalno odgovara.
  • Prilikom pokretanja mog alarmnog sistema, alarmni sistem bi izvršio test napajanja svih 4 x PIR -ova koji su povukli sve povezane GPIO na uzemljenje, uzrokujući da Wemos pomisli da se zone aktiviraju. Kod će zanemariti slanje MQTT poruka ako vidi da su sve 4 x zone aktivne u isto vrijeme, jer pretpostavlja da se alarmni sistem uključuje.

Alternativni link za preuzimanje koda OVDJE

Korak 6: Testiranje i OpenHAB konfiguracija

Testiranje i OpenHAB konfiguracija
Testiranje i OpenHAB konfiguracija

MQTT testiranje

MQTT je sistem za razmjenu poruka "pretplati se / objavi". Jedan ili više uređaja može razgovarati s "MQTT posrednikom" i "pretplatiti se" na određenu temu. Sve dolazne poruke sa bilo kojeg drugog uređaja koje su "objavljene" na istu temu, posrednik će proslijediti na sve uređaje koji su se na njega pretplatili. Izuzetno je lagan i jednostavan za korištenje protokol i savršen je kao jednostavan sistem za pokretanje poput ovog ovdje. Za testiranje, možete pregledati dolazne MQTT poruke iz Wemosa svom MQTT brokeru pokretanjem sljedeće naredbe na vašem Mosquitto serveru (Mosquitto je jedan od mnogih dostupnih softvera MQTT Broker). Ova naredba pretplaćuje se na dolazne keepalive poruke:

mosquitto_sub -v -t openhab/alarm/status

Trebali biste vidjeti dolazne poruke koje dolaze s Wemosa svakih 30 -ak sekundi s brojem "1" (što znači "živ sam"). Ako vidite konstantne "0" (ili nema odgovora), onda nema komunikacije. Kada vidite da broj 1 dolazi, to znači da Wemos komunicira s posrednikom MQTT (potražite "MQTT Last Will and Testament" za više informacija o tome kako ovo funkcionira, ili pogledajte ovaj zaista dobar zapis na blogu)

Kada dokažete da je komunikacija funkcionalna, možemo testirati da li se stanje zone prijavljuje putem MQTT -a. Pretplatite se na sljedeću temu (# je zamjenski znak)

mosquitto_sub -v -t openhab/alarm/#

Uobičajene poruke o statusu trebale bi stići, kao i IP adresa samog Wemosa. Hodajte ispred PIR -a, a trebali biste vidjeti i informacije o zoni koje ukazuju na to da je OTVOREN, pa sekundu ili nešto kasnije, da je ZATVOREN, slično sljedećem:

openhab/alarm/status 1

openhab/alarm/zone1 OPEN

openhab/alarm/zone1 ZATVORENO

Nakon što ovo proradi, možemo konfigurirati OpenHAB da ovo bude lijepo predstavljeno u grafičkom sučelju.

OpenHAB konfiguracija

Za OpenHAB su potrebne sljedeće promjene:

'alarm.map' datoteka transformacije: (opcionalno, za testiranje)

ZATVOREN = IdleOPEN = TriggeredNULL = Nepoznato- = Nepoznato

'status.map' datoteka transformacije:

0 = Nije uspjelo

1 = Na mreži -= DOLE! NULL = nepoznato

datoteka 'items':

Niz alarmMonitorState "Monitor alarma [MAP (status.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/status: stanje: zadano]"} String alarmMonitorIPAddress "IP nadgledanja alarma [%s]" {mqtt = "<[mqttbroker: openhab/alarm/ipaddress: state: default]"} Broj zona1_Chart_Period "Tabela zone 1" Kontakt alarmZone1State "Stanje zone 1 [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/zone1: state: default "} String alarmZone1Trigger" Lounge PIR [%1 $ ta%1 $ tr] "Number zone2_Chart_Period" Tabela zone 2 "Kontakt alarmZone2State" Stanje zone 2 [MAPA (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab/alarm/zone2: state: default "} String alarmZone2Trigger" Prva dvorana PIR [%1 $ ta %1 $ tr] "Broj zona3_Chart_Period" Tabela 3. zone "Kontakt alarmZone3State" Zone 3 Stanje [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Spavaća soba PIR [%1 $ ta%1 $ tr] "Broj zone4_Chart_Period "Zone 4 Chart" Kontakt alarmZone4State "Stanje zone 4 [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: default "} String alarmZone4Trigger" Glavna sala PIR [%1 $ ta %1 $ tr]"

datoteka 'karte web stranice' (uključujući rrd4j grafikon):

Tekstualna stavka = alarmZone1Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Okvir {Switch item = zone1_Chart_Period label = Mapiranje "razdoblja" = [0 = "Sat", 1 = "Dan", 2 = "Sedmica"] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone1_Chart_Period == 0, zone1_Chart_Period = = Neinicijalizovano] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone1_Chart_Period == 1] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone1_Chart_Period == 2]}} Tekstualna stavka = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Okvir {Switch item = zone2_Chart_Period label = "Mapiranje razdoblja" = [0 = "Sat", 1 = "Dan", 2 = "Sedmica"] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone2_Chart_Period == 0, zone2_Chart_Period == Neinicijalizirano] Url slike = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone2_Chart_Perd == 2]}} Tekstualna stavka = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Okvir {Switch item = zone3_Chart_Period label = "Mapa razdoblja" = [0 = "Sat", 1 = "Dan", 2 = "Sedmica"] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zona3_Chart_Period == 0, zona3_Chart_Period == Neinicijalizirana] Slika url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Url slike = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Tekst item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Okvir {Switch item = zone4_Chart_Period label = " Razdoblje "preslikavanja = [0 =" Sat ", 1 =" Dan ", 2 =" Sedmica "] Url slike =" https:// localhost: 8080/rrdchart.png "vidljivost = [zone4_Chart_Period == 0, zone4_Chart_Period == Neinicijalizovano] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone4_Chart_Period == 1] Url slike = "https:// localhost: 8080/rrdchart.png" vidljivost = [zone4_Chart_Period == 2] }} // NEOBVEZNO, ali zgodno za dijagnosticiranje statusa i IP adrese ss Tekstualna stavka = alarmMonitorState Tekstualna stavka = alarmMonitorIPadresa

datoteka sa pravilima:

pravilo "Promjena stanja zone alarma 1"

kada se stavka alarmZone1State promijeni u OTVOREN, zatim objavi ažuriranje (alarmZone1Trigger, novi DateTimeType ()) alarmZone1State.state = ZATVOREN kraj

pravilo "Promjena stanja zone alarma 2"

kada se stavka alarmZone2State promijeni u OTVOREN, zatim objavi ažuriranje (alarmZone2Trigger, novi DatumTimeType ()) alarmZone2State.state = ZATVOREN kraj

pravilo "Promjena stanja zone alarma 3"

kada se stavka alarmZone3State promijeni u OTVOREN, zatim objavi ažuriranje (alarmZone3Trigger, novi DatumTimeType ()) alarmZone3State.state = ZATVOREN kraj

pravilo "Promjena stanja zone alarma 4"

kada se stavka alarmZone4State promijeni u OTVOREN, zatim objavi ažuriranje (alarmZone4Trigger, novi DatumTimeType ()) alarmZone4State.state = ZATVOREN kraj

Možda ćete morati malo promijeniti gornju konfiguraciju OpenHAB -a kako bi odgovarala vašim postavkama.

Ako imate bilo kakvih problema s aktiviranjem PIR -ova, počnite od početka i izmjerite napone za svaki dio kruga. Nakon što ste zadovoljni s tim, provjerite ožičenje, provjerite postoji li zajednička osnova, provjerite poruke na Wemosu putem konzole za serijsko otklanjanje pogrešaka, provjerite MQTT komunikaciju i provjerite sintaksu vaše transformacije, stavki i datoteka karti web stranica.

Sretno!

Preporučuje se: