Innehållsförteckning:

Larm PIR till WiFi (och hemautomation): 7 steg (med bilder)
Larm PIR till WiFi (och hemautomation): 7 steg (med bilder)

Video: Larm PIR till WiFi (och hemautomation): 7 steg (med bilder)

Video: Larm PIR till WiFi (och hemautomation): 7 steg (med bilder)
Video: Alert Alarm - Så monterar du rörelsedetektorn 2024, Juli
Anonim
Image
Image
Larm PIR till WiFi (och hemautomation)
Larm PIR till WiFi (och hemautomation)

Översikt

Denna instruktör ger dig möjlighet att se det senaste datumet/klockslaget (och eventuellt en historik av tider) för när ditt huslarms PIR (passiva infraröda sensorer) utlöstes i din hemautomatiseringsprogramvara. I det här projektet kommer jag att diskutera hur man använder med OpenHAB (gratis mjukvara för hemautomatisering, som jag personligen använder) även om det kommer att fungera med alla andra hemautomatiseringsprogram eller -program som stöder MQTT (beskrivs också senare i denna artikel). Denna instruktion kommer att leda dig genom de nödvändiga stegen om hur du kopplar upp ett kretskort och Wemos D1 mini (ett IOT -kort som använder ett ESP8266 -chip) som tappar in i larmzonerna i din larmkontrollbox så att när en zon (som innehåller en eller flera PIR) utlöses, skickar Wemos ett meddelande trådlöst med MQTT -protokollet till din hemautomatiseringsprogramvara som i sin tur visar det sista datumet/klockslaget för den utlösaren. Arduino -kod för att programmera Wemos finns också.

Introduktion

Bilden ovan är vad jag ser via en av skärmarna i OpenHAB -appen på min iPhone. Datum/tidstexten är färgkodad för att ge en snabbare representation av när PIR utlöstes - den kommer att visa rött (utlöst inom den senaste 1 minuten), orange (utlöst inom de senaste 5 minuterna), grönt (utlöst inom de senaste 30 minuterna), blå (utlöst under den senaste timmen) eller på annat sätt, svart. Om du klickar på datum/tid visas en historisk vy av PIR -utlösare, där ett 1 betyder utlöst och 0 är inaktiv. Det finns många användningsområden för detta, till exempel kan det komplettera din hemnärvarolösning, det kan upptäcka rörelse om du är borta och via OpenHAB -regler, skicka aviseringar till din telefon, du kan använda den som jag för att se om mina barn är gå upp mitt i natten, utlöst av ett PIR som ligger utanför deras sovrum!

OpenHAB är helt enkelt den hemautomatiseringsprogramvara jag använder, det finns många andra - och om de stöder MQTT kan du enkelt anpassa detta projekt till den programvara du använder.

Antaganden

Denna instruerbara förutsätter att du redan har (eller kommer att konfigurera):

  • Uppenbarligen ett hemlarmsystem med PIR (passiva infraröda sensorer) och att du har tillgång till larmkontrollboxen för att ansluta nödvändiga ledningar
  • OpenHAB (gratis öppen källkod hemautomatiseringsprogramvara) körs, men som diskuterat bör det fungera med alla hemautomatiseringsprogram som kan innehålla en MQTT -bindning. Alternativt kan du ändra koden själv för att passa dina egna behov.
  • Mosquitto MQTT (eller liknande) mäklare installerad och bindande konfigurerad med OpenHAB (MQTT är ett protokoll som prenumererar/publicerar typ som är lätt och bra för kommunikation mellan enheter)

Om du inte kör OpenHAB och en MQTT -mäklare, se denna utmärkta artikel på MakeUseOf -webbplatsen

Vad behöver jag?

För att skapa den trådlösa handkontrollen måste du ange följande delar:

  • Wemos D1 mini V2 (har ett ESP8266 trådlöst CHIP inbyggt)
  • En LM339 -komparator (detta kommer att göra kontroll av PIR inaktiv vs utlöst)
  • En 5V DC-strömkälla för Wemos (ELLER, en DC-DC-buck-omvandlare. Obs! En LM7805-spänningsregulator fungerar kanske inte för denna applikation som diskuterades senare i detta projekt)
  • Två motstånd för en spänningsdelare (storlek beror på dina larmspänningar, diskuteras senare i projektet)
  • Ett 1K ohm motstånd för att fungera som ett neddragningsmotstånd för att styra LM339 -effekt
  • En 2N7000 (eller liknande) MOSFET för att logiskt slå på LM339 (eventuellt valfritt, diskuteras senare i projektet)
  • En lämplig storlek brödbräda för kretsuppställning och testning
  • Ett gäng brödbrädetrådar för att koppla ihop allt
  • Verktyg som behövs: sidoskär, enkelkärnig tråd
  • En DC-multimätare (obligatorisk!)

Steg 1: Larmsystemets kontrollbox

Larmsystemets kontrollbox
Larmsystemets kontrollbox

Först några varningar och ansvarsfriskrivningar

Personligen har jag ett Bosch larmsystem. Jag rekommenderar starkt att du laddar ner den relevanta manualen för ditt specifika larmsystem och bekantar dig med det innan du börjar, eftersom du måste stänga av larmsystemet för att koppla upp zonerna. Jag skulle också rekommendera dig att läsa denna artikel i sin helhet innan du börjar!

Nedan finns en lista med några saker du bör veta innan du börjar - se till att du läser och förstår var och en av dem innan du fortsätter! Jag tar inget ansvar om du förstör ditt larmsystem och/eller måste betala din installatör för att fixa det. Om du emellertid läser och förstår följande och vidtar nödvändiga försiktighetsåtgärder bör du må bra:

1. Mitt larmsystem hade ett reservbatteri inuti lådan och hade också en sabotageknapp på insidan av locket (som ger åtkomst till larmsystemkortet) så att även stänga av larmet externt när du tar bort frontpanelen på kontrollen låda det utlöste larmet! För att komma runt detta medan jag arbetade med projektet kringgick jag manipuleringsskyddet genom att koppla ur och sedan kortsluta sabotagekontakten (den tjocka röda tråden som visas på bilden ovan)

2. När larmsystemet startades igen började larmcentralen efter cirka 12 timmar att pipa med felkoder. Efter att ha fastställt felkoderna via manualen fick jag reda på att det varnade mig för att:

  • Datum/tid var inte inställt (jag behövde huvudkoden och nyckelsekvensen från manualen för att konfigurera om)
  • Att reservbatteriet inte var anslutet (enkel fix, jag hade precis glömt att sätta in batteriet igen)

3. I mitt larm finns det dock 4 x zonanslutningsblock (märkta Z1 -Z4) för PIR: n att koppla in på huvudlarmkortet, men mitt larmsystem har faktiskt 8 zoner. Varje zonanslutningsblock kan faktiskt köra 2 x zoner vardera (Z1 gör Z1 och Z5, Z2 gör Z2 och Z6 och så vidare). Larmsystemet har inbyggt manipuleringsskydd för att stoppa någon att säga, öppna locket till larmsystemet som nämnts ovan eller klippa ledningarna till ett PIR. Det skiljer mellan varje zon manipulering via EOL (slutet av raden) motstånd. Dessa är specifikt dimensionerade motstånd som ligger vid "slutet av linjen" - med andra ord, inuti PIR (eller kontrollboxens sabotageknapp, eller sirenbox eller vad som helst som är kopplat till den zonen) Som nämnts används dessa motstånd som "manipulering" skydd ' - tekniskt, om någon skär av kablarna till ett PIR - eftersom larmsystemet förväntar sig att se ett visst motstånd från det PIR, om motståndet ändras, antar det att någon har manipulerat med systemet och kommer att utlösa larmet.

Till exempel:

På mitt larm har zon "Z4" 2 ledningar i den, en går till PIR i min korridor och en går till larmkontrollboxens sabotageknapp. Inuti korridoren PIR har den ett 3300 ohm motstånd. Den andra ledningen som går till kontrollboxens sabotagebrytare har ett motstånd på 6800 ohm kopplat i serie. Detta är hur larmsystemet (logiskt) skiljer mellan "Z4" och "Z8" tampers. På samma sätt har zon "Z3" ett PIR (med 3300 ohm motstånd i det) och även siren sabotagebrytare (med 6800 ohm motstånd i det) som utgör "Z7". Larminstallatören skulle ha förkonfigurerat larmsystemet så att det vet vilken enhet som är ansluten till varje zon (och ändrat storleken på EOL-motståndet för att passa, eftersom larmsystemet är programmerat att veta vilken storlek de olika EOL-motstånden har. Under under inga omständigheter ska du ändra värdet på dessa motstånd!)

Så baserat på ovanstående, eftersom varje zon kan ha flera enheter anslutna också (med olika motståndsvärden) och komma ihåg formeln V = IR (spänning = ampere x motstånd) då kan det också betyda att varje zon kan ha olika spänningar. Vilket leder oss till nästa steg, mäter varje zon IDLE vs TRIGGERED spänning …

Steg 2: Mätning av larmzonspänning

Mätning av larmzonspänning
Mätning av larmzonspänning
Mätning av larmzonspänning
Mätning av larmzonspänning

När du har fått åtkomst till huvudkortet på ditt larmsystem (och kringgått sabotagekontakten om du har en, enligt föregående steg) startar du larmsystemet igen. Vi måste nu mäta varje zons spänning när dess IDLE (ingen rörelse framför PIR) vs TRIGGERED (PIR har upptäckt rörelse) Ta en penna och papper så att du kan skriva ner dina spänningsmätningar.

VARNING: Huvuddelen av ditt larmsystem körs troligen på 12V DC, men det kommer att ha sin ursprungliga strömmatning vid 220V (eller 110V) AC, med en transformator som omvandlar ström från AC till DC. LÄS bruksanvisningen och var försiktig så att du INTE mäter några AC -terminaler !!! Enligt skärmdumpen av mitt larmsystem på den här sidan kan du se att botten av bilden är växelström, transformerad till 12V DC. Vi mäter 12V DC i de röda rutorna markerade. Rör aldrig vid nätströmmen. Var ytterst försiktig!

Mätning av PIR -spänning

Jag har 4 x PIR anslutna till Z1 till Z4. Mät var och en av dina zoner enligt följande.

  1. Identifiera först GND -terminalen och zonterminalerna på larmpanelen. Jag har markerat dessa i bilden som visas i manualen för mitt Bosch -larm.
  2. Ta tag i din multimeter och ställ in din spänningsmätning till 20V DC. Anslut den svarta (COM) kabeln från din multimeter till GND -terminalen på larmet. Placera den röda (+) kabeln från din multimeter på första zonen - i mitt fall märkt "Z1". Skriv ner spänningsavläsningen. Utför samma steg för de återstående zonerna. Mina spänningsmätningar är följande:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Enligt ovanstående har mina första två zoner bara PIR -anslutningar också. De två sistnämnda zonerna har både PIR och manipuleringsskydd kopplat in i dem (Z3 kontrollbox sabotage, Z4 siren sabotage) Observera spänningsskillnaderna.

3. Du kommer sannolikt att behöva 2 personer för detta nästa steg. Du måste också veta vilken PIR som är i vilken zon. Gå tillbaka och läs spänningen på den första zonen. Få nu någon i ditt hus att gå framför PIR, spänningen ska sjunka. Notera den nya spänningsavläsningen. I mitt fall läser spänningarna enligt följande när PIR: erna utlöses:

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

Enligt ovanstående kan jag se att när zonerna 1 och 2 utlöses sjunker spänningen från 6,65V till 0V. Men när zonerna 3 och 4 utlöses sjunker spänningen från 7,92V till 4,30V.

Mäter 12V strömförsörjning

Vi kommer att använda 12V DC -terminalen från larmkontrollboxen för att driva vårt projekt. Vi måste mäta spänningen från 12V DC -matningen på larmet. Även om det redan står 12V, måste vi veta en mer exakt avläsning. I mitt fall läser den faktiskt 13.15V. Skriv ner detta, du kommer att behöva detta värde i nästa steg.

Varför mäter vi spänning?

Anledningen till att vi behöver mäta spänning för varje PIR är på grund av kretsen vi ska skapa. Vi kommer att använda ett LM339 quad differential-jämförelsechip (eller quad op-amp-komparator) som den elektriska kärnkomponenten för detta projekt. LM339 har 4 oberoende spänningskomparatorer (4 kanaler) där varje kanal tar 2 x ingångsspänningar (en inverterande (-) och en icke-inverterande (+) ingång, se diagram) Om spänningen för den inverterande ingångsspänningen ska sjunka lägre än den icke-inverterande spänningen, då kommer dess relaterade utgång att dras till marken. På samma sätt, om den icke-inverterande ingångsspänningen sjunker lägre än den inverterande ingången, dras utgången upp till Vcc. Bekvämt, i mitt hus har jag 4 x larm PIR/zoner - därför kommer varje zon att kopplas upp till varje kanal på komparatorn. Om du har mer än 4 x PIR behöver du en komparator med fler kanaler eller en annan LM339!

Obs: LM339 förbrukar ström i nano-ampere, så det påverkar inte EOL-motståndet i det befintliga larmsystemet.

Om det här är förvirrande, fortsätt till nästa steg ändå, det kommer att bli mer meningsfullt när vi kopplar upp det!

Steg 3: Skapa en spänningsdelare

Image
Image

Vad är en spänningsdelare?

En spänningsdelare är en krets med 2 x motstånd (eller mer) i serie. Vi tillhandahåller spänning i (Vin) till det första motståndet (R1) Det andra benet på R1 ansluter till det första benet i det andra motståndet (R2), och den andra änden av R2 ansluts till GND. Vi tar sedan en utspänning (Vout) från anslutningen mellan R1 och R2. Den spänningen kommer att bli vår referensspänning för LM339. För mer information om hur spänningsdelare fungerar, se Adohms youtube -video

(Obs! Motstånd har inte polaritet, så de kan kopplas på båda hållen)

Beräknar vår referensspänning

Om vi antar att spänningen sjunker när din PIR utlöses (detta borde vara fallet för de flesta larm) är det vi försöker uppnå att få en spänningsavläsning som är ungefär halvvägs mellan vår lägsta tomgångsspänning och vår högsta utlösta spänning, detta blir vår referensspänning.

Tar mitt larm som exempel …

Zonens tomgångsspänningar var Z1 = 6,65V, Z2 = 6,65V, Z3 = 7,92V, Z4 = 7,92V. Den lägsta tomgångsspänningen är därför 6,65V

Zonspänningarna var: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. Den högsta utlösta spänningen är därför 4,30V

Så vi måste välja ett tal halvvägs mellan 4,30V och 6,65V (behöver inte vara exakt, bara ungefär) I mitt fall måste min referensspänning vara runt 5,46V. Obs! Om den lägsta tomgång och högsta utlösta spänningen ligger mycket nära varandra på grund av att flera zoner orsakar en rad olika spänningar kan du behöva skapa 2 eller fler spänningsdelare.

Beräknar våra motståndsvärden för spänningsdelaren

Nu har vi en referensspänning, vi måste beräkna vilken storlek motstånd vi behöver för att skapa en spänningsdelare som ger vår referensspänning. Vi kommer att använda 12V likspänningskälla (Vs) från larmet. Men enligt föregående steg när vi mätte 12V DC -matningen fick vi faktiskt 13,15V. Vi måste beräkna spänningsdelaren med detta värde som källa.

Beräkna Vout med ohms lag …

Vout = Vs x R2 / (R1 + R2)

… eller använd en spänningsdelare på nätet:-)

Du måste experimentera med motståndsvärdena tills du når önskad effekt. I mitt fall fungerade det med R1 = 6,8k ohm och R2 = 4,7K ohm, beräknat i lång form enligt följande:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805 /11, 500

Vout = 5,37V

Steg 4: Anslut LM339

Anslutning av Wemos D1 Mini
Anslutning av Wemos D1 Mini

Spänningsdelare till LM339 inverterande ingångar

Som diskuterats tidigare angående LM339 -komparatorn kommer det att ta 2 x ingångar. Den ena kommer att vara en spänning från varje PIR till varje kanals icke-inverterande (+) terminal, den andra är vår referensspänning till vår inverterande (-) terminal. Referensspänningen måste mata alla fyra komparatorinverteringsingångar. Stäng av ditt larmsystem innan du utför dessa steg.

  • Dra en kabel från 12V DC -blocket på larmsystemet till + -skenan på din brödbräda *
  • Dra en kabel från GND -blocket på larmsystemet till - skenan på din brödbräda **
  • Installera LM339 -komparatorn i mitten av brödbrädan (hacket anger närmast stift 1)
  • Installera de 2 x motstånden för att skapa en spänningsdelare och tråd för uppdelad spänning
  • Dra ledningar från "spänningsdelad" Vout till varje LM339 inverterande terminal

* TIPS: använd en krokodilklämma om strömmen är möjlig, eftersom det gör det lättare att tillhandahålla PÅ/AV -ström till ditt projekt ** VIKTIGT! En MOSFET kan krävas OM du driver Wemos från larmpanelen! I mitt fall får LM339, Wemos och Alarm alla ström från samma källa (dvs: själva larmsystemet) Detta gör att jag kan slå på strömmen till allt med en enda strömanslutning. Som standard definieras dock GPIO -stiften på Wemos som "INPUT" -pinnar - vilket betyder att de tar vilken spänning som helst som kastas på dem och förlitar sig på den källan för att ge korrekta spänningsnivåer (min/max -nivåer) så att Wemos vann ' t kraschar eller bränner ut. I mitt fall får larmsystemet sin ström och startar uppstartssekvensen väldigt snabbt - så snabbt faktiskt att det gör detta innan Wemos kan starta upp och deklarera GPIO -stiften som "INPUT_PULLUP" (spänningen dras upp internt i chip). Detta betyder inte att spänningsskillnaderna skulle få Wemos att krascha när hela systemet fick ström. Den enda vägen runt det skulle vara att stänga av och sätta på Wemos manuellt. För att lösa detta läggs en MOSFET till och fungerar som en "logisk switch" för att slå på LM339. Detta gör det möjligt för Wemos att starta upp, ställa in dess 4 x komparator GPIO -stift som "INPUT_PULLUP's", fördröja några sekunder och Därefter (via en annan GPIO -pin D5 definierad som en OUTPUT) skicka "HIGH" -signal via GPIO -pin D5 till MOSFET, som logiskt slår på LM339. Jag skulle rekommendera att koppla upp som ovan, men OM du upptäcker att Wemos kraschar som jag gjorde, måste du inkludera MOSFET med ett 1k ohm neddragningsmotstånd. För mer information om hur du gör detta, se slutet av denna instruerbara.

Larmzoner till LM339 icke-inverterande ingångar

Vi måste nu köra ledningar från varje zon på larmkontrollpanelen till LM339 -ingångarna. Med larmsystemet fortfarande avstängt matar en tråd till varje icke-inverterande (+) ingång på LM339-komparatorn för varje zon. Till exempel i mitt system:

  • Tråd från Z1 går till LM339 ingång 1+
  • Tråd från Z2 går till LM339 ingång 2+
  • Tråd från Z3 går till LM339 ingång 3+
  • Tråd från Z4 går till LM339 ingång 4+

Se pin-out på LM339 under steg 3 om du är en påminnelse (den är färgkodad med panelen). När det är klart ska din brödbräda likna bilden som visas i det här steget.

Slå på larmsystemet och mät spänningen som kommer ut ur spänningsdelaren för att säkerställa att det är lika med din referensspänning som beräknat tidigare.

Steg 5: Anslut Wemos D1 Mini

Anslutning till Wemos D1 mini

Nu har vi tagit hand om alla LM339 -ingångar, vi behöver nu koppla in Wemos D1 mini. Varje LM339 -utgångsstift går till en Wemos GPIO (general input/output) -stift som vi kommer att beteckna via kod som en ingångspullupinne. Wemos tar upp till 5V maximalt som sin Vcc (ingångskälla) spänning (även om den reglerar detta internt till 3,3V) Vi kommer att använda en mycket vanlig LM7805 spänningsregulator (EDIT: se nedan) för att släppa 12V -skenan på brödbrädan till 5V för att driva Wemos. Databladet för LM7805 indikerar att vi behöver en kondensator som är inkopplad på varje sida av regulatorn för att jämna ut strömmen, som visas på panelen. Kondensatorns längre ben är positivt (+) så se till att detta är anslutet på rätt sätt.

Spänningsregulatorn tar spänning in (vänster stift), jord (mittstift) och spänning ut (stift på höger sida) Dubbelkontrollera uttaget om din spänningsregulator varierar från LM7805.

(EDIT: Jag fann att förstärkarna som kom från larmpanelen var för höga för att LM7805 skulle hantera. Detta orsakade mycket värme i den lilla kylflänsen på LM7805 och fick den att gå sönder och i sin tur fick Wemos att stanna Jag bytte ut LM7805 och kondensatorer med en DC-DC buck-omvandlare istället och har inte haft några problem sedan. Dessa är mycket enkla att koppla upp. Anslut bara ingångsspänningen från larmet, anslut till en multimeter först och använd potentiometerskruven och justera tills utspänningen är ~ 5V)

GPIO -ingångar

För detta projekt använder vi följande stift:

  • zon Z1 => stift D1
  • zon Z2 => stift D2
  • zon Z3 => stift D3
  • zon Z4 => stift D5

Koppla ut utgångarna från LM339 till de relaterade GPIO -stiften på Wemos -brädet, enligt brödbrädbilden som visas i detta steg. Återigen har jag färgkodat ingångarna och matchande utgångarna, för att göra det lättare att se vad som hänvisar till vad. Varje GPIO -stift i Arduino definieras som en 'INPUT_PULLUP', vilket innebär att de dras upp till 3,3V vid normal användning (IDLE) och LM339 drar ner dem till marken om PIR skulle utlösas. Koden upptäcker ändringen HÖG till LÅG och skickar ett meddelande trådlöst till din hemautomatiseringsprogramvara. Om du har problem med att detta fungerar, är det möjligt att du har dina inverterande vs icke-inverterande ingångar på fel sätt (om spänningen från din PIR går hög när den utlöses, som händer med de flesta hobby PIR: erna, så vill du ha anslutningarna till tvärtom)

Arduino IDE

Ta bort Wemos från brödbrädan, vi måste nu ladda upp kod till den (alternativ länk här) Jag kommer inte att gå in på detaljer om hur man gör detta, eftersom det finns gott om artiklar på webben om att ladda upp kod till Wemos eller annan ESP8266 typ brädor. Anslut din USB -kabel till Wemos -kortet och till din PC och starta Arduino IDE. Ladda ner koden och öppna den i ditt projekt. Du måste se till att rätt kort är installerat och laddat för ditt projekt samt att rätt COM -port har valts (Verktyg, Port). Du behöver också lämpliga bibliotek installerade (PubSubClient, ESP8266Wifi) För att få Wemos -kortet inkluderat i din skiss, se den här artikeln.

Du måste ändra följande kodrader och ersätta med ditt eget SSID och lösenord för din trådlösa anslutning. Ändra också IP -adressen för att peka på din egen MQTT -mäklare.

// Wifi

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

När den har ändrats, verifiera din kod och ladda upp den till Wemos -kortet via en USB -kabel.

Anmärkningar:

  • Om du använder olika GPIO -portar måste du justera koden. Om du använder fler eller färre zoner än jag har måste du också justera koden och TOTAL_ZONES = 4; konstant att passa.
  • Vid uppstart av mitt larmsystem skulle larmsystemet göra ett strömtest till alla 4 x PIR: er som drog alla anslutna GPIO till marken, vilket fick Wemos att tro att zonerna utlöstes. Koden ignorerar att skicka MQTT -meddelanden om den ser alla 4 x zoner aktiva samtidigt, eftersom den antar att larmsystemet startar.

Alternativ nedladdningslänk till kod HÄR

Steg 6: Testning och OpenHAB -konfiguration

Testning och OpenHAB -konfiguration
Testning och OpenHAB -konfiguration

MQTT -testning

MQTT är ett "prenumerera / publicera" meddelandesystem. En eller flera enheter kan prata med en "MQTT -mäklare" och "prenumerera" på ett visst ämne. Alla inkommande meddelanden från någon annan enhet som "publiceras" till samma ämne, kommer att föras ut av mäklaren till alla enheter som har prenumererat på den. Det är ett extremt lätt och enkelt att använda protokoll och perfekt som ett enkelt utlösande system som det här. För testning kan du visa inkommande MQTT -meddelanden från Wemos till din MQTT -mäklare genom att köra följande kommando på din Mosquitto -server (Mosquitto är en av många tillgängliga MQTT Broker -programvaror). Detta kommando prenumererar på inkommande keepalive -meddelanden:

mosquitto_sub -v -t openhab/alarm/status

Du bör se inkommande meddelanden som kommer in från Wemos var 30: e sekund eller så med siffran "1" (vilket betyder "jag lever") Om du ser konstanta "0: or" (eller inget svar) så finns det ingen kommunikation. När du väl sett siffran 1 kommer in betyder det att Wemos kommunicerar med MQTT -mäklaren (sök "MQTT Last Will and Testament" för mer information om hur det fungerar, eller se det här riktigt bra blogginlägget)

När du har bevisat att kommunikationen fungerar, kan vi testa att ett zontillstånd rapporteras via MQTT. Prenumerera på följande ämne (# är ett jokertecken)

mosquitto_sub -v -t openhab/alarm/#

De vanliga statusmeddelandena ska komma in, liksom IP -adressen för Wemos själv. Gå framför en PIR, och du bör också se att zoninformationen kommer in som indikerar att den är ÖPPEN, sedan någon sekund senare att den är STÄNGD, liknande följande:

openhab/alarm/status 1

openhab/alarm/zone1 ÖPPET

openhab/alarm/zone1 STÄNGD

När det här fungerar kan vi konfigurera OpenHAB för att få detta snyggt representerat i GUI.

OpenHAB -konfiguration

Följande ändringar krävs för OpenHAB:

'alarm.map' transformeringsfil: (valfritt, för testning)

STÄNGD = IdleOPEN = TriggeredNULL = Okänd- = Okänd

'status.map' omvandlingsfil:

0 = misslyckades

1 = Online -= NER! NULL = okänd

"objekt" -fil:

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" First Hall PIR [%1 $ ta %1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 Ange [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Sovrum PIR [%1 $ ta%1 $ tr] "Antal 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' -fil (inklusive rrd4j -diagram):

Textobjekt = alarmZone1Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone1_Chart_Period label = "Period" mappings = [0 = "Time", 1 = "Day", 2 = "Week"] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Oinitialiserad] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Textobjekt = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone2_Chart_Period label = "Period" mappings = [0 = "Time", 1 = "Day", 2 = "Week"] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Oinitialiserad] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Textobjekt = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" mappningar = [0 = "Hour", 1 = "Day", 2 = "Week"] Bildurl = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Oinitialiserad] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Text 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 "] Image url =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Oinitialiserad] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Bild url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // VALFRITT men praktiskt för diagnos av status och IP -adress ss Textobjekt = alarmMonitorState Textobjekt = alarmMonitorIPAddress

"regler" -fil:

regel "Larmzon 1 tillståndsändring"

när artikel alarmZone1State ändrades till OPEN sedan postUpdate (alarmZone1Trigger, ny DateTimeType ()) alarmZone1State.state = STÄNGT slut

regel "Larmzon 2 tillståndsändring"

när artikel alarmZone2State ändrades till OPEN sedan postUpdate (alarmZone2Trigger, ny DateTimeType ()) alarmZone2State.state = STÄNGT slut

regel "Larmzon 3 statusändring"

när artikel alarmZone3State ändrades till OPEN sedan postUpdate (alarmZone3Trigger, ny DateTimeType ()) alarmZone3State.state = STÄNGT slut

regel "Alarm Zone 4 state change"

när artikel alarmZone4State ändrades till OPEN sedan postUpdate (alarmZone4Trigger, ny DateTimeType ()) alarmZone4State.state = STÄNGT slut

Du kan behöva ändra ovanstående OpenHAB -konfiguration något för att passa din egen installation.

Om du har några problem med att PIRs utlöses, börja sedan från början och mät spänningar för varje del av kretsen. När du är nöjd med det, kontrollera dina ledningar, se till att det finns en gemensam grund, kontrollera meddelanden på Wemos via en seriell felsökningskonsol, kontrollera MQTT -kommunikation och kontrollera syntaxen för din transform, objekt och webbplatskartfiler.

Lycka till!

Rekommenderad: