Innholdsfortegnelse:
- Trinn 1: Alarmsystemets kontrollboks
- Trinn 2: Måling av alarmsonespenning
- Trinn 3: Opprette en spenningsdeler
- Trinn 4: Koble opp LM339
- Trinn 5: Tilkobling av Wemos D1 Mini
- Trinn 6: Testing og OpenHAB -konfigurasjon
Video: Alarm PIR til WiFi (og hjemmeautomatisering): 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Oversikt
Denne instruksen gir deg muligheten til å se den siste datoen/klokkeslettet (og eventuelt en historikk over tider) for da husalarmens PIR -er (passive infrarøde sensorer) ble utløst i din hjemmeautomatiseringsprogramvare. I dette prosjektet vil jeg diskutere hvordan du bruker det med OpenHAB (gratis hjemmeautomatiseringsprogramvare, som jeg personlig bruker), selv om det vil fungere med annen hjemmeautomatiseringsprogramvare eller applikasjon som støtter MQTT (også beskrevet senere i denne artikkelen). Denne instruksjonen vil lede deg gjennom de nødvendige trinnene for hvordan du kobler til et kretskort og Wemos D1 mini (et IOT -kort som bruker en ESP8266 -brikke) som tapper inn i alarmsonene i alarmkontrollboksen slik at når en sone (som inneholder en eller flere PIR -er) utløses, sender Wemos en melding trådløst med MQTT -protokollen til hjemmeautomatiseringsprogramvaren, som igjen viser siste dato/klokkeslett for den utløseren. Arduino -kode for å programmere Wemos er også tilgjengelig.
Introduksjon
Bildet ovenfor er det jeg ser via en av skjermene på OpenHAB -appen på min iPhone. Dato/tid -teksten er fargekodet for å gi en raskere fremstilling av når PIR ble utløst - den vil vise rødt (utløst i løpet av det siste 1 minuttet), oransje (utløst i løpet av de siste 5 minuttene), grønt (utløst i løpet av de siste 30 minuttene), blå (utløst i løpet av den siste timen) eller på annen måte, svart. Hvis du klikker på dato/klokkeslett, vises en historisk visning av PIR -utløsere, hvor 1 betyr utløst, og 0 er inaktiv. Det er mange bruksområder for dette, for eksempel kan det supplere hjemmetilstedeværelsesløsningen din, det kan oppdage bevegelse hvis du er borte og via OpenHAB -regler, sende varsler til telefonen din, du kan bruke den som jeg gjør for å se om barna mine er stå opp midt på natten, utløst av et PIR som bor utenfor soverommene deres!
OpenHAB er ganske enkelt hjemmeautomatiseringsprogramvaren jeg bruker, det er mange andre - og hvis de støtter MQTT, kan du enkelt tilpasse dette prosjektet til programvaren du bruker.
Antagelser
Denne instruksen forutsetter at du allerede har (eller vil konfigurere):
- Tydeligvis et hjemmealarmsystem med PIR (passive infrarøde sensorer) og at du har tilgang til alarmkontrollboksen for å koble til de nødvendige ledningene
- OpenHAB (gratis åpen kildekode hjemmeautomatiseringsprogramvare) kjører, selv om den som beskrevet bør fungere med hvilken som helst hjemmeautomatiseringsprogramvare som kan inneholde en MQTT -binding. Alternativt kan du endre koden selv for å passe dine egne behov.
- Mosquitto MQTT (eller lignende) megler installert og binding konfigurert med OpenHAB (MQTT er en meldings abonnement/publiser type protokoll som er lett og flott for kommunikasjon mellom enheter)
Hvis du ikke kjører OpenHAB og en MQTT -megler, kan du se denne utmerkede artikkelen på MakeUseOf -nettstedet
Hva trenger jeg?
For å lage den trådløse kontrolleren må du skaffe følgende deler:
- Wemos D1 mini V2 (har innebygd trådløs ESP8266-chip)
- En LM339 -komparator (dette vil sjekke PIR inaktiv vs utløst)
- En 5V DC strømkilde for Wemos (OR, en DC-DC buck converter. Merk: En LM7805 spenningsregulator fungerer kanskje ikke for denne applikasjonen som diskutert senere i dette prosjektet)
- To motstander for en spenningsdeler (størrelsen vil avhenge av alarmspenningene dine, diskutert senere i prosjektet)
- En 1K ohm motstand for å fungere som en nedtrekksmotstand for å kontrollere LM339 -effekten
- Én 2N7000 (eller lignende) MOSFET for logisk å slå på LM339 (muligens valgfritt, diskutert senere i prosjektet)
- Et brødbrett i passende størrelse for kretsoppsett og testing
- En haug med brødbrettledninger for å koble alt sammen
- Nødvendig verktøy: sidekutter, enkeltkjernetråd
- En DC-multimeter (obligatorisk!)
Trinn 1: Alarmsystemets kontrollboks
Først noen advarsler og ansvarsfraskrivelser
Personlig har jeg et Bosch alarmsystem. Jeg anbefaler på det sterkeste at du laster ned den relevante håndboken for ditt spesielle alarmsystem og gjør deg kjent med det før du starter, da du må slå av alarmsystemet for å koble sonene. Jeg vil også anbefale deg å lese denne artikkelen i sin helhet før du begynner!
Nedenfor er en liste over noen ting du bør vite før du starter - sørg for at du leser og forstår hver av dem før du fortsetter! Jeg tar ikke noe ansvar hvis du ødelegger alarmsystemet ditt og/eller må betale installatøren for å fikse det. Hvis du leser og forstår følgende og tar de nødvendige forholdsreglene, bør du ha det bra:
1. Alarmsystemet mitt hadde et reservebatteri inne i esken og hadde også en sabotasjebryter på innsiden av lokket (som gir tilgang til alarmsystemkortet), slik at alarmen slås av eksternt når frontpanelet på kontrollen fjernes boksen utløste alarmen! For å komme rundt dette mens jeg jobbet på prosjektet, omgået jeg sabotasjebeskyttelsen ved å koble fra og deretter kortslutte sabotasjebryteren (den tykke røde ledningen som vist på bildet ovenfor)
2. Når alarmsystemet ble slått på igjen, begynte alarmpanelet etter ca. ~ 12 timer å pipe med feilkoder. Etter å ha fastslått feilkodene via håndboken, fant jeg ut at den advarte meg om at:
- Dato/klokkeslett var ikke angitt (jeg trengte hovedkoden og nøkkelsekvensen fra håndboken for å konfigurere på nytt)
- At reservebatteriet ikke var tilkoblet (enkel løsning, jeg hadde bare glemt å koble batteriet til igjen)
3. I alarmen min er det 4 x soneforbindelsesblokker (merket Z1 -Z4) som PIR -ene kan koble til på hovedalarmkortet, men alarmsystemet mitt har faktisk 8 soner. Hver sonetilkoblingsblokk kan faktisk kjøre 2 x soner hver (Z1 gjør Z1 og Z5, Z2 gjør Z2 og Z6 og så videre). Alarmsystemet har innebygd sabotasjebeskyttelse for å stoppe noen å si, åpne lokket til alarmsystemet som nevnt ovenfor, eller kutte ledningene til et PIR. Den skiller mellom hver sone -manipulering via EOL (slutten av linjen) motstander. Dette er motstander av spesifikk størrelse som ligger ved "enden av linjen" - med andre ord, inne i PIR (eller kontrollboks sabotasjebryter, eller sirenekasse eller det som er koblet til den sonen) Som nevnt brukes disse motstandene som "sabotasje" beskyttelse ' - teknisk sett, hvis noen kutter kablene til et PIR - fordi alarmsystemet forventer å se en viss motstand fra den PIR -en, så må motstanden endres, det antar at noen har tuklet med systemet og vil utløse alarmen.
For eksempel:
På alarmen min har sone "Z4" 2 ledninger i den, en går til PIR i gangen min og en går til alarmbryterens sabotasjebryter. Inne i gangen PIR har den en 3300 ohm motstand. Den andre ledningen som går til kontrollboksen sabotasjebryter, har en 6800 ohm motstand som er koblet i serie. Slik skiller alarmsystemet (logisk) mellom "Z4" og "Z8" tamper. På samme måte har sone "Z3" en PIR (med 3300 ohm motstand i den) og også sirenen sabotasjebryter (med 6800 ohm motstand i den) som utgjør "Z7". Alarminstallatøren ville ha forhåndskonfigurert alarmsystemet slik at det vet hvilken enhet som er koblet til hver sone (og endret størrelsen på EOL-motstanden for å passe, fordi alarmsystemet er programmert til å vite hvilken størrelse de forskjellige EOL-motstandene er. Under ingen omstendigheter bør du endre verdien av disse motstandene!)
Så basert på det ovennevnte, fordi hver sone kan ha flere enheter festet også (med forskjellige motstandsverdier), og huske formelen V = IR (spenning = ampere x motstand), kan det også bety at hver sone kan ha forskjellige spenninger. Som leder oss til neste trinn, og måler hver soner IDLE vs TRIGGERED spenning …
Trinn 2: Måling av alarmsonespenning
Når du har fått tilgang til hovedkortet på alarmsystemet ditt (og omgått sabotasjebryteren hvis du har en, i henhold til forrige trinn), slår du alarmsystemet på igjen. Vi må nå måle hver sonespenning når den er i tomgang (ingen bevegelse foran PIR) vs TRIGGERED (PIR har oppdaget bevegelse) Ta en penn og et papir, slik at du kan skrive ned spenningsavlesningene.
ADVARSEL: Hoveddelen av alarmsystemet ditt er mest sannsynlig på 12V DC, men det vil ha sin første strømtilførsel på 220V (eller 110V) AC, med en transformator som konverterer strøm fra AC til DC. LES manualen og ta ekstra forholdsregler for å sikre at du IKKE måler noen AC -terminaler !!! I henhold til skjermbildet av alarmsystemet mitt på denne siden, kan du se at selve bunnen av bildet er vekselstrøm, transformert til 12V DC. Vi måler 12V DC i de røde boksene som er markert. Berør aldri vekselstrømmen. Vær ekstrem forsiktig!
Måling av PIR spenning
Jeg har 4 x PIR koblet til Z1 til Z4. Mål hver av sonene dine som følger.
- Identifiser først GND -terminalen og soneterminalene på alarmpanelet. Jeg har fremhevet disse på bildet som vises fra manualen til min Bosch -alarm.
- Ta tak i multimeteret ditt og sett spenningsmåling til 20V DC. Koble den svarte (COM) kabelen fra multimeteret til GND -terminalen på alarmen. Plasser den røde (+) ledningen fra multimeteret ditt på første sone - i mitt tilfelle merket "Z1". Skriv ned spenningsavlesningen. Utfør de samme trinnene for de resterende sonene. Spenningsmålingene mine er som følger:
- Z1 = 6,65V
- Z2 = 6,65V
- Z3 = 7,92V
- Z4 = 7,92V
I henhold til det ovennevnte har mine to første soner bare PIR -er festet også. De to sistnevnte sonene har både PIR og sabotasjebeskyttelse koblet til seg (Z3 kontrollboks sabotasje, Z4 siren sabotasje) Legg merke til spenningsforskjellene.
3. Du vil sannsynligvis trenge 2 personer for dette neste trinnet. Du må også vite hvilken PIR som er i hvilken sone. Gå tilbake og les spenningen på den første sonen. Få noen i huset ditt til å gå foran PIR, spenningen skal synke. Legg merke til den nye spenningsavlesningen. I mitt tilfelle leses spenningene som følger når PIR -er utløses:
- Z1 = 0V
- Z2 = 0V
- Z3 = 4,30V
- Z4 = 4,30V
I henhold til ovenstående kan jeg se at når sone 1 og 2 utløses, faller spenningen fra 6,65V til 0V. Når sone 3 og 4 utløses, synker spenningen imidlertid fra 7,92V til 4,30V.
Måler 12V strømforsyning
Vi bruker 12V DC -terminalen fra alarmkontrollboksen til å drive prosjektet vårt. Vi må måle spenningen fra 12V likestrømsmating på alarmen. Selv om den allerede angir 12V, må vi vite en mer nøyaktig avlesning. I mitt tilfelle leser den faktisk 13.15V. Skriv ned dette, du trenger denne verdien i neste trinn.
Hvorfor måler vi spenning?
Grunnen til at vi trenger å måle spenning for hver PIR er på grunn av kretsen vi skal lage. Vi bruker en LM339 quad differensial-komparator-brikke (eller quad op-amp-komparator) som den elektriske kjernekomponenten for dette prosjektet. LM339 har 4 uavhengige spenningskomparatorer (4 kanaler) hvor hver kanal tar 2 x inngangsspenninger (en inverterende (-) og en ikke-inverterende (+) inngang, se diagram) Hvis spenningen til den inverterende inngangsspenningen skulle falle lavere enn den ikke-inverterende spenningen, så vil dens relaterte utgang trekkes til bakken. På samme måte, hvis den ikke-inverterende inngangsspenningen faller lavere enn den inverterende inngangen, trekkes utgangen opp til Vcc. Praktisk nok, i huset mitt har jeg 4 x alarm PIR/soner - derfor blir hver sone koblet til hver kanal på komparatoren. Hvis du har mer enn 4 x PIRer, trenger du en komparator med flere kanaler, eller en annen LM339!
Merk: LM339 bruker strøm i nano-ampere, så det påvirker ikke EOL-motstanden til det eksisterende alarmsystemet.
Hvis dette er forvirrende, fortsett til neste trinn uansett, det begynner å bli mer fornuftig når vi kobler det til!
Trinn 3: Opprette en spenningsdeler
Hva er en spenningsdeler?
En spenningsdeler er en krets med 2 x motstander (eller flere) i serie. Vi gir spenning i (Vin) til den første motstanden (R1) Det andre benet til R1 kobles til det første benet i den andre motstanden (R2), og den andre enden av R2 kobles til GND. Vi tar deretter en utgangsspenning (Vout) fra forbindelsen mellom R1 og R2. Denne spenningen blir vår referansespenning for LM339. For mer informasjon om hvordan spenningsdelere fungerer, se Adohms youtube -video
(Merk: motstander har ikke polaritet, så de kan kobles til begge veier)
Beregner referansespenningen vår
Forutsatt at spenningen synker når PIR utløses (dette bør være tilfelle for de fleste alarmer), så er det vi prøver å oppnå, å få en spenningsavlesning som er omtrent halvveis mellom vår laveste inaktiv spenning og vår høyeste utløste spenning, dette blir referansespenningen vår.
Tar alarmen min som et eksempel …
Sone tomgangsspenninger var Z1 = 6,65V, Z2 = 6,65V, Z3 = 7,92V, Z4 = 7,92V. Den laveste tomgangsspenningen er derfor 6,65V
Soneutløste spenninger var: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. Den høyeste utløste spenningen er derfor 4,30V
Så vi må velge et tall halvveis mellom 4,30V og 6,65V (trenger ikke å være nøyaktig, bare omtrent) I mitt tilfelle må referansespenningen være rundt 5,46V. Merk: Hvis den laveste tomgang og høyeste utløste spenningen er veldig nær hverandre på grunn av flere soner som forårsaker en rekke forskjellige spenninger, må du kanskje opprette 2 eller flere spenningsdelere.
Beregner våre motstandsverdier for spenningsdeleren
Nå har vi en referansespenning, vi må beregne hvilken størrelse motstander vi trenger for å lage en spenningsdeler som vil gi vår referansespenning. Vi bruker 12V DC -spenningskilden (Vs) fra alarmen. Imidlertid, i henhold til forrige trinn da vi målte 12V DC -matingen, fikk vi faktisk 13,15V. Vi må beregne spenningsdeleren ved å bruke denne verdien som kilde.
Beregn Vout ved hjelp av ohm -loven …
Vout = Vs x R2 / (R1 + R2)
… eller bruk en online spenningsdeler kalkulator:-)
Du må eksperimentere med motstandsverdiene til du oppnår ønsket utgang. I mitt tilfelle fungerte det med R1 = 6,8k ohm og R2 = 4,7K ohm, beregnet i lang form som følger:
Vout = Vs x R2 / (R1 + R2)
Vout = 13,15 x 4700 / (6800 + 4700)
Vout = 61, 805 /11, 500
Vout = 5,37V
Trinn 4: Koble opp LM339
Spenningsdeler til LM339 inverterende innganger
Som diskutert tidligere angående LM339 -komparatoren, vil den ta 2 x innganger. Den ene vil være en spenning fra hver PIR til hver kanals ikke-inverterende (+) terminal, den andre vil være vår referansespenning til vår inverterende (-) terminal. Referansespenningen må mate alle 4 inverterende innganger for komparatoren. Slå av alarmsystemet før du utfører disse trinnene.
- Kjør en ledning fra 12V DC -blokken på alarmsystemet til + skinnen på brødbrettet *
- Kjør en ledning fra GND -blokken på alarmsystemet til - skinnen på brødbrettet **
- Installer LM339 -komparatoren midt på brødbrettet (hakket indikerer nærmest pin 1)
- Installer de 2 x motstandene for å lage en spenningsdelerkrets og ledning for delt spenning ut
- Kjør ledninger fra "spenningsdelte" Vout til hver LM339 inverterterminal
* TIPS: bruk en alligatorklemme for strømmen hvis det er mulig, da dette gjør det lettere å gi PÅ/AV -strøm til prosjektet ** VIKTIG! En MOSFET kan være nødvendig hvis du driver Wemos fra alarmpanelet! I mitt tilfelle mottar LM339, Wemos og Alarm alle strøm fra samme kilde (dvs. selve alarmsystemet) Dette lar meg slå på strømmen til alt med en enkelt strømtilkobling. Imidlertid er GPIO -pinnene på Wemos som standard definert som "INPUT" -pinner - noe som betyr at de tar hvilken som helst spenning som kastes på dem og stoler på at kilden gir riktige spenningsnivåer (min/maks -nivåer) slik at Wemos vant ' ikke krasje eller brenne ut. I mitt tilfelle får alarmsystemet strøm og begynner å starte opp sekvensen veldig raskt - så fort at det gjør dette før Wemos kan starte opp og erklære GPIO -pinnene som "INPUT_PULLUP" (spenningen trekkes opp internt i chip). Dette betyr ikke at spenningsforskjellene vil føre til at Wemos krasjer når hele systemet får strøm. Den eneste veien rundt det ville være å slå av og på Wemos manuelt. For å løse dette, blir en MOSFET lagt til og fungerer som en "logisk bryter" for å slå på LM339. Dette gjør at Wemos kan starte opp, sette sine 4 x komparator GPIO -pinner som "INPUT_PULLUP's", forsinke noen sekunder og så (via en annen GPIO pin D5 definert som en OUTPUT) sende "HIGH" signal via GPIO pin D5 til MOSFET, som logisk slår på LM339. Jeg vil anbefale å koble til som ovenfor, men HVIS du finner ut at Wemos krasjer som jeg gjorde, må du inkludere MOSFET med en nedtrekksmotstand på 1 k ohm. For mer informasjon om hvordan du gjør dette, se slutten av denne instruksjonsboken.
Alarmsoner til LM339 ikke-inverterende innganger
Vi må nå koble ledninger fra hver sone på alarmkontrollpanelet til LM339 -komparatorinngangene. Med alarmsystemet fremdeles slått av, mates en ledning for hver sone til hver ikke-inverterende (+) inngang på LM339-komparatoren. For eksempel i systemet mitt:
- Ledning fra Z1 går til LM339 inngang 1+
- Ledning fra Z2 går til LM339 inngang 2+
- Ledning fra Z3 går til LM339 inngang 3+
- Wire fra Z4 går til LM339 input 4+
Se pin-out av LM339 under trinn 3 hvis du er en påminnelse (den er fargekodet med breadboard-bildet). Når det er gjort, skal brødbrettet ditt se ut som bildet som ble vist i dette trinnet.
Slå på alarmsystemet og måle spenningen som kommer ut av spenningsdeleren for å sikre at det er lik referansespenningen som beregnet tidligere.
Trinn 5: Tilkobling av Wemos D1 Mini
Kabling av Wemos D1 mini
Nå har vi tatt vare på alle LM339 -inngangene, vi må nå koble til Wemos D1 mini. Hver LM339 utgangspinne går til en Wemos GPIO (generell inngang/utgang) pinne som vi vil angi via kode som en inngangspullupinne. Wemos tar opptil 5V maks som sin Vcc (inngangskilde) spenning (selv om den regulerer dette internt til 3,3V) Vi vil bruke en veldig vanlig LM7805 spenningsregulator (EDIT: se nedenfor) for å slippe 12V -skinnen på brødbrettet ned til 5V for å drive Wemos. Databladet for LM7805 indikerer at vi trenger en kondensator koblet til på hver side av regulatoren for å jevne ut strømmen, som vist på brødbrettbildet. Kondensatorens lengre ben er positivt (+), så sørg for at dette er koblet til på riktig måte.
Spenningsregulatoren tar spenning inn (venstre pinne), jord (midtre pinne) og spenning ut (pinne på høyre side) Dobbeltsjekk pinnen hvis spenningsregulatoren varierer fra LM7805.
(EDIT: Jeg fant at forsterkerne som kom fra alarmpanelet var for høye for LM7805 til å håndtere. Dette forårsaket mye varme i den lille kjøleribben på LM7805 og forårsaket at den sviktet, og i sin tur forårsaket Wemos å stoppe Jeg byttet ut LM7805 og kondensatorene med en DC-DC buck converter i stedet og har ikke hatt noen problemer siden. Disse er veldig enkle å koble til. Bare koble inngangsspenningen fra alarmen, koble til et multimeter først og bruk potensiometerskruen og juster til utgangsspenningen er ~ 5V)
GPIO -inngangspinner
For dette prosjektet bruker vi følgende pins:
- sone Z1 => pinne D1
- sone Z2 => pinne D2
- sone Z3 => pinne D3
- sone Z4 => pinne D5
Koble utgangene fra LM339 til de relaterte GPIO -pinnene på Wemos -brettet, i henhold til brødbrettbildet som ble vist i dette trinnet. Igjen, jeg har fargekodet inngangene og matchende utgangene, for å gjøre det lettere å se hva som refererer til hva. Hver GPIO -pinne i Arduino er definert som en 'INPUT_PULLUP', noe som betyr at de vil bli trukket opp til 3,3V ved normal bruk (IDLE) og LM339 vil trekke dem ned til bakken hvis PIR skulle bli utløst. Koden oppdager endringen HIGH to LOW, og sender en melding trådløst til hjemmeautomatiseringsprogramvaren. Hvis du har problemer med at dette fungerer, er det mulig at du har inverterende vs ikke-inverterende innganger feil vei (hvis spenningen fra PIR-en din går høyt når den utløses, som det skjer med de fleste hobby-PIR-er, så vil du ha forbindelsene til motsatt)
Arduino IDE
Fjern Wemos fra brødbrettet, vi må nå laste opp kode til den (alternativ lenke her) Jeg vil ikke gå i detalj om hvordan du gjør dette, siden det er mange artikler på nettet om opplasting av kode til Wemos eller annen ESP8266 type brett. Koble USB -kabelen til Wemos -kortet og til PC -en og slå på Arduino IDE. Last ned koden og åpne den i prosjektet ditt. Du må sørge for at det korrekte kortet er installert og lastet for prosjektet ditt, så vel som den riktige COM -porten som er valgt (Verktøy, Port). Du trenger også de riktige bibliotekene installert (PubSubClient, ESP8266Wifi) For å få Wemos -kortet inkludert i skissen din, se denne artikkelen.
Du må endre følgende kodelinjer og erstatte med din egen SSID og passord for din trådløse tilkobling. Endre også IP -adressen for å peke til din egen MQTT -megler.
// 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 er endret, må du bekrefte koden og deretter laste den opp til Wemos -kortet via en USB -kabel.
Merknader:
- Hvis du bruker forskjellige GPIO -porter, må du justere koden. Hvis du bruker flere eller færre soner enn jeg har, må du også justere koden og TOTAL_ZONES = 4; konstant som passer.
- Ved oppstart av alarmsystemet mitt, ville alarmsystemet utføre en strømtest til alle 4 x PIR -er som trakk alle tilkoblede GPIO til bakken, noe som fikk Wemos til å tro at sonene ble utløst. Koden vil ignorere å sende MQTT -meldinger hvis den ser alle 4 x sonene aktive samtidig, ettersom den antar at alarmsystemet starter.
Alternativ nedlastingskobling til kode HER
Trinn 6: Testing og OpenHAB -konfigurasjon
MQTT -testing
MQTT er et "abonnér / publiser" meldingssystem. En eller flere enheter kan snakke med en "MQTT -megler" og "abonnere" på et bestemt emne. Alle innkommende meldinger fra en hvilken som helst annen enhet som er "publisert" til det samme emnet, blir presset ut av megleren til alle enheter som har abonnert på den. Det er en ekstremt lett og brukervennlig protokoll og perfekt som et enkelt utløsersystem som det her. For testing kan du se innkommende MQTT -meldinger fra Wemos til din MQTT -megler ved å kjøre følgende kommando på Mosquitto -serveren din (Mosquitto er en av mange MQTT Broker -programvare som er tilgjengelig). Denne kommandoen abonnerer på innkommende keepalive -meldinger:
mosquitto_sub -v -t openhab/alarm/status
Du bør se innkommende meldinger som kommer inn fra Wemos hvert 30. sekund eller så med tallet "1" (som betyr "Jeg lever") Hvis du ser konstante "0 -er" (eller ingen respons), er det ingen kommunikasjon. Når du ser tallet 1 komme inn, betyr det at Wemos kommuniserer med MQTT -megleren (søk "MQTT Last Will and Testament" for mer informasjon om hvordan dette fungerer, eller se denne virkelig gode bloggoppføringen)
Når du har bevist at kommunikasjonen er funksjonell, kan vi teste at en sonetilstand blir rapportert via MQTT. Abonner på følgende emne (# er et jokertegn)
mosquitto_sub -v -t openhab/alarm/#
De vanlige statusmeldingene bør komme inn, det samme bør IP -adressen til Wemos selv. Gå foran en PIR, og du bør også se soneinformasjonen komme inn som indikerer at den er ÅPEN, deretter et par sekunder senere, at den er STENGT, i likhet med følgende:
openhab/alarm/status 1
openhab/alarm/zone1 OPEN
openhab/alarm/zone1 STENGT
Når dette fungerer, kan vi konfigurere OpenHAB til å ha dette pent representert i GUI.
OpenHAB -konfigurasjon
Følgende endringer kreves for OpenHAB:
'alarm.map' transformeringsfil: (valgfritt, for testing)
CLOSED = IdleOPEN = TriggeredNULL = Ukjent- = Ukjent
'status.map' transformeringsfil:
0 = mislyktes
1 = Online -= NED! NULL = ukjent
'items' 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 Oppgi [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Soverom PIR [%1 $ ta%1 $ tr] "Antall 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 (inkludert rrd4j -graf):
Tekstelement = 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 = = Uinitialisert] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Tekstelement = 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"] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Uinitialisert] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Tekstelement = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" mappings = [0 = "Time", 1 = "Dag", 2 = "Uke"] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Uninitialized] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Tekst item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone4_Chart_Period label = " Periode "mappings = [0 =" Time ", 1 =" Day ", 2 =" Week "] Bilde url =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Uinitialisert] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Bilde url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // VALGFRITT, men praktisk for diagnostisering av status og IP -adresse ss Tekst element = alarmMonitorState Tekst element = alarmMonitorIPAddress
"regler" -fil:
regel "Alarm Zone 1 state change"
når element alarmZone1State endret til OPEN deretter postUpdate (alarmZone1Trigger, ny DateTimeType ()) alarmZone1State.state = STENGT slutt
regel "Alarm Zone 2 state change"
når element alarmZone2State endret til OPEN deretter postUpdate (alarmZone2Trigger, ny DateTimeType ()) alarmZone2State.state = STENGT slutt
regel "Alarm Zone 3 state change"
når element alarmZone3State endret til OPEN deretter postUpdate (alarmZone3Trigger, ny DateTimeType ()) alarmZone3State.state = STENGT slutt
regel "Alarm Zone 4 state change"
når element alarmZone4State endret til OPEN deretter postUpdate (alarmZone4Trigger, ny DateTimeType ()) alarmZone4State.state = STENGT slutt
Du må kanskje endre OpenHAB -konfigurasjonen ovenfor litt for å passe ditt eget oppsett.
Hvis du har problemer med at PIR blir utløst, må du starte fra begynnelsen og måle spenninger for hver del av kretsen. Når du er fornøyd med det, sjekk ledningene dine, kontroller at det er en felles grunn, sjekk meldinger på Wemos via en seriell feilsøkingskonsoll, sjekk MQTT -kommunikasjon og sjekk syntaksen til transformasjonen din, elementer og nettstedskartfiler.
Lykke til!
Anbefalt:
Hjemmeautomatisering WiFi-lysbryter med ESP-01 og relemodul med trykknapp: 7 trinn
Hjemmeautomatisering WiFi-lysbryter med ESP-01 og relemodul med trykknapp: Så i de tidligere instruksjonene programmerte vi en ESP-01 med Tasmota ved hjelp av en ESP-blinker og koblet ESP-01 til våre wifi-nettverk. Nå kan vi begynne å programmere den for å slå på/av en lysbryter ved hjelp av WiFi eller trykknappen. For det elektriske arbeidet
Hvordan lage IoT -basert hjemmeautomatisering med NodeMCU -sensorer Kontrollrelé: 14 trinn (med bilder)
Hvordan lage IoT-basert hjemmeautomatisering med NodeMCU-sensorer Kontrollrelé: I dette IoT-baserte prosjektet har jeg laget hjemmeautomatisering med Blynk og NodeMCU-relémodul med sanntidsfeedback. I manuell modus kan denne relemodulen styres fra mobil eller smarttelefon og manuell bryter. I automodus er denne smar
Hjemmeautomatisering med ESP8266 WiFi uten å bruke Blynk !: 24 trinn (med bilder)
Hjemmeautomatisering med ESP8266 WiFi uten å bruke Blynk !: For det første vil jeg takke alle for at de gjorde meg til en vinner i Automation Contest 2016 for denne INSTRUKTABLE. Så, som jeg lovet deg, her er instruksjonene for styring av husholdningsapparater med ESP8266 WiFi -modul
Batteridrevet dørsensor med integrering av hjemmeautomatisering, WiFi og ESP-NÅ: 5 trinn (med bilder)
Batteridrevet dørsensor med hjemmeautomatiseringsintegrasjon, WiFi og ESP-NÅ: I denne instruksjonsfilen viser jeg deg hvordan jeg lagde en batteridrevet dørsensor med hjemmeautomatiseringsintegrasjon. Jeg har sett noen andre fine sensorer og alarmsystemer, men jeg ville lage en selv. Mine mål: En sensor som oppdager og rapporterer en doo
Smart musikk på soverom og bad med bringebær Pi - Integrering av multirom, alarm, knappestyring og hjemmeautomatisering: 7 trinn
Smart musikk i soverom og bad med Raspberry Pi - Integrering av multirom, alarm, knappestyring og hjemmeautomatisering: I dag vil vi gi deg to eksempler på hvordan du kan bruke Raspberry Pi med vår Max2Play -programvare for hjemmeautomatisering: på badet og soverommet . Begge prosjektene er like ved at musikk fra flere kilder kan streames gjennom