INHOUDSOPGAWE:

Alarm PIR na WiFi (en tuisautomatisering): 7 stappe (met foto's)
Alarm PIR na WiFi (en tuisautomatisering): 7 stappe (met foto's)

Video: Alarm PIR na WiFi (en tuisautomatisering): 7 stappe (met foto's)

Video: Alarm PIR na WiFi (en tuisautomatisering): 7 stappe (met foto's)
Video: Webinar|Hoe maak je een kantoor- of werkomgeving ‘slim’? 2024, Julie
Anonim
Image
Image
Alarm PIR na WiFi (en tuisautomatisering)
Alarm PIR na WiFi (en tuisautomatisering)

Oorsig

Hierdie instruksies gee u die geleentheid om die laaste datum/tyd (en opsioneel 'n geskiedenis van tye) van wanneer u huisalarm se PIR's (passiewe infrarooi sensors) geaktiveer is, in u huis -outomatiseringsagteware te sien. In hierdie projek sal ek bespreek hoe om dit te gebruik met OpenHAB (gratis sagteware vir tuisautomatisering, wat ek persoonlik gebruik), alhoewel dit sal werk met enige ander tuisautomatiseringsagteware of -toepassing wat MQTT ondersteun (ook later in hierdie artikel beskryf). Hierdie instruksies lei u deur die nodige stappe om 'n kringbord en 'n Wemos D1 mini ('n IOT -bord met 'n ESP8266 -chip) aan te sluit wat in die alarmsones in u alarmbeheerkas aansluit, sodat wanneer 'n sone (wat bevat een of meer PIR's) geaktiveer word, stuur die Wemos 'n boodskap draadloos met behulp van die MQTT -protokol na u tuisautomatiseringsagteware, wat weer die laaste datum/tyd van die sneller vertoon. Daar is ook 'n Arduino -kode om die Wemos te programmeer.

Inleiding

Die prent hierbo sien ek op een van die skerms op die OpenHAB -app op my iPhone. Die datum/tyd -teks is met kleur gekodeer om 'n vinniger voorstelling te gee van wanneer die PIR geaktiveer is - dit sal rooi vertoon word (binne die laaste 1 minuut geaktiveer), oranje (binne 5 minute geaktiveer), groen (binne 30 minute geaktiveer), blou (geaktiveer binne die laaste uur) of andersins, swart. As u op die datum/tyd klik, word 'n historiese siening van PIR -snellers vertoon, waar 'n 1 beteken geaktiveer, en 0 is ledig. Daar is baie gebruike hiervoor; dit kan byvoorbeeld 'n oplossing vir u tuisaanwesigheid wees, dit kan beweging opspoor as u weg is en via OpenHAB -reëls kennisgewings na u telefoon stuur, u kan dit net soos ek gebruik om te sien of my kinders is in die middel van die nag opstaan, veroorsaak deur 'n PIR wat buite hul slaapkamers woon!

OpenHAB is eenvoudig die tuisautomatiseringsagteware wat ek gebruik, daar is baie ander - en as dit MQTT ondersteun, kan u hierdie projek maklik aanpas by die sagteware wat u gebruik.

Aannames

Hierdie instruksies neem aan dat u reeds het (of opstel):

  • Uiteraard 'n huisalarmstelsel met PIR's (passiewe infrarooi sensors) en dat u toegang tot die alarmbeheerkas het om die nodige bedrading aan te sluit
  • OpenHAB (gratis open source tuisautomatiseringsagteware) loop, hoewel dit soos bespreek moet werk met enige tuis -outomatiseringsagteware wat 'n MQTT -binding kan insluit. U kan ook die kode self aanpas by u eie behoeftes.
  • Mosquitto MQTT (of soortgelyke) makelaar geïnstalleer en bindend gekonfigureer met OpenHAB (MQTT is 'n boodskap wat inteken/publiseer tipe protokol wat lig is en ideaal is vir kommunikasie tussen toestelle)

As u nie OpenHAB en 'n MQTT -makelaar bestuur nie, lees hierdie uitstekende artikel op die MakeUseOf -webwerf

Wat het ek nodig?

Om die draadlose beheerder te skep, moet u die volgende dele kry:

  • Wemos D1 mini V2 (het 'n ingeboude ESP8266 draadlose chip)
  • 'N LM339 -vergelyker (dit sal die PIR -ledigheid kontroleer vs geaktiveer)
  • 'N 5V DC kragbron vir die Wemos (OF, 'n DC-DC buck converter. Let wel: 'n LM7805 spanningsreguleerder werk moontlik nie vir hierdie toepassing nie, soos later in hierdie projek bespreek)
  • Twee weerstande vir 'n spanningsverdeler (grootte hang af van u alarmspannings, word later in die projek bespreek)
  • Een 1K ohm -weerstand om op te tree as 'n aftrekweerstand om LM339 -krag te beheer
  • Een 2N7000 (of soortgelyke) MOSFET om die LM339 logies aan te skakel (moontlik opsioneel, word later in die projek bespreek)
  • 'N Broodplank van gepaste grootte vir die opstel en toets van kringe
  • 'N Klomp broodborddrade om alles aan mekaar te koppel
  • Gereedskap benodig: sysnyers, enkelkerndraad
  • 'N DC-multimeter (verpligtend!)

Stap 1: Die alarmstelselbeheerkas

Die alarmstelsel se bedieningsboks
Die alarmstelsel se bedieningsboks

Eers 'n paar waarskuwings en vrywaring

Persoonlik het ek 'n Bosch alarmstelsel. Ek beveel u sterk aan om die toepaslike handleiding vir u spesifieke alarmstelsel af te laai en vertroud te raak met dit voordat u begin, aangesien u die alarmstelsel moet afskakel om die sones te bedraad. Ek beveel ook aan dat u hierdie artikel in sy geheel lees voordat u begin!

Hieronder is 'n lys van 'n paar dinge wat u moet weet voordat u begin - maak seker dat u elkeen daarvan lees en verstaan voordat u verder gaan! Ek neem geen verantwoordelikheid as u u alarmstelsel verwoes en/of u installeerder moet betaal om dit reg te stel nie. As u egter die volgende lees en verstaan en die nodige voorsorgmaatreëls tref, is dit goed:

1. My alarmstelsel het 'n rugsteunbattery in die boks en 'n knoppie -skakelaar aan die binnekant van die deksel (wat toegang tot die alarmstelselbord bied), sodat die alarm selfs ekstern kan afskakel as die voorpaneel van die bedieningspaneel verwyder word boks, dit het die alarm veroorsaak! Om dit te vermy terwyl ek aan die projek werk, het ek die sabotagebeskerming omseil deur die stekker uit te skakel en dan die sabotasie -skakelaar te kortsluit (die dik rooi draad soos op die foto hierbo getoon)

2. By die aanstuur van die alarmstelsel, begin die alarmbedieningspaneel na ongeveer ~ 12 uur met foutkodes. Nadat ek die foutkodes deur die handleiding bepaal het, het ek uitgevind dat dit my gewaarsku het dat:

  • Die datum/tyd is nie ingestel nie (ek het die hoofkode en sleutelreeks uit die handleiding nodig gehad om te herkonfigureer)
  • Dat die rugsteunbattery nie gekoppel is nie (maklike oplossing, ek het net vergeet om die battery weer in te sluit)

3. In my alarm is daar egter 4 x sonverbindingsblokke (gemerk Z1 -Z4) waarop die PIR's op die hoofalarmbord kan aansluit, maar my alarmstelsel is in werklikheid in staat tot 8 sones. Elke sone -verbindingsblok kan eintlik 2 x sones elk (Z1 doen Z1 en Z5, Z2 doen Z2 en Z6 ensovoorts). Die alarmstelsel het 'n ingeboude sabotagebeskerming om iemand te stop, die deksel oop te maak vir die alarmstelsel soos hierbo genoem, of om die drade na 'n PIR te sny. Dit onderskei tussen elke sone -knoeiery via EOL (einde van die lyn) weerstande. Dit is weerstande van spesifieke grootte wat aan die "einde van die lyn" geleë is - met ander woorde, binne die PIR (of knoppie -skakelaar van die bedieningsboks, of sirene -boks of wat ook al aan die sone gekoppel is) Soos genoem, word hierdie weerstande gebruik as 'sabotage' beskerming ' - tegnies, as iemand die kabels na 'n PIR sny - omdat die alarmstelsel 'n sekere weerstand van die PIR verwag, sou die weerstand verander, neem dit aan dat iemand met die stelsel gepeuter het en die alarm sal aktiveer.

Byvoorbeeld:

Op my alarm het Zone "Z4" 2 drade, een gaan na die PIR in my gang en een gaan na die alarmknoppie se skakelaar. Binne die gang PIR het dit 'n weerstand van 3300 ohm. Die ander draad wat na die knoppie -skakelaar van die bedieningsboks loop, het 'n weerstand van 6800 ohm wat in serie gekoppel is. Dit is hoe die alarmstelsel (logies) onderskei tussen "Z4" en "Z8" stampers. Net so het die sone "Z3" 'n PIR (met 'n weerstand van 3300 ohm) en ook die sirene -knoppie -skakelaar (met 'n weerstand van 6800 ohm) wat 'Z7' uitmaak. Die alarminstalleerder sou die alarmstelsel vooraf gekonfigureer het, sodat hy weet watter toestel aan elke sone gekoppel is (en die grootte van die EOL-weerstand verander het, aangesien die alarmstelsel geprogrammeer is om te weet watter grootte die verskillende EOL-weerstande is. Onder in geen geval moet u die waarde van hierdie weerstande verander nie!)

So gebaseer op die bogenoemde, omdat elke sone moontlik ook verskeie toestelle (met verskillende weerstandswaardes) gekoppel het en die formule V = IR (spanning = ampère x weerstand) onthou, kan dit ook beteken dat elke sone verskillende spannings kan hê. Dit lei ons na die volgende stap en meet elke sone IDLE vs TRIGGERED spanning …

Stap 2: Meet alarmsonespanning

Meet alarmsonespanning
Meet alarmsonespanning
Meet alarmsonespanning
Meet alarmsonespanning

Sodra u toegang tot die hoofbord van u alarmstelsel verkry het (en die sabotasie -skakelaar omseil het as u een het, soos in die vorige stap), skakel u alarmstelsel weer aan. Ons moet nou die spanning van elke sone meet wanneer die ledig is (geen beweging voor die PIR nie) vs TRIGGERED (PIR beweging opgespoor het) Gryp 'n pen en papier sodat u u spanningslesings kan neerskryf.

WAARSKUWING: Die grootste deel van u alarmstelsel werk waarskynlik op 12V DC, maar die aanvanklike voeding sal 220V (of 110V) AC wees, met 'n transformator wat krag van AC na DC omskakel. LEES die handleiding en neem ekstra voorsorg om te verseker dat u GEEN wisselstroomaansluitings meet nie !!! Volgens die skermkiekie van my alarmstelsel op hierdie bladsy, kan u sien dat die onderste onderkant van die prent wisselstroom in is, omgeskakel na 12V DC. Ons meet die 12V DC in die gemerkte rooi blokkies. Moet nooit aan die wisselstroom raak nie. Wees uiters versigtig!

Meet PIR -spanning

Ek het 4 x PIR's gekoppel aan Z1 tot en met Z4. Meet elkeen van u sones soos volg.

  1. Identifiseer eers die GND -terminale en die sonterminale op die alarmpaneel. Ek het dit uitgelig in die prentjie uit die handleiding van my Bosch -alarm.
  2. Gryp u multimeter en stel u spanningsmeting op 20V DC. Koppel die swart (COM) kabel van u multimeter aan die GND -aansluiting op die alarm. Plaas die rooi (+) lood van u multimeter op die eerste sone - in my geval "Z1". Skryf die spanningslesing neer. Voer dieselfde stappe uit vir die oorblywende sones. My spanningsmetings is soos volg:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Soos hierbo genoem, is daar ook PIR's op my eerste twee sones. In laasgenoemde twee sones is beide PIR's en sabotagebeskerming ingebed (Z3 -bedieningspaneel, Z4 -sirene -peuter) Let op die spanningsverskille.

3. U benodig waarskynlik 2 mense vir hierdie volgende stap. U moet ook weet watter PIR in watter sone is. Gaan terug en lees die spanning op die eerste sone. Laat iemand in u huis voor die PIR loop, die spanning moet daal. Let op die nuwe spanningslesing. In my geval lees die spannings soos volg as die PIR's geaktiveer word:

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

Soos hierbo genoem, kan ek sien dat wanneer die sones 1 en 2 geaktiveer word, die spanning daal van 6,65V tot 0V. As sones 3 en 4 geaktiveer word, daal die spanning egter van 7,92V tot 4,30V.

Meet 12V kragtoevoer

Ons sal die 12V DC -aansluiting van die alarmbeheerkas gebruik om ons projek aan te dryf. Ons moet die spanning van die 12V DC -voeding op die alarm meet. Alhoewel dit reeds 12V aandui, moet ons 'n meer akkurate lesing ken. In my geval lees dit eintlik 13.15V. Skryf dit neer, u benodig hierdie waarde in die volgende stap.

Waarom meet ons spanning?

Die rede waarom ons die spanning vir elke PIR moet meet, is as gevolg van die stroombaan wat ons gaan skep. Ons sal 'n LM339 quad differensiaalvergelyker-chip (of quad op-amp-vergelyker) as die belangrikste elektriese komponent vir hierdie projek gebruik. Die LM339 het 4 onafhanklike spanningsvergelykers (4 kanale) waar elke kanaal 2 x insetspannings neem (een omkerende (-) en een nie-omkerende (+) ingang, sien diagram) As die spanning van die omkerende insetspanning laer as die nie-omkerende spanning, dan word die verwante uitset daarvan na die aarde getrek. Net so, as die nie-omkerende ingangsspanning laer daal as die omkerende ingang, word die uitset na Vcc getrek. In my huis het ek gerieflik 4 x PIR's/sones vir alarms; daarom word elke sone aan elke kanaal op die vergelyking gekoppel. As u meer as 4 x PIR's het, benodig u 'n vergelyker met meer kanale, of 'n ander LM339!

Opmerking: die LM339 verbruik krag in nano-versterkers, en beïnvloed dus nie die EOL-weerstand van die bestaande alarmstelsel nie.

As dit verwarrend is, gaan dan voort met die volgende stap; dit sal meer sin maak as ons dit opdraai!

Stap 3: Skep 'n spanningsverdeler

Image
Image

Wat is 'n spanningsverdeler?

'N Spanningsverdeler is 'n stroombaan met 2 x weerstande (of meer) in serie. Ons verskaf spanning in (Vin) aan die eerste weerstand (R1) Die ander been van R1 sluit aan by die eerste been van die tweede weerstand (R2), en die ander kant van R2 sluit aan by GND. Ons neem dan 'n uitgangsspanning (Vout) uit die verbinding tussen R1 en R2. Die spanning sal ons verwysingspanning vir die LM339 word. Raadpleeg die YouTube -video van Adohms vir meer inligting oor hoe spanningsverdelers werk

(Let wel: weerstande het nie polariteit nie, sodat hulle in beide rigtings bedraad kan word)

Berekening van ons verwysingspanning

As ons aanneem dat die spanning daal wanneer u PIR geaktiveer word (dit moet die geval wees met die meeste alarms), dan is dit wat ons probeer bereik, om 'n spanningslesing te kry wat ongeveer halfpad is tussen ons laagste ledige spanning en ons hoogste geaktiveerde spanning, dit sal ons verwysingspanning word.

Neem my alarm as voorbeeld …

Die sone -ledige spanning was Z1 = 6,65V, Z2 = 6,65V, Z3 = 7,92V, Z4 = 7,92V. Die laagste ledige spanning is dus 6,65V

Die sonespannings was: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. Die hoogste geaktiveerde spanning is dus 4,30V

Ons moet dus 'n getal halfpad tussen 4.30V en 6.65V kies (hoef nie presies te wees nie, net grof) In my geval moet my verwysingspanning ongeveer 5.46V wees. Opmerking: as die laagste ledige en hoogste spanning wat baie geaktiveer is baie na aan mekaar is as gevolg van verskeie sones wat 'n reeks verskillende spannings veroorsaak, moet u moontlik 2 of meer spanningsverdelers skep.

Berekening van ons weerstandswaardes vir die spanningsverdeler

Nou het ons 'n verwysingspanning, ons moet bereken watter grootte weerstande ons benodig om 'n spanningsverdeler te skep wat ons verwysingspanning sal verskaf. Ons sal die 12V DC -spanningsbron (Vs) van die alarm gebruik. Soos in die vorige stap, toe ons die 12V DC -voeding gemeet het, het ons eintlik 13,15V gekry. Ons moet die spanningsverdeler bereken deur hierdie waarde as bron te gebruik.

Bereken Vout met behulp van die ohm -wet …

Vout = Vs x R2 / (R1 + R2)

… of gebruik 'n aanlyn spanningsverdeler sakrekenaar:-)

U sal moet eksperimenteer met die weerstandswaardes totdat u die gewenste uitset bereik. In my geval het dit uitgewerk met R1 = 6,8k ohm en R2 = 4,7K ohm, bereken in lang vorm soos volg:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805 /11, 500

Vout = 5.37V

Stap 4: Verbind die LM339

Bedrading van die Wemos D1 Mini
Bedrading van die Wemos D1 Mini

Spanningsverdeler na LM339 omdraai -insette

Soos vroeër bespreek met betrekking tot die LM339 -vergelyker, benodig dit 2 x insette. Die een is 'n spanning van elke PIR na die nie-omkerende (+) terminale van elke kanaal, die ander is ons verwysingspanning na ons omkerende (-) terminaal. Die verwysingspanning moet alle 4 vergelykende omset -insette voed. Skakel u alarmstelsel af voordat u hierdie stappe uitvoer.

  • Draai 'n draad van die 12V DC -blok op die alarmstelsel na die + -rail op u broodbord *
  • Draai 'n draad van die GND -blok op die alarmstelsel na die - rail op u broodbord **
  • Installeer die LM339 -vergelyker in die middel van die broodbord (die kerf dui die naaste aan pen 1 aan)
  • Installeer die 2 x weerstande om 'n spanningsverdelerkring en 'n draad vir verdeelde spanning te skep
  • Drade drade van die 'spanningsverdeelde' Vout na elke LM339 -omkeringsterminal

* WENK: gebruik indien moontlik 'n krokodilleklem vir die krag, want dit maak dit makliker om aan/uit -krag aan u projek te verskaf ** BELANGRIK! 'N MOSFET kan nodig wees as u die Wemos vanaf die alarmpaneel aanskakel! In my geval ontvang die LM339, Wemos en Alarm almal krag van dieselfde bron (dit wil sê: die alarmstelsel self). Dit laat my toe om alles aan te skakel met 'n enkele kragverbinding. Die GPIO -penne op die Wemos word egter standaard gedefinieer as "INPUT" -pennetjies - wat beteken dat hulle die spanning wat na hulle gegooi word neem, en vertrou op die bron om die korrekte spanningsvlakke (min/maksimum vlakke) te verskaf, sodat die Wemos ' t neerstort of uitbrand nie. In my geval kry die alarmstelsel sy krag en begin sy opstartvolgorde baie vinnig - in werklikheid so vinnig dat dit dit doen voordat die Wemos kan opstart en die GPIO -penne kan verklaar as "INPUT_PULLUP" (spanning intern opgetrek binne die chip). Dit beteken nie dat die spanningverskille die Wemos sou laat neerstort wanneer die hele stelsel krag kry nie. Die enigste manier om dit te voorkom, is om die Wemos handmatig aan en uit te skakel. Om dit op te los, word 'n MOSFET bygevoeg en dien as 'n 'logiese skakelaar' om die LM339 aan te skakel. Dit stel die Wemos in staat om op te stel, sy 4 x vergelykbare GPIO -penne in te stel as "INPUT_PULLUP's", 'n paar sekondes te vertraag en dan (via 'n ander GPIO -pen D5 gedefinieer as 'n UITGANG) 'HIGH' sein via GPIO -pen D5 na die MOSFET te stuur, wat die LM339 logies aanskakel. Ek sou aanbeveel dat u bedrieg soos hierbo, maar as u agterkom dat die Wemos neerstort soos ek, moet u die MOSFET insluit met 'n 1k ohm aftrekweerstand. Sien die einde van hierdie instruksies vir meer inligting oor hoe u dit moet doen.

Alarmsones vir LM339 nie-omkeer-insette

Ons moet nou drade vanaf elke sone op die alarmbeheerpaneel na die LM339 -vergelykingsingange lei. Terwyl die alarmstelsel steeds afgeskakel is, voer vir elke sone 'n draad aan elke nie-omkerende (+) invoer op die LM339-vergelyker. Byvoorbeeld, in my stelsel:

  • Draad vanaf Z1 gaan na LM339 -invoer 1+
  • Draad vanaf Z2 gaan na LM339 -invoer 2+
  • Draad van Z3 gaan na LM339 -invoer 3+
  • Draad vanaf Z4 gaan na LM339 -invoer 4+

Verwys na die pin-out van die LM339 onder stap 3 as u 'n herinnering daaraan het (dit is gekleur met die broodbordbeeld). As dit klaar is, moet u broodbord soortgelyk lyk aan die prentjie wat in hierdie stap getoon word.

Skakel die alarmstelsel aan en meet die spanning wat uit die spanningsverdeler kom om te verseker dat dit gelyk is aan u verwysingspanning soos vroeër bereken.

Stap 5: Bedrading van die Wemos D1 Mini

Bedrading van die Wemos D1 mini

Nou het ons al die LM339 insette versorg, ons moet nou die Wemos D1 mini inskakel. Elke LM339 -uitvoerpen gaan na 'n Wemos GPIO -pen (vir algemene doeleindes/uitvoer) wat ons via kode sal aandui as 'n invoerpulpen. Die Wemos neem 'n maksimum van 5V as sy Vcc (insetbron) spanning (alhoewel dit intern reguleer tot 3.3V). Ons gebruik 'n baie algemene LM7805 spanningsreguleerder (EDIT: sien hieronder) om die 12V -rail op die broodbord te laat val tot 5V om die Wemos aan te dryf. Die datablad vir die LM7805 dui aan dat ons 'n kondensator aan elke kant van die reguleerder nodig het om die krag glad te maak, soos op die paneelbord getoon. Die langer been van die kapasitor is positief (+), dus maak seker dat dit op die regte manier ingebind is.

Die spanningsreguleerder neem spanning in (pen aan die linkerkant), grond (middelste pen) en spanning uit (pen aan die regterkant). Kontroleer die uitsparing as u spanningsreguleerder verskil van die LM7805.

(EDIT: Ek het gevind dat die versterkers wat van die alarmpaneel af kom, te hoog was om deur die LM7805 hanteer te word. Dit veroorsaak baie hitte in die klein koellichaam van die LM7805 en veroorsaak dat dit nie werk nie, en veroorsaak dat die Wemos stop Ek het die LM7805 en kapasitors vervang met 'n DC-DC boksomskakelaar en het sedertdien geen probleme ondervind nie. Dit is baie maklik om aan te sluit. Koppel eenvoudig die ingangsspanning van die alarm aan, koppel eers aan 'n multimeter en gebruik die potensiometerskroef en pas aan totdat die uitgangsspanning ~ 5V is)

GPIO -invoerpenne

Vir hierdie projek gebruik ons die volgende penne:

  • sone Z1 => pen D1
  • sone Z2 => pen D2
  • sone Z3 => pen D3
  • sone Z4 => pen D5

Dra die uitsette van die LM339 na die verwante GPIO -penne op die Wemos -bord, volgens die broodbordbeeld wat in hierdie stap getoon word. Ek het weer die insette en bypassende uitsette met kleur gekodeer, om dit makliker te maak om te sien wat na wat verwys. Elke GPIO -pen in die Arduino word gedefinieer as 'INPUT_PULLUP', wat beteken dat hulle onder normale gebruik tot 3,3V getrek word (IDLE) en die LM339 sal hulle grond toe trek as die PIR geaktiveer word. Die kode bespeur die verandering van HOOG tot LAAG en stuur 'n boodskap draadloos na u tuisautomatiseringsagteware. As u probleme ondervind met die werking daarvan, is dit moontlik dat u u omkeer- of nie-omkeer-insette verkeerd het (as die spanning van u PIR hoog word wanneer dit geaktiveer word, soos met die meeste stokperdjie-PIR's, dan wil u die verbindings andersom)

Arduino IDE

Verwyder die Wemos van die broodbord, ons moet nou die kode hiernatoe oplaai (alternatiewe skakel hier). tipe borde. Sluit u USB -kabel aan op die Wemos -bord en op u rekenaar en vuur die Arduino IDE aan. Laai die kode af en maak dit oop in u projek. U moet seker maak dat die korrekte bord vir u projek geïnstalleer en gelaai is, sowel as die korrekte gekose COM -poort (gereedskap, poort). U sal ook die toepaslike biblioteke moet installeer (PubSubClient, ESP8266Wifi) Om die Wemos -bord in u skets op te neem, sien hierdie artikel.

U moet die volgende reëls kode verander en vervang met u eie SSID en wagwoord vir u draadlose verbinding. Verander ook die IP -adres om na u eie MQTT -makelaar te verwys.

// Wifi

const char* ssid = "your_wifi_ssid_here"; const char* password = "your_wifi_password_here"; // MQTT Broker IPAddress MQTT_SERVER (172, 16, 223, 254)

Sodra dit verander is, verifieer u kode en laai dit dan via 'n USB -kabel na die Wemos -bord.

Notas:

  • As u verskillende GPIO -poorte gebruik, moet u die kode aanpas. As u meer of minder sones as ek gebruik, moet u ook die kode en die TOTAL_ZONES = 4 aanpas; konstant om by te pas.
  • By die aanvang van my alarmstelsel, sou die alarmstelsel 'n kragtoets doen aan alle 4 x PIR's wat alle gekoppelde GPIO grond toe getrek het, wat veroorsaak dat die Wemos dink dat die sones geaktiveer word. Die kode ignoreer die stuur van MQTT -boodskappe as alle vier die sones terselfdertyd aktief is, aangesien dit aanvaar dat die alarmstelsel aanskakel.

Alternatiewe aflaai skakel na kode HIER

Stap 6: Toets en OpenHAB -konfigurasie

Toets en OpenHAB -konfigurasie
Toets en OpenHAB -konfigurasie

MQTT toets

MQTT is 'n "inteken / publiseer" boodskapstelsel. Een of meer toestelle kan met 'n 'MQTT -makelaar' praat en op 'n sekere onderwerp 'inteken'. Inkomende boodskappe van enige ander toestel wat na dieselfde onderwerp "gepubliseer" word, word deur die makelaar na alle toestelle wat daarop ingeteken het, uitgestoot. Dit is 'n uiters liggewig en maklik om te gebruik protokol en perfek as 'n eenvoudige snellerstelsel soos die hier. Om te toets, kan u inkomende MQTT -boodskappe van die Wemos na u MQTT -makelaar sien deur die volgende opdrag op u Mosquitto -bediener uit te voer (Mosquitto is een van die vele MQTT Broker -sagteware wat beskikbaar is). Hierdie opdrag onderskryf die inkomende Keepalive -boodskappe:

mosquitto_sub -v -t openhab/alarm/status

U behoort inkomende boodskappe elke 30 sekondes van die Wemos af te sien met die nommer "1" (wat beteken "ek lewe"). As u konstante "0's" (of geen reaksie) sien nie, is daar geen kommunikasie nie. Sodra u die nommer 1 sien inkom, beteken dit dat die Wemos met die MQTT -makelaar kommunikeer (soek "MQTT Last Will and Testament" vir meer inligting oor hoe dit werk, of sien hierdie baie goeie bloginskrywing)

As u eers bewys het dat die kommunikasie funksioneel is, kan ons toets dat 'n sonesoort via MQTT gerapporteer word. Teken in op die volgende onderwerp (die # is 'n wildkaart)

mosquitto_sub -v -t openhab/alarm/#

Die gewone statusboodskappe moet inkom, net soos die IP -adres van die Wemos self. Loop voor 'n PIR, en u moet ook sien dat die sone -inligting binnekom wat aandui dat dit OOP is, dan 'n sekonde of wat later dat dit GESLUIT is, soortgelyk aan die volgende:

openhab/alarm/status 1

openhab/alarm/zone1 OOP

openhab/alarm/zone1 GESLUIT

Sodra dit werk, kan ons OpenHAB konfigureer om dit mooi in die GUI voor te stel.

OpenHAB -opset

Die volgende veranderinge word aan OpenHAB vereis:

'alarm.map' transformlêer: (opsioneel, vir toetsing)

CLOSED = IdleOPEN = TriggeredNULL = Onbekend- = Onbekend

'status.map' transformeer lêer:

0 = misluk

1 = Aanlyn -= AF! NULL = onbekend

'items' -lêer:

String alarmMonitorState "Alarm Monitor [MAP (status.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/status: state: default]"} String alarmMonitorIPAddress "Alarm Monitor IP [%s]" {mqtt = "<[mqttbroker: openhab/alarm/ipaddress: state: default]"} Number zone1_Chart_Period "Zone 1 Chart" Contact alarmZone1State "Zone 1 State [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/zone1: state: default "} String alarmZone1Trigger" Lounge PIR [%1 $ ta%1 $ tr] "Number zone2_Chart_Period" Zone 2 Chart "Contact alarmZone2State" Zone 2 State [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab/alarm/zone2: state: default "} String alarmZone2Trigger" Eerste saal PIR [%1 $ ta %1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 Gee [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Slaapkamer PIR [%1 $ ta%1 $ tr] "nommer zone4_Chart_Period "Zone 4 Chart" Contact alarmZone4State "Zone 4 State [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: default "} String alarmZone4Trigger" Main Hall PIR [%1 $ ta %1 $ tr]"

'sitemap' -lêer (insluitend rrd4j grafiek):

Teksitem = alarmZone1Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone1_Chart_Period label = "Periode" kartering = [0 = "Uur", 1 = "Dag", 2 = "Week"] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Oninitialiseer] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Teksitem = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Wissel item = zone2_Chart_Period label = "Periode" kartering = [0 = "Uur", 1 = "Dag", 2 = "Week"] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Oninitialiseer] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Teksitem = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" kartering = [0 = "Uur", 1 = "Dag", 2 = "Week"] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Oninitialiseerde] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Teks item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone4_Chart_Period label = " Periode "mappings = [0 =" Uur ", 1 =" Dag ", 2 =" Week "] Beeld url =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Oninitialiseer] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Beeld url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // OPSIONEEL maar handig vir die diagnose van status en IP -adres ss Teksitem = alarmMonitorState Teksitem = alarmMonitorIPAddress

'reëls' -lêer:

reël "Alarmsone 1 toestand verander"

toe Item alarmZone1State verander na OPEN dan postUpdate (alarmZone1Trigger, nuwe DateTimeType ()) alarmZone1State.state = GESLOTE einde

reël "Alarmsone 2 toestand verander"

toe Item alarmZone2State verander na OPEN dan postUpdate (alarmZone2Trigger, nuwe DateTimeType ()) alarmZone2State.state = GESLOTE einde

reël "Alarmsone 3 toestand verander"

toe Item alarmZone3State verander na OPEN dan postUpdate (alarmZone3Trigger, nuwe DateTimeType ()) alarmZone3State.state = GESLOTE einde

reël "Alarmsone 4 toestand verander"

toe Item alarmZone4State verander na OPEN dan postUpdate (alarmZone4Trigger, nuwe DateTimeType ()) alarmZone4State.state = GESLOTE einde

Miskien moet u die bogenoemde OpenHAB -konfigurasie effens verander om by u eie opset te pas.

As u probleme ondervind dat PIR's geaktiveer word, begin dan van die begin af en meet spannings vir elke deel van die stroombaan. As u tevrede is daarmee, kyk na u bedrading, maak seker dat daar 'n gemeenskaplike grond is, kyk na die boodskappe op die Wemos via 'n seriële ontfoutingskonsole, kyk na die MQTT -kommunikasie en kyk na die sintaksis van u transformasie, items en sitemap -lêers.

Sterkte!

Aanbeveel: