Inhoudsopgave:

Alarm PIR naar wifi (en domotica) - Ajarnpa
Alarm PIR naar wifi (en domotica) - Ajarnpa

Video: Alarm PIR naar wifi (en domotica) - Ajarnpa

Video: Alarm PIR naar wifi (en domotica) - Ajarnpa
Video: Unboxing| WiFi smart PIR motion sensor |adding for smart home automation#motionsensor#smarthome 2024, December
Anonim
Image
Image
Alarm PIR naar wifi (en domotica)
Alarm PIR naar wifi (en domotica)

Overzicht

Deze instructable geeft je de mogelijkheid om de laatste datum/tijd (en optioneel een geschiedenis van tijden) te bekijken van wanneer de PIR's (passieve infraroodsensoren) van je huisalarm werden geactiveerd in je domoticasoftware. In dit project zal ik bespreken hoe te gebruiken met OpenHAB (gratis domotica-software, die ik persoonlijk gebruik), hoewel het zal werken met elke andere domotica-software of -toepassing die MQTT ondersteunt (ook later in dit artikel beschreven). Deze instructable leidt u door de nodige stappen voor het aansluiten van een printplaat en Wemos D1 mini (een IOT-kaart die gebruikmaakt van een ESP8266-chip) die in de alarmzones in uw alarmcentrale aansluit, zodat wanneer een zone (die een of meer PIR's) wordt geactiveerd, stuurt de Wemos draadloos een bericht met behulp van het MQTT-protocol naar uw domoticasoftware die op zijn beurt de laatste datum/tijd van die trigger weergeeft. Arduino-code om de Wemos te programmeren is ook aanwezig.

Invoering

De afbeelding hierboven is wat ik zie via een van de schermen van de OpenHAB-app op mijn iPhone. De datum/tijd-tekst is kleurgecodeerd om een snellere weergave te geven van wanneer de PIR werd geactiveerd - het zal rood (geactiveerd binnen de laatste 1 minuut), oranje (geactiveerd binnen de laatste 5 minuten), groen (geactiveerd binnen de laatste 30 minuten) weergeven, blauw (geactiveerd in het afgelopen uur) of anders, zwart. Als u op de datum/tijd klikt, wordt een historisch overzicht van PIR-triggers weergegeven, waarbij een 1 betekent geactiveerd en 0 inactief is. Er zijn veel toepassingen hiervoor, het kan bijvoorbeeld een aanvulling zijn op uw aanwezigheidsoplossing in huis, het kan beweging detecteren als u weg bent en via OpenHAB-regels, meldingen naar uw telefoon sturen, u zou het kunnen gebruiken zoals ik om te zien of mijn kinderen midden in de nacht opstaan, getriggerd door een PIR die zich buiten hun slaapkamers bevindt!

OpenHAB is gewoon de domotica-software die ik gebruik, er zijn er nog veel meer - en als ze MQTT ondersteunen, kun je dit project eenvoudig aanpassen aan de software die je gebruikt.

Veronderstellingen

Dit instructable gaat ervan uit dat je al hebt (of zal instellen):

  • Uiteraard een huisalarmsysteem met PIR's (passieve infrarood sensoren) en dat je toegang hebt tot de alarmcentrale om de benodigde bedrading aan te sluiten
  • OpenHAB (gratis open source domotica-software) draait, hoewel het, zoals besproken, zou moeten werken met alle domotica-software die een MQTT-binding kan bevatten. Als alternatief kunt u de code zelf aanpassen aan uw eigen behoeften.
  • Mosquitto MQTT (of vergelijkbare) broker geïnstalleerd en binding geconfigureerd met OpenHAB (MQTT is een messaging-subscribe/publish-type protocol dat lichtgewicht is en geweldig voor communicatie tussen apparaten)

Als u geen OpenHAB en een MQTT-makelaar gebruikt, raadpleegt u dit uitstekende artikel op de MakeUseOf-website

Wat heb ik nodig?

Om de draadloze controller te maken, heb je de volgende onderdelen nodig:

  • Wemos D1 mini V2 (heeft een ingebouwde ESP8266 draadloze CHIP)
  • Een LM339-vergelijker (dit controleert PIR inactief versus geactiveerd)
  • Een 5V DC-voedingsbron voor de Wemos (OF, een DC-DC buck-converter. Let op: een LM7805-spanningsregelaar werkt mogelijk niet voor deze toepassing, zoals later in dit project wordt besproken)
  • Twee weerstanden voor een spanningsdeler (grootte is afhankelijk van uw alarmspanningen, later in het project besproken)
  • Eén weerstand van 1K ohm om te fungeren als een pull-down-weerstand voor het regelen van het LM339-vermogen
  • Eén 2N7000 (of vergelijkbare) MOSFET om de LM339 logisch in te schakelen (mogelijk optioneel, later in het project besproken)
  • Een breadboard van de juiste grootte voor het instellen en testen van circuits
  • Een heleboel breadboard-draden om alles met elkaar te verbinden
  • Benodigd gereedschap: zijkniptang, enkeladerige draad
  • Een DC-multimeter (verplicht!)

Stap 1: De alarmsysteembedieningskast

De alarmsysteemcontrolebox
De alarmsysteemcontrolebox

Eerst wat waarschuwingen en disclaimers

Persoonlijk heb ik een Bosch alarmsysteem. Ik raad u ten zeerste aan om de relevante handleiding voor uw specifieke alarmsysteem te downloaden en uzelf ermee vertrouwd te maken voordat u begint, aangezien u het alarmsysteem moet uitschakelen om de zones aan te sluiten. Ik zou je ook aanraden dit artikel in zijn geheel te lezen voordat je begint!

Hieronder vindt u een lijst met enkele dingen die u moet weten voordat u begint - zorg ervoor dat u ze allemaal leest en begrijpt voordat u verder gaat! Ik neem geen verantwoordelijkheid als u uw alarmsysteem verknoeit en/of uw installateur moet betalen om het te repareren. Als u echter het volgende leest en begrijpt en de nodige voorzorgsmaatregelen neemt, zou het goed moeten komen:

1. Mijn alarmsysteem had een back-upbatterij in de doos en had ook een sabotageschakelaar aan de binnenkant van het deksel (die toegang geeft tot de alarmsysteemkaart) zodat het alarm zelfs extern kan worden uitgeschakeld, wanneer het voorpaneel van de bediening wordt verwijderd doos heeft het alarm geactiveerd! Om dit te omzeilen terwijl ik aan het project werkte, heb ik de sabotagebeveiliging omzeild door de sabotageschakelaar los te koppelen en vervolgens kort te sluiten (de dikke rode draad zoals weergegeven in de bovenstaande foto)

2. Bij het weer inschakelen van het alarmsysteem begon de alarmcentrale na ca. ~12 uur te piepen met foutcodes. Na het bepalen van de foutcodes via de handleiding, kwam ik erachter dat het me waarschuwde dat:

  • De datum/tijd was niet ingesteld (ik had de hoofdcode en de toetsenreeks uit de handleiding nodig om opnieuw te configureren)
  • Dat de back-up batterij niet was aangesloten (eenvoudige oplossing, ik was net vergeten de batterij weer aan te sluiten)

3. In mijn alarm zijn er 4 x zone-verbindingsblokken (met het label Z1-Z4) voor de PIR's om op de hoofdalarmkaart aan te sluiten, echter - mijn alarmsysteem kan in feite 8 zones aan. Elk zoneverbindingsblok kan elk 2 x zones gebruiken (Z1 doet Z1 en Z5, Z2 doet Z2 en Z6 enzovoort). Het alarmsysteem heeft ingebouwde sabotagebeveiliging om te voorkomen dat iemand bijvoorbeeld het deksel van het alarmsysteem opent zoals hierboven vermeld, of de draden naar een PIR doorsnijdt. Het maakt onderscheid tussen elke zonesabotage via EOL-weerstanden (end of line). Dit zijn weerstanden van specifieke afmetingen die zich aan het "einde van de lijn" bevinden - met andere woorden, in de PIR (of de sabotageschakelaar van de besturingskast, of de sirenekast of wat dan ook dat op die zone is aangesloten). Zoals vermeld worden deze weerstanden gebruikt als 'sabotage'. bescherming' - technisch gezien, als iemand de kabels naar een PIR doorknipt - omdat het alarmsysteem een bepaalde weerstand van die PIR verwacht, dan neemt het aan dat als de weerstand verandert, iemand met het systeem heeft geknoeid en het alarm zal activeren.

Bijvoorbeeld:

Op mijn alarm heeft Zone "Z4" 2 draden, één gaat naar de PIR in mijn gang en één gaat naar de sabotageschakelaar van de alarmcentrale. In de gang PIR heeft het een weerstand van 3300 ohm. De andere draad die naar de sabotageschakelaar van de besturingskast loopt, heeft een weerstand van 6800 ohm die in serie is geschakeld. Zo maakt het alarmsysteem (logisch) onderscheid tussen "Z4" en "Z8" sabotage. Evenzo heeft zone "Z3" een PIR (met een weerstand van 3300 ohm erin) en ook de sirene-sabotageschakelaar (met een weerstand van 6800 ohm erin) die "Z7" vormt. De alarminstallateur zou het alarmsysteem vooraf hebben geconfigureerd, zodat het weet welk apparaat op elke zone is aangesloten (en de grootte van de EOL-weerstand hebben aangepast, omdat het alarmsysteem is geprogrammeerd om te weten hoe groot de verschillende EOL-weerstanden zijn. Onder onder geen beding mag u de waarde van deze weerstanden wijzigen!)

Dus op basis van het bovenstaande, omdat aan elke zone meerdere apparaten kunnen zijn aangesloten (met verschillende weerstandswaarden), en als u de formule V = IR (spanning = ampère x weerstand) onthoudt, kan dat ook betekenen dat elke zone verschillende spanningen kan hebben. Wat ons naar de volgende stap leidt, het meten van elke zone IDLE vs TRIGGERED-spanning …

Stap 2: Alarmzonespanning meten

Spanning alarmzone meten
Spanning alarmzone meten
Spanning alarmzone meten
Spanning alarmzone meten

Zodra je toegang hebt gekregen tot het moederbord van je alarmsysteem (en de sabotageschakelaar hebt omzeild als je die hebt, zoals in de vorige stap), zet je je alarmsysteem weer aan. We moeten nu de spanning van elke zone meten wanneer deze inactief is (geen beweging voor de PIR) vs. GEACTIVEERD (PIR heeft beweging gedetecteerd) Pak een pen en papier zodat u uw spanningsmetingen kunt noteren.

WAARSCHUWING: Het grootste deel van uw alarmsysteem werkt waarschijnlijk op 12V DC, maar het zal aanvankelijk worden gevoed op 220V (of 110V) AC, met een transformator die de stroom omzet van AC naar DC. LEES de handleiding en neem extra voorzorgsmaatregelen om ervoor te zorgen dat u GEEN AC-aansluitingen meet!!! Volgens de schermafbeelding van mijn alarmsysteem op deze pagina, kun je zien dat de onderkant van de afbeelding AC-stroom is, getransformeerd naar 12V DC. We meten de 12V DC in de rode vakjes gemarkeerd. Raak nooit de wisselstroom aan. Wees uiterst voorzichtig!

PIR-spanning meten

Ik heb 4 x PIR's aangesloten op Z1 tot en met Z4. Meet elk van uw zones als volgt.

  1. Identificeer eerst de GND-terminal en de zone-terminals op de alarmcentrale. Ik heb deze gemarkeerd in de afbeelding die wordt weergegeven in de handleiding van mijn Bosch-alarm.
  2. Pak je multimeter en stel je spanningsmeting in op 20V DC. Sluit de zwarte (COM) kabel van uw multimeter aan op de GND-aansluiting op de melder. Plaats de rode (+) kabel van uw multimeter op de eerste zone - in mijn geval met het label "Z1". Noteer de spanningswaarde. Voer dezelfde stappen uit voor de overige zones. Mijn spanningsmetingen zijn als volgt:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7.92V
  • Z4 = 7.92V

Zoals hierboven vermeld, hebben mijn eerste twee zones alleen PIR's eraan bevestigd. De laatste twee zones hebben zowel PIR's als sabotagebeveiliging (Z3 controlebox sabotage, Z4 sirene sabotage) Let op de spanningsverschillen.

3. Voor deze volgende stap heb je waarschijnlijk 2 mensen nodig. U moet ook weten welke PIR zich in welke zone bevindt. Ga terug en lees de spanning op de eerste zone af. Laat nu iemand in je huis voor de PIR lopen, de spanning zou moeten dalen. Let op de nieuwe spanningsaflezing. In mijn geval lezen de spanningen als volgt wanneer de PIR's worden geactiveerd:

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

Zoals uit het bovenstaande blijkt, kan ik zien dat wanneer zones 1 en 2 worden geactiveerd, de spanning daalt van 6,65V naar 0V. Wanneer echter zones 3 en 4 worden geactiveerd, daalt de spanning van 7,92V naar 4,30V.

12V voeding meten

We zullen de 12V DC-aansluiting van de alarmcentrale gebruiken om ons project van stroom te voorzien. We moeten de spanning meten van de 12V DC voeding op het alarm. Hoewel er al 12V staat, moeten we een nauwkeurigere uitlezing weten. In mijn geval leest het eigenlijk 13.15V. Schrijf dit op, deze waarde heb je nodig in de volgende stap.

Waarom meten we spanning?

De reden dat we de spanning voor elke PIR moeten meten, is vanwege het circuit dat we gaan maken. We zullen een LM339 quad differentiële comparatorchip (of quad op-amp comparator) gebruiken als de elektrische kerncomponent voor dit project. De LM339 heeft 4 onafhankelijke spanningsvergelijkers (4 kanalen) waarbij elk kanaal 2 x ingangsspanningen opneemt (een inverterende (-) en een niet-inverterende (+) ingang, zie diagram) Als de spanning van de inverterende ingangsspanning lager dan de niet-inverterende spanning, dan wordt de bijbehorende uitgang naar aarde getrokken. Evenzo, als de niet-inverterende ingangsspanning lager wordt dan de inverterende ingang, wordt de uitgang omhoog getrokken tot Vcc. Handig is dat ik in mijn huis 4 x alarm PIR's/zones heb - daarom zal elke zone worden aangesloten op elk kanaal op de comparator. Als je meer dan 4 x PIR's hebt, heb je een comparator nodig met meer kanalen, of een andere LM339!

Opmerking: de LM339 verbruikt stroom in nano-ampère, dus heeft geen invloed op de EOL-weerstand van het bestaande alarmsysteem.

Als dit verwarrend is, ga dan toch door naar de volgende stap, het zal logischer worden als we het eenmaal hebben aangesloten!

Stap 3: Een spanningsdeler maken

Image
Image

Wat is een spanningsdeler?

Een spanningsdeler is een circuit met 2 x weerstanden (of meer) in serie. We leveren spanning in (Vin) aan de eerste weerstand (R1) Het andere been van R1 wordt aangesloten op het eerste been van de tweede weerstand (R2) en het andere uiteinde van R2 wordt aangesloten op GND. We nemen dan een uitgangsspanning (Vout) van de verbinding tussen R1 en R2. Die spanning wordt onze referentiespanning voor de LM339. Voor meer informatie over hoe spanningsdelers werken, zie de Adohms youtube-video

(Opmerking: weerstanden hebben geen polariteit, dus ze kunnen op beide manieren worden aangesloten)

Onze referentiespanning berekenen

Ervan uitgaande dat de spanning daalt wanneer uw PIR wordt geactiveerd (dit zou het geval moeten zijn voor de meeste alarmen), is wat we proberen te bereiken, een spanningswaarde te krijgen die ongeveer halverwege tussen onze laagste inactieve spanning en onze hoogste geactiveerde spanning ligt, dit wordt onze referentiespanning.

Neem mijn alarm als voorbeeld…

De zone-inactieve spanningen waren Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. De laagste rustspanning is dus 6.65V

De door de zone getriggerde spanningen waren: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. De hoogste getriggerde spanning is dus 4,30V

We moeten dus een getal kiezen halverwege tussen 4,30V en 6,65V (hoeft niet exact te zijn, maar ongeveer) In mijn geval moet mijn referentiespanning rond de 5,46V zijn. Opmerking: Als de laagste inactieve en hoogste getriggerde spanning zeer dicht bij elkaar liggen omdat meerdere zones een reeks verschillende spanningen veroorzaken, moet u mogelijk 2 of meer spanningsdelers maken.

Onze weerstandswaarden voor de spanningsdeler berekenen

Nu we een referentiespanning hebben, moeten we berekenen welke weerstanden we nodig hebben om een spanningsdeler te maken die onze referentiespanning levert. We zullen de 12V DC-spanningsbron (Vs) van het alarm gebruiken. Echter, volgens de vorige stap, toen we de 12V DC-voeding meten, kregen we eigenlijk 13,15V. We moeten de spanningsdeler berekenen met deze waarde als bron.

Bereken Vout met behulp van de wet van ohm…

Vout = Vs x R2 / (R1 + R2)

…of gebruik een online spanningsdelercalculator:-)

U moet met de weerstandswaarden experimenteren totdat u de gewenste output hebt bereikt. In mijn geval werkte het met R1 = 6.8k ohm en R2 = 4.7K ohm, als volgt berekend in lange vorm:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805 / 11, 500

Vuit = 5.37V

Stap 4: Sluit de LM339. aan

Bedrading van de Wemos D1 Mini
Bedrading van de Wemos D1 Mini

Spanningsdeler naar LM339 inverterende ingangen

Zoals eerder besproken met betrekking tot de LM339-vergelijker, heeft deze 2 x ingangen nodig. De ene zal een spanning zijn van elke PIR naar de niet-inverterende (+) terminal van elk kanaal, de andere zal onze referentiespanning zijn naar onze inverterende (-) terminal. De referentiespanning moet alle 4 de inverterende ingangen van de comparator voeden. Schakel uw alarmsysteem uit voordat u deze stappen uitvoert.

  • Leid een draad van het 12V DC blok op het alarmsysteem naar de + rail op je breadboard *
  • Leid een draad van het GND-blok op het alarmsysteem naar de - rail op je breadboard **
  • Installeer de LM339 comparator in het midden van het breadboard (de inkeping geeft het dichtst bij pin 1)
  • Installeer de 2 x weerstanden om een spanningsdelercircuit te maken en draad voor verdeelde spanning uit
  • Leid draden van de 'spanningsverdeelde' Vout naar elke LM339 inverterende terminal

* TIP: gebruik indien mogelijk een krokodillenklem voor de voeding, dit maakt het gemakkelijker om uw project AAN/UIT van stroom te voorzien** BELANGRIJK! Een MOSFET kan nodig zijn ALS u de Wemos van stroom voorziet via het alarmpaneel! In mijn geval krijgen de LM339, Wemos en Alarm allemaal stroom van dezelfde bron (dwz: het alarmsysteem zelf). Hierdoor kan ik alles aanzetten met een enkele stroomaansluiting. Standaard zijn de GPIO-pinnen op de Wemos echter gedefinieerd als "INPUT"-pinnen - wat betekent dat ze elke spanning opnemen die naar hen wordt gegooid en op die bron vertrouwen om de juiste spanningsniveaus (min/max-niveaus) te leveren, zodat de Wemos won' t crash of burn-out. In mijn geval krijgt het alarmsysteem zijn stroom en begint het zijn opstartvolgorde zeer snel uit te voeren - zo snel zelfs dat het dit doet voordat de Wemos kan opstarten en de GPIO-pinnen kan declareren als "INPUT_PULLUP" (spanning intern opgetrokken in de chip). Dit betekent niet dat de spanningsverschillen de Wemos zouden laten crashen als het hele systeem stroom kreeg. De enige manier om dit te omzeilen zou zijn om de Wemos handmatig uit en aan te zetten. Om dit op te lossen is er een MOSFET toegevoegd die fungeert als een "logische schakelaar" voor het inschakelen van de LM339. Hierdoor kan de Wemos opstarten, zijn 4 x comparator GPIO-pinnen instellen als "INPUT_PULLUP's", een paar seconden vertragen en DAARNA (via een andere GPIO-pin D5 gedefinieerd als een OUTPUT) een "HOOG" signaal verzenden via GPIO-pin D5 naar de MOSFET, die logischerwijs de LM339 inschakelt. Ik zou aanraden om de bedrading aan te sluiten zoals hierboven, maar ALS je merkt dat de Wemos crasht zoals ik deed, dan moet je de MOSFET toevoegen met een pull-down-weerstand van 1k ohm. Zie het einde van deze instructable voor meer informatie over hoe u dit kunt doen.

Alarmzones naar LM339 niet-inverterende ingangen

We moeten nu draden van elke zone op de alarmcentrale naar de LM339-comparatoringangen leiden. Terwijl het alarmsysteem nog steeds is uitgeschakeld, voert u voor elke zone een draad naar elke niet-inverterende (+) ingang op de LM339-comparator. In mijn systeem bijvoorbeeld:

  • Draad van Z1 gaat naar LM339 ingang 1+
  • Draad van Z2 gaat naar LM339 ingang 2+
  • Draad van Z3 gaat naar LM339 ingang 3+
  • Draad van Z4 gaat naar LM339 ingang 4+

Raadpleeg de pin-out van de LM339 onder stap 3 als u een herinnering wilt (deze heeft een kleurcode met de breadboard-afbeelding). Als je klaar bent, zou je breadboard eruit moeten zien als de afbeelding die in deze stap wordt getoond.

Schakel het alarmsysteem in en meet de spanning die uit de spanningsdeler komt om er zeker van te zijn dat deze gelijk is aan uw referentiespanning zoals eerder berekend.

Stap 5: Bedrading van de Wemos D1 Mini

Bedrading van de Wemos D1 mini

Nu we alle LM339-ingangen hebben geregeld, moeten we nu de Wemos D1 mini aansluiten. Elke LM339-uitgangspin gaat naar een Wemos GPIO-pin (input/output voor algemeen gebruik) die we via code zullen aanwijzen als een input-pullup-pin. De Wemos neemt maximaal 5V op als zijn Vcc (ingangsbron) spanning (hoewel dit intern wordt geregeld tot 3,3V). 5V om de Wemos van stroom te voorzien. De datasheet voor de LM7805 geeft aan dat we een condensator nodig hebben die aan elke kant van de regelaar is aangesloten om de stroom af te vlakken, zoals weergegeven op de breadboard-afbeelding. Het langere been van de condensator is positief (+), dus zorg ervoor dat deze op de juiste manier is aangesloten.

De spanningsregelaar neemt spanning op (linker pin), aarde (middelste pin) en spanning uit (rechter pin) Controleer de pin-out als uw spanningsregelaar verschilt van de LM7805.

(EDIT: ik ontdekte dat de versterkers die van het alarmpaneel kwamen, te hoog waren voor de LM7805 om te verwerken. Dit veroorzaakte veel hitte in het kleine koellichaam van de LM7805 en zorgde ervoor dat het uitviel, waardoor de Wemos stopte Ik heb de LM7805 en condensatoren vervangen door een DC-DC buck-converter en sindsdien geen problemen meer gehad. Deze zijn zeer eenvoudig aan te sluiten. Sluit gewoon de ingangsspanning van het alarm aan, sluit eerst een multimeter aan en gebruik de potentiometerschroef en pas aan tot de uitgangsspanning ~ 5V is)

GPIO-ingangspinnen

Voor dit project gebruiken we de volgende pinnen:

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

Sluit de uitgangen van de LM339 aan op de gerelateerde GPIO-pinnen op het Wemos-bord, volgens de breadboard-afbeelding die in deze stap wordt getoond. Nogmaals, ik heb de ingangen en overeenkomende uitgangen een kleurcodering gegeven, om het gemakkelijker te maken om te zien wat naar wat verwijst. Elke GPIO-pin in de Arduino wordt gedefinieerd als een 'INPUT_PULLUP', wat betekent dat ze bij normaal gebruik (IDLE) tot 3,3 V worden getrokken en dat de LM339 ze naar de grond trekt als de PIR wordt geactiveerd. De code detecteert de verandering van HOOG naar LAAG en stuurt draadloos een bericht naar je domoticasoftware. Als je problemen hebt met deze werking, is het mogelijk dat je inverterende versus niet-inverterende ingangen verkeerd om zijn (als de spanning van je PIR hoog wordt wanneer deze wordt geactiveerd, zoals gebeurt met de meeste hobby-PIR's, dan wil je dat de verbindingen de omgekeerd)

Arduino IDE

Verwijder de Wemos van het breadboard, we moeten er nu code naar uploaden (alternatieve link hier) Ik zal niet in detail treden over hoe dit te doen, want er zijn tal van artikelen op internet over het uploaden van code naar Wemos of andere ESP8266 soort borden. Sluit uw USB-kabel aan op het Wemos-bord en op uw pc en start de Arduino IDE. Download de code en open deze in uw project. U moet ervoor zorgen dat het juiste bord voor uw project is geïnstalleerd en geladen, evenals de juiste geselecteerde COM-poort (Tools, Port). U moet ook de juiste bibliotheken hebben geïnstalleerd (PubSubClient, ESP8266Wifi). Raadpleeg dit artikel om het Wemos-bord in uw schets te krijgen.

U moet de volgende coderegels wijzigen en vervangen door uw eigen SSID en wachtwoord voor uw draadloze verbinding. Wijzig ook het IP-adres zodat het naar uw eigen MQTT-makelaar verwijst.

// Wifi

const char* ssid = "your_wifi_ssid_here"; const char* wachtwoord = "your_wifi_password_here"; // MQTT Broker IP-adres MQTT_SERVER(172, 16, 223, 254)

Eenmaal gewijzigd, verifieert u uw code en uploadt u deze vervolgens naar het Wemos-bord via een USB-kabel.

Opmerkingen:

  • Als u verschillende GPIO-poorten gebruikt, moet u de code aanpassen. Als je meer of minder zones gebruikt dan ik heb, moet je ook de code aanpassen en de TOTAL_ZONES=4; constant aan te passen.
  • Bij het opstarten van mijn alarmsysteem zou het alarmsysteem een stroomtest doen voor alle 4 x PIR's die alle aangesloten GPIO's naar de aarde trokken, waardoor de Wemos dachten dat de zones werden geactiveerd. De code negeert het verzenden van MQTT-berichten als alle 4 zones tegelijkertijd actief zijn, omdat wordt aangenomen dat het alarmsysteem wordt ingeschakeld.

Alternatieve downloadlink om HIER te coderen

Stap 6: Testen en OpenHAB-configuratie

Testen en OpenHAB-configuratie
Testen en OpenHAB-configuratie

MQTT-testen

MQTT is een "subscribe / publish" berichtensysteem. Een of meer apparaten kunnen praten met een "MQTT-makelaar" en "abonneren" op een bepaald onderwerp. Alle inkomende berichten van een ander apparaat die zijn "gepubliceerd" naar hetzelfde onderwerp, zullen door de broker worden gepusht naar alle apparaten die zich erop hebben geabonneerd. Het is een extreem lichtgewicht en eenvoudig te gebruiken protocol en perfect als een eenvoudig triggersysteem zoals hier. Voor testen kunt u inkomende MQTT-berichten van de Wemos naar uw MQTT-broker bekijken door de volgende opdracht op uw Mosquitto-server uit te voeren (Mosquitto is een van de vele beschikbare MQTT Broker-software). Met deze opdracht wordt geabonneerd op inkomende keepalive-berichten:

mosquitto_sub -v -t openhab/alarm/status

U zou ongeveer elke 30 seconden inkomende berichten van de Wemos moeten zien binnenkomen met het cijfer "1" (wat betekent "Ik leef"). Als u constante "0's" (of geen reactie) ziet, is er geen communicatie. Zodra je de nummer 1 ziet binnenkomen, betekent dit dat de Wemos communiceert met de MQTT-makelaar (zoek op "MQTT Last Will and Testament" voor meer informatie over hoe dit werkt, of bekijk dit echt goede blogbericht)

Zodra u hebt bewezen dat de communicatie functioneel is, kunnen we testen of een zonestatus wordt gerapporteerd via MQTT. Abonneer u op het volgende onderwerp (de # is een jokerteken)

mosquitto_sub -v -t openhab/alarm/#

De gebruikelijke statusberichten zouden binnen moeten komen, evenals het IP-adres van de Wemos zelf. Loop voor een PIR en je zou ook de zone-informatie moeten zien binnenkomen die aangeeft dat deze OPEN is, en dan een seconde of zo later dat deze GESLOTEN is, vergelijkbaar met het volgende:

openhab/alarm/status 1

openhab/alarm/zone1 OPEN

openhab/alarm/zone1 GESLOTEN

Zodra dit werkt, kunnen we OpenHAB zo configureren dat dit mooi wordt weergegeven in de GUI.

OpenHAB-configuratie

De volgende wijzigingen zijn vereist voor OpenHAB:

'alarm.map' transformatiebestand: (optioneel, voor testen)

CLOSED=IdleOPEN=TriggeredNULL=Onbekend-=Onbekend

'status.map' transformatiebestand:

0=Mislukt

1=Online -=OMLAAG! NULL=onbekend

'items'-bestand:

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]" } Nummer zone1_Chart_Period "Zone 1 kaart" Contact alarmZone1State "Zone 1 staat [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone1:state:default" } String alarmZone1Trigger "Lounge PIR [%1$ta %1$tr]" Nummer zone2_Chart_Period "Zone 2-kaart" Contact opnemen met alarmZone2State "Zone 2-status [MAP(alarm.map):% s]" { mqtt="<[mqttbroker:openhab/alarm/zone2:state:default" } String alarmZone2Trigger "First Hall PIR [%1$ta %1$tr]" Nummer zone3_Chart_Period "Zone 3 Chart" Contact alarmZone3State "Zone 3 Status [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone3:state:default" } String alarmZone3Trigger "Slaapkamer PIR [%1$ta %1$tr]" Nummer zone4_Chart_Period "Zone 4-kaart" Contact opnemen met alarmZone4State "Zone 4-status [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openha b/alarm/zone4:state:default" } String alarmZone4Trigger "Hoofdzaal PIR [%1$ta %1$tr]"

'sitemap'-bestand (inclusief rrd4j-grafieken):

Tekst item=alarmZone1Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone1_Chart_Period label= "Periode" mappings=[0="Uur", 1="Dag", 2="Week"] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone1_Chart_Period==0, zone1_Chart_Period= =Niet geïnitialiseerd] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone1_Chart_Period==1] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone1_Chart_Period==2] } } Tekst item=alarmZone2Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item= zone2_Chart_Period label="Periode" mappings=[0="Hour", 1="Day", 2="Week"] Afbeelding url="https://localhost:8080/rrdchart.png" visibility=[zone2_Chart_Period==0, zone2_Chart_Period==Niet geïnitialiseerd] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone2_Chart_Period==1] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone2_Chart_Period ==2] } } Tekstitem=alarmZone3Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone3_Chart_Period label="Period" mappings =[0="Uur", 1="Dag", 2="Week"] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone3_Chart_Period==0, zone3_Chart_Period==Niet-geïnitialiseerd] Afbeelding url="https://localhost:8080/rrdchart.png" visibility=[zone3_Chart_Period==1] Afbeelding 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="Hour", 1="Day", 2="Week"] Afbeelding url="https://localhost:8080/rrdchart.png" visibility=[zone4_Chart_Period==0, zone4_Chart_Period== Niet-geïnitialiseerd] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone4_Chart_Period==1] Afbeelding url="https://localhost:8080/rrdchart.png" zichtbaarheid=[zone4_Chart_Period==2] } } // OPTIONEEL maar handig voor het diagnosticeren van status en IP-adres ss Tekstitem=alarmMonitorState Tekstitem=alarmMonitorIPAddress

'regels' bestand:

regel "Alarm Zone 1 statuswijziging"

wanneer item alarmZone1State is gewijzigd in OPEN en vervolgens postUpdate (alarmZone1Trigger, nieuw DateTimeType()) alarmZone1State.state = GESLOTEN einde

regel "Alarm Zone 2 status verandering"

wanneer item alarmZone2State is gewijzigd in OPEN en vervolgens postUpdate (alarmZone2Trigger, nieuw DateTimeType()) alarmZone2State.state = GESLOTEN einde

regel "Alarm Zone 3 status verandering"

wanneer item alarmZone3State is gewijzigd in OPEN en vervolgens postUpdate (alarmZone3Trigger, nieuw DateTimeType()) alarmZone3State.state = GESLOTEN einde

regel "Alarm Zone 4 status verandering"

wanneer item alarmZone4State is gewijzigd in OPEN en vervolgens postUpdate (alarmZone4Trigger, nieuw DateTimeType()) alarmZone4State.state = GESLOTEN einde

Mogelijk moet u de bovenstaande OpenHAB-configuratie enigszins wijzigen om deze aan uw eigen instellingen aan te passen.

Als je problemen hebt met het activeren van PIR's, begin dan vanaf het begin en meet de spanningen voor elk deel van het circuit. Als je daar tevreden mee bent, controleer dan je bedrading, zorg dat er een gemeenschappelijke basis is, controleer berichten op de Wemos via een seriële debug-console, controleer MQTT-communicatie en controleer de syntaxis van je transformatie, items en sitemapbestanden.

Veel geluk!

Aanbevolen: