Inhaltsverzeichnis:

Alarm PIR zu WiFi (und Hausautomation) - Gunook
Alarm PIR zu WiFi (und Hausautomation) - Gunook

Video: Alarm PIR zu WiFi (und Hausautomation) - Gunook

Video: Alarm PIR zu WiFi (und Hausautomation) - Gunook
Video: Unboxing| WiFi smart PIR motion sensor |adding for smart home automation#motionsensor#smarthome 2024, Juli
Anonim
Image
Image
Alarm PIR zu WiFi (und Hausautomation)
Alarm PIR zu WiFi (und Hausautomation)

Überblick

Dieses anweisbare gibt Ihnen die Möglichkeit, das letzte Datum / die letzte Uhrzeit (und optional einen Zeitverlauf) anzuzeigen, wann die PIRs (passive Infrarotsensoren) Ihres Hausalarms in Ihrer Hausautomatisierungssoftware ausgelöst wurden. In diesem Projekt werde ich diskutieren, wie man OpenHAB (kostenlose Hausautomationssoftware, die ich persönlich verwende) verwendet, obwohl es mit jeder anderen Hausautomatisierungssoftware oder -anwendung funktioniert, die MQTT unterstützt (auch später in diesem Artikel beschrieben). Diese Anleitung führt Sie durch die notwendigen Schritte zum Verdrahten einer Platine und eines Wemos D1 mini (einer IOT-Platine, die einen ESP8266-Chip verwendet), die die Alarmzonen in Ihrer Alarmsteuerbox anzapft, so dass, wenn eine Zone (die enthält) ein oder mehrere PIRs) ausgelöst wird, sendet der Wemos eine Nachricht drahtlos über das MQTT-Protokoll an Ihre Hausautomationssoftware, die wiederum das letzte Datum/die letzte Uhrzeit dieses Auslösers anzeigt. Arduino-Code zum Programmieren des Wemos wird ebenfalls bereitgestellt.

Einführung

Das obige Bild ist das, was ich über einen der Bildschirme in der OpenHAB-App auf meinem iPhone sehe. Der Datums-/Uhrzeittext ist farbcodiert, um schneller anzuzeigen, wann der PIR ausgelöst wurde – er wird rot (ausgelöst innerhalb der letzten 1 Minute), orange (ausgelöst innerhalb der letzten 5 Minuten), grün (ausgelöst innerhalb der letzten 30 Minuten) angezeigt., blau (ausgelöst innerhalb der letzten Stunde) oder sonst schwarz. Wenn Sie auf Datum/Uhrzeit klicken, wird eine historische Ansicht der PIR-Auslöser angezeigt, wobei eine 1 ausgelöst bedeutet und 0 inaktiv ist. Es gibt viele Verwendungsmöglichkeiten dafür, zum Beispiel könnte es Ihre Home-Presence-Lösung ergänzen, es kann Bewegungen erkennen, wenn Sie weg sind und über OpenHAB-Regeln Benachrichtigungen an Ihr Telefon senden, Sie können es wie ich verwenden, um zu sehen, ob meine Kinder es sind Aufstehen mitten in der Nacht, ausgelöst durch einen PIR, der sich außerhalb ihres Schlafzimmers befindet!

OpenHAB ist einfach die Hausautomationssoftware, die ich verwende, es gibt viele andere - und wenn sie MQTT unterstützen, können Sie dieses Projekt leicht an die von Ihnen verwendete Software anpassen.

Annahmen

Dieses anweisbare geht davon aus, dass Sie bereits haben (oder einrichten):

  • Offensichtlich ein Hausalarmsystem mit PIRs (Passiv-Infrarot-Sensoren) und dass Sie Zugriff auf die Alarmsteuerbox haben, um die erforderliche Verkabelung anzuschließen
  • OpenHAB (kostenlose Open-Source-Home-Automation-Software) läuft, obwohl es wie besprochen mit jeder Home-Automation-Software funktionieren sollte, die eine MQTT-Bindung enthalten kann. Alternativ können Sie den Code selbst an Ihre eigenen Bedürfnisse anpassen.
  • Mosquitto MQTT (oder ähnlicher) Broker installiert und Bindung mit OpenHAB konfiguriert (MQTT ist ein Protokoll vom Typ Messaging Subscribe/Publish, das leichtgewichtig ist und sich hervorragend für die Kommunikation zwischen Geräten eignet)

Wenn Sie OpenHAB und keinen MQTT-Broker ausführen, lesen Sie diesen ausgezeichneten Artikel auf der MakeUseOf-Website

Was brauche ich?

Um den drahtlosen Controller zu erstellen, müssen Sie die folgenden Teile beziehen:

  • Wemos D1 mini V2 (hat einen ESP8266 Wireless CHIP eingebaut)
  • Ein LM339-Komparator (dies führt die Überprüfung von PIR-Leerlauf vs. ausgelöst durch)
  • Eine 5-V-Gleichstromquelle für den Wemos (OR, ein DC-DC-Abwärtswandler. Hinweis: Ein LM7805-Spannungsregler funktioniert möglicherweise nicht für diese Anwendung, wie später in diesem Projekt beschrieben)
  • Zwei Widerstände für einen Spannungsteiler (Größe hängt von Ihren Alarmspannungen ab, die später im Projekt besprochen werden)
  • Ein 1K-Ohm-Widerstand als Pull-Down-Widerstand zur Steuerung der LM339-Leistung
  • Ein 2N7000 (oder ähnlicher) MOSFET zum logischen Einschalten des LM339 (möglicherweise optional, später im Projekt besprochen)
  • Ein Steckbrett geeigneter Größe zum Aufbau und Testen von Schaltungen
  • Ein paar Steckbrettdrähte, um alles miteinander zu verbinden
  • Benötigtes Werkzeug: Seitenschneider, einadriger Draht
  • Ein DC-Multimeter (obligatorisch!)

Schritt 1: Die Alarmsystem-Steuerbox

Die Alarmsystem-Steuerbox
Die Alarmsystem-Steuerbox

Zuerst einige Warnungen und Haftungsausschlüsse

Ich persönlich habe eine Bosch Alarmanlage. Ich empfehle Ihnen dringend, das entsprechende Handbuch für Ihr spezielles Alarmsystem herunterzuladen und sich damit vertraut zu machen, bevor Sie beginnen, da Sie das Alarmsystem ausschalten müssen, um die Zonen zu verdrahten. Ich würde Ihnen auch empfehlen, diesen Artikel vollständig zu lesen, bevor Sie beginnen!

Nachfolgend finden Sie eine Liste mit einigen Dingen, die Sie wissen sollten, bevor Sie beginnen - stellen Sie sicher, dass Sie sie alle gelesen und verstanden haben, bevor Sie fortfahren! Ich übernehme keine Verantwortung, wenn Sie Ihr Alarmsystem vermasseln und / oder Ihren Installateur bezahlen müssen, um es zu reparieren. Wenn Sie jedoch Folgendes lesen und verstehen und die erforderlichen Vorsichtsmaßnahmen treffen, sollte es Ihnen gut gehen:

1. Mein Alarmsystem hatte eine Backup-Batterie in der Box und hatte auch einen Sabotageschalter an der Innenseite des Deckels (der Zugang zur Alarmsystemplatine bietet), sodass der Alarm sogar extern ausgeschaltet wurde, wenn die Frontplatte der Steuerung entfernt wurde Box hat es den Alarm ausgelöst! Um dies zu umgehen, während ich an dem Projekt arbeitete, habe ich den Manipulationsschutz umgangen, indem ich den Sabotageschalter abgezogen und dann kurzgeschlossen habe (das dicke rote Kabel wie auf dem Foto oben gezeigt).

2. Beim erneuten Einschalten des Alarmsystems begann die Alarmzentrale nach ca. 12 Stunden mit einem Piepton mit Fehlercodes. Nachdem ich die Fehlercodes über das Handbuch ermittelt hatte, fand ich heraus, dass mich Folgendes warnt:

  • Datum/Uhrzeit war nicht eingestellt (ich brauchte den Mastercode und die Tastenfolge aus dem Handbuch zum Neukonfigurieren)
  • Dass die Backup-Batterie nicht angeschlossen war (einfache Lösung, ich hatte nur vergessen, die Batterie wieder einzustecken)

3. In meinem Alarm gibt es jedoch 4 Zonenanschlussblöcke (mit der Bezeichnung Z1-Z4) für die PIRs, die auf der Hauptalarmplatine verdrahtet werden können - mein Alarmsystem ist jedoch in der Lage, 8 Zonen zu unterstützen. Jeder Zonenanschlussblock kann tatsächlich jeweils 2 x Zonen betreiben (Z1 macht Z1 und Z5, Z2 macht Z2 und Z6 usw.). Das Alarmsystem verfügt über einen eingebauten Manipulationsschutz, um zu verhindern, dass jemand sagt, den Deckel des Alarmsystems wie oben erwähnt öffnet oder die Drähte zu einem PIR durchtrennt. Es unterscheidet zwischen jedem Zonensabotage über EOL (End of Line) Widerstände. Dies sind Widerstände spezieller Größe, die sich am "Ende der Leitung" befinden - mit anderen Worten, innerhalb des PIR (oder des Sabotageschalters der Steuerbox oder der Sirenenbox oder was auch immer mit dieser Zone verbunden ist). Wie bereits erwähnt, werden diese Widerstände als "Sabotage" verwendet Schutz' - technisch gesehen, wenn jemand die Kabel zu einem PIR durchschneidet - weil das Alarmsystem erwartet, einen bestimmten Widerstand von diesem PIR zu sehen, dann geht es bei einer Änderung des Widerstands davon aus, dass jemand das System manipuliert hat und den Alarm auslöst.

Zum Beispiel:

Bei meinem Alarm hat Zone "Z4" 2 Drähte, einer geht zum PIR in meinem Flur und einer geht zum Sabotageschalter der Alarmzentrale. Im Flur PIR hat es einen 3300 Ohm Widerstand. Das andere Kabel, das zum Sabotageschalter der Steuerbox führt, hat einen 6800-Ohm-Widerstand, der in Reihe geschaltet ist. So unterscheidet die Alarmanlage (logischerweise) zwischen „Z4“und „Z8“Sabotage. Ebenso hat Zone "Z3" einen PIR (mit 3300 Ohm Widerstand darin) und auch den Sirenen-Sabotageschalter (mit 6800 Ohm Widerstand darin), der "Z7" ausmacht. Der Alarminstallateur hätte das Alarmsystem vorkonfiguriert, sodass es weiß, welches Gerät an jede Zone angeschlossen ist (und die Größe des EOL-Widerstands entsprechend angepasst hat, da das Alarmsystem so programmiert ist, dass es die Größe der verschiedenen EOL-Widerstände kennt. Unter Unter keinen Umständen sollten Sie den Wert dieser Widerstände ändern!)

Basierend auf dem oben Gesagten, da an jede Zone mehrere Geräte angeschlossen sein können (mit unterschiedlichen Widerstandswerten) und die Formel V = IR (Spannung = Ampere x Widerstand) berücksichtigt wird, kann dies auch bedeuten, dass jede Zone unterschiedliche Spannungen haben kann. Was uns zum nächsten Schritt führt, indem wir jede Zone im Leerlauf gegen die AUSGELÖSTE Spannung messen…

Schritt 2: Messen der Alarmzonenspannung

Messen der Alarmzonenspannung
Messen der Alarmzonenspannung
Messen der Alarmzonenspannung
Messen der Alarmzonenspannung

Sobald Sie Zugang zur Hauptplatine Ihres Alarmsystems erhalten haben (und den Sabotageschalter umgangen haben, falls vorhanden; wie im vorherigen Schritt beschrieben), schalten Sie Ihr Alarmsystem wieder ein. Wir müssen jetzt die Spannung jeder Zone im Leerlauf messen (keine Bewegung vor dem PIR) vs. AUSGELÖST (PIR hat Bewegung erkannt). Nehmen Sie einen Stift und Papier, damit Sie Ihre Spannungswerte aufschreiben können.

WARNUNG: Der Großteil Ihres Alarmsystems wird höchstwahrscheinlich mit 12 V DC betrieben, es wird jedoch anfänglich mit 220 V (oder 110 V) AC versorgt, wobei ein Transformator den Strom von AC in DC umwandelt. LESEN Sie das Handbuch und treffen Sie zusätzliche Vorsichtsmaßnahmen, um sicherzustellen, dass Sie KEINE AC-Klemmen messen!!! Wie aus dem Screenshot meines Alarmsystems auf dieser Seite hervorgeht, sehen Sie ganz unten im Bild eine Wechselstromversorgung, die in 12 V Gleichstrom umgewandelt wurde. Wir messen die 12V DC in den rot markierten Kästchen. Berühren Sie niemals den Wechselstrom. Seien Sie äußerst vorsichtig!

Messen der PIR-Spannung

Ich habe 4 x PIRs an Z1 bis Z4 angeschlossen. Messen Sie jede Ihrer Zonen wie folgt.

  1. Identifizieren Sie zuerst die GND-Klemme und die Zonenklemmen an der Alarmzentrale. Diese habe ich in der Abbildung aus der Bedienungsanleitung meines Bosch-Alarms hervorgehoben.
  2. Schnappen Sie sich Ihr Multimeter und stellen Sie Ihre Spannungsmessung auf 20 V DC ein. Verbinden Sie das schwarze (COM) Kabel Ihres Multimeters mit dem GND-Anschluss des Alarms. Platzieren Sie das rote (+) Kabel Ihres Multimeters in der ersten Zone - in meinem Fall mit "Z1". Notieren Sie den Spannungswert. Führen Sie die gleichen Schritte für die verbleibenden Zonen durch. Meine Spannungsmessungen sind wie folgt:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Wie oben beschrieben, sind an meinen ersten beiden Zonen nur PIRs angebracht. Die letzten beiden Zonen haben sowohl PIRs als auch einen Sabotageschutz verdrahtet (Z3 Steuerkasten Sabotage, Z4 Sirene Sabotage) Beachten Sie die Spannungsunterschiede.

3. Für diesen nächsten Schritt benötigen Sie wahrscheinlich 2 Personen. Sie müssen auch wissen, welcher PIR sich in welcher Zone befindet. Gehen Sie zurück und lesen Sie die Spannung in der ersten Zone ab. Bringen Sie nun jemanden in Ihrem Haus dazu, vor den PIR zu gehen, die Spannung sollte abfallen. Notieren Sie sich den neuen Spannungswert. In meinem Fall lesen sich die Spannungen beim Auslösen der PIRs wie folgt:

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

Wie oben beschrieben, kann ich sehen, dass beim Auslösen der Zonen 1 und 2 die Spannung von 6,65 V auf 0 V abfällt. Wenn jedoch die Zonen 3 und 4 ausgelöst werden, sinkt die Spannung von 7,92 V auf 4,30 V.

Messung der 12V-Stromversorgung

Wir werden den 12-V-DC-Anschluss von der Alarmsteuerbox verwenden, um unser Projekt mit Strom zu versorgen. Wir müssen die Spannung von der 12-V-DC-Einspeisung des Alarms messen. Obwohl bereits 12 V angegeben sind, müssen wir einen genaueren Messwert kennen. In meinem Fall liest es tatsächlich 13,15 V. Notieren Sie dies, Sie benötigen diesen Wert im nächsten Schritt.

Warum messen wir Spannung?

Der Grund, warum wir die Spannung für jeden PIR messen müssen, liegt in der Schaltung, die wir erstellen werden. Wir werden einen LM339 Quad-Differential-Komparator-Chip (oder Quad-Op-Amp-Komparator) als elektrische Kernkomponente für dieses Projekt verwenden. Der LM339 verfügt über 4 unabhängige Spannungskomparatoren (4 Kanäle), wobei jeder Kanal 2 x Eingangsspannungen nimmt (ein invertierender (-) und ein nicht invertierender (+) Eingang, siehe Diagramm) Wenn die Spannung der invertierenden Eingangsspannung unter sinken sollte die nicht invertierende Spannung, dann wird der zugehörige Ausgang auf Masse gezogen. Ebenso wird der Ausgang auf Vcc hochgezogen, wenn die nicht invertierende Eingangsspannung unter die invertierende Eingangsspannung fällt. Praktischerweise habe ich in meinem Haus 4 x Alarm-PIRs / -zonen - daher wird jede Zone mit jedem Kanal des Komparators verdrahtet. Wenn Sie mehr als 4 x PIRs haben, benötigen Sie einen Komparator mit mehr Kanälen oder einen anderen LM339!

Hinweis: Der LM339 verbraucht Strom in Nanoampere, hat also keinen Einfluss auf den EOL-Widerstand des bestehenden Alarmsystems.

Wenn dies verwirrend ist, fahren Sie trotzdem mit dem nächsten Schritt fort. Sobald wir es verkabeln, wird es sinnvoller!

Schritt 3: Erstellen eines Spannungsteilers

Image
Image

Was ist ein Spannungsteiler?

Ein Spannungsteiler ist eine Schaltung mit 2 x Widerständen (oder mehr) in Reihe. Wir liefern Spannung (Vin) an den ersten Widerstand (R1) Der andere Schenkel von R1 ist mit dem ersten Schenkel des zweiten Widerstands (R2) verbunden, und das andere Ende von R2 ist mit GND verbunden. Wir nehmen dann eine Ausgangsspannung (Vout) von der Verbindung zwischen R1 und R2. Diese Spannung wird unsere Referenzspannung für den LM339. Weitere Informationen zur Funktionsweise von Spannungsteilern finden Sie im YouTube-Video von Adohms

(Hinweis: Widerstände haben keine Polarität, daher können sie in beide Richtungen verdrahtet werden)

Berechnung unserer Referenzspannung

Angenommen, die Spannung fällt ab, wenn Ihr PIR ausgelöst wird (dies sollte bei den meisten Alarmen der Fall sein), dann versuchen wir, einen Spannungswert zu erhalten, der ungefähr auf halbem Weg zwischen unserer niedrigsten Leerlaufspannung und unserer höchsten ausgelösten Spannung liegt. dies wird unsere Referenzspannung.

Nimm meinen Wecker als Beispiel…

Die Zonenleerlaufspannungen waren Z1 = 6,65 V, Z2 = 6,65 V, Z3 = 7,92 V, Z4 = 7,92 V. Die niedrigste Leerlaufspannung beträgt daher 6,65V

Die zonengetriggerten Spannungen waren: Z1 = 0 V, Z2 = 0 V, Z3 = 4,30 V, Z4 = 4,30 V. Die höchste ausgelöste Spannung beträgt daher 4,30 V

Wir müssen also eine Zahl auf halbem Weg zwischen 4,30 V und 6,65 V auswählen (muss nicht genau sein, nur grob). In meinem Fall muss meine Referenzspannung etwa 5,46 V betragen. Hinweis: Wenn die niedrigste Leerlaufspannung und die höchste ausgelöste Spannung sehr nahe beieinander liegen, da mehrere Zonen eine Reihe unterschiedlicher Spannungen verursachen, müssen Sie möglicherweise 2 oder mehr Spannungsteiler erstellen.

Berechnung unserer Widerstandswerte für den Spannungsteiler

Jetzt haben wir eine Referenzspannung, wir müssen berechnen, welche Widerstandsgröße wir benötigen, um einen Spannungsteiler zu erstellen, der unsere Referenzspannung liefert. Wir verwenden die 12-V-Gleichspannungsquelle (Vs) des Alarms. Wie im vorherigen Schritt, als wir die 12-V-DC-Einspeisung gemessen haben, haben wir jedoch tatsächlich 13,15 V erhalten. Wir müssen den Spannungsteiler mit diesem Wert als Quelle berechnen.

Berechnen Sie Vout mit dem Ohmschen Gesetz…

Vout = Vs x R2 / (R1 + R2)

…oder verwenden Sie einen Online-Spannungsteiler-Rechner:-)

Sie müssen mit den Widerstandswerten experimentieren, bis Sie Ihren gewünschten Ausgang erreichen. In meinem Fall hat es mit R1 = 6,8 kOhm und R2 = 4,7 kOhm geklappt, berechnet in Langform wie folgt:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805 / 11, 500

Vout = 5,37 V

Schritt 4: Verdrahten Sie den LM339

Verkabeln des Wemos D1 Mini
Verkabeln des Wemos D1 Mini

Spannungsteiler zu LM339 invertierenden Eingängen

Wie bereits in Bezug auf den LM339-Komparator besprochen, benötigt er 2 x Eingänge. Eine ist eine Spannung von jedem PIR an den nicht invertierenden (+) Anschluss jedes Kanals, die andere ist unsere Referenzspannung an unserem invertierenden (-) Anschluss. Die Referenzspannung muss alle 4 invertierenden Komparatoreingänge speisen. Schalten Sie Ihr Alarmsystem aus, bevor Sie diese Schritte ausführen.

  • Führen Sie ein Kabel vom 12-V-DC-Block des Alarmsystems zur + Schiene Ihres Steckbretts *
  • Führen Sie ein Kabel vom GND-Block des Alarmsystems zur - Schiene auf Ihrem Steckbrett **
  • Installieren Sie den LM339-Komparator in der Mitte des Steckbretts (die Kerbe zeigt am nächsten an Pin 1)
  • Installieren Sie die 2 x Widerstände, um eine Spannungsteilerschaltung und einen Draht für den geteilten Spannungsausgang zu erstellen
  • Führen Sie die Drähte von der "spannungsgeteilten" Vout zu jedem invertierenden Terminal des LM339

* TIPP: Verwenden Sie nach Möglichkeit eine Krokodilklemme für die Stromversorgung, da dies das Ein- und Ausschalten Ihres Projekts erleichtert** WICHTIG! Ein MOSFET kann erforderlich sein, WENN Sie das Wemos über die Alarmzentrale mit Strom versorgen! In meinem Fall werden LM339, Wemos und Alarm alle von derselben Quelle (dh: dem Alarmsystem selbst) mit Strom versorgt. Dadurch kann ich alles mit einem einzigen Stromanschluss einschalten. Die GPIO-Pins des Wemos sind jedoch standardmäßig als "INPUT" -Pins definiert. t abstürzen oder ausbrennen. In meinem Fall wird das Alarmsystem mit Strom versorgt und beginnt sehr schnell mit der Boot-Sequenz - so schnell, dass es dies tut, bevor das Wemos hochfahren und die GPIO-Pins als "INPUT_PULLUP" deklarieren kann (Spannung wird intern innerhalb der Chip). Dies bedeutet nicht, dass die Spannungsunterschiede den Wemos zum Absturz bringen würden, wenn das gesamte System mit Strom versorgt wird. Der einzige Weg, dies zu umgehen, besteht darin, den Wemos manuell aus- und wieder einzuschalten. Um dies zu lösen, wird ein MOSFET hinzugefügt, der als "logischer Schalter" zum Einschalten des LM339 fungiert. Dadurch kann der Wemos hochfahren, seine 4 x Komparator-GPIO-Pins als "INPUT_PULLUP's" einstellen, einige Sekunden verzögern und DANN (über einen anderen GPIO-Pin D5, der als OUTPUT definiert ist) ein "HIGH"-Signal über GPIO-Pin D5 an den MOSFET senden. was den LM339 logischerweise einschaltet. Ich würde empfehlen, wie oben beschrieben zu verdrahten, aber wenn Sie feststellen, dass der Wemos wie ich abstürzt, müssen Sie den MOSFET mit einem 1k Ohm Pulldown-Widerstand einschließen. Weitere Informationen dazu finden Sie am Ende dieser Anleitung.

Alarmzonen an nicht invertierenden Eingängen des LM339

Wir müssen jetzt Kabel von jeder Zone auf der Alarmzentrale zu den Komparatoreingängen des LM339 verlegen. Führen Sie bei ausgeschaltetem Alarmsystem für jede Zone einen Draht zu jedem nicht invertierenden (+) Eingang des LM339-Komparators. In meinem System zum Beispiel:

  • Draht von Z1 geht zu LM339 Eingang 1+
  • Draht von Z2 geht zu LM339 Eingang 2+
  • Draht von Z3 geht zu LM339 Eingang 3+
  • Draht von Z4 geht zu LM339 Eingang 4+

Beachten Sie die Pinbelegung des LM339 unter Schritt 3, wenn Sie daran denken (es ist mit dem Steckbrettbild farbcodiert). Sobald Sie fertig sind, sollte Ihr Steckbrett ähnlich dem in diesem Schritt gezeigten Bild aussehen.

Schalten Sie das Alarmsystem ein und messen Sie die aus dem Spannungsteiler kommende Spannung, um sicherzustellen, dass sie Ihrer zuvor berechneten Referenzspannung entspricht.

Schritt 5: Verdrahten des Wemos D1 Mini

Verkabelung des Wemos D1 mini

Nachdem wir alle Eingänge des LM339 erledigt haben, müssen wir jetzt das Wemos D1 mini verdrahten. Jeder LM339-Ausgangspin geht an einen Wemos GPIO (General Purpose Input/Output)-Pin, den wir per Code als Input-Pullup-Pin bezeichnen. Der Wemos nimmt als Vcc-Spannung (Eingangsquelle) maximal 5 V auf (obwohl dies intern auf 3,3 V geregelt wird). 5V zur Stromversorgung des Wemos. Das Datenblatt für den LM7805 zeigt an, dass wir auf jeder Seite des Reglers einen Kondensator benötigen, um die Leistung zu glätten, wie auf dem Steckbrettbild gezeigt. Der längere Schenkel des Kondensators ist positiv (+), also stellen Sie sicher, dass dieser richtig verdrahtet ist.

Der Spannungsregler nimmt Spannung (linker Pin), Masse (mittlerer Pin) und Spannung (rechter Pin) auf. Überprüfen Sie die Pinbelegung, wenn Ihr Spannungsregler vom LM7805 abweicht.

(BEARBEITEN: Ich habe festgestellt, dass die von der Alarmtafel kommenden Ampere für den LM7805 zu hoch waren. Dies verursachte viel Hitze im kleinen Kühlkörper des LM7805 und führte zu einem Ausfall und wiederum dazu, dass der Wemos stoppte Ich habe den LM7805 und die Kondensatoren stattdessen durch einen DC-DC-Abwärtswandler ersetzt und seitdem keine Probleme mehr gehabt. Diese sind sehr einfach zu verdrahten. Einfach die Eingangsspannung vom Alarm anschließen, zuerst an ein Multimeter anschließen und die Potentiometerschraube verwenden und justieren, bis die Ausgangsspannung ~5V beträgt)

GPIO-Eingangspins

Für dieses Projekt verwenden wir die folgenden Pins:

  • Zone Z1 => Stift D1
  • Zone Z2 => Stift D2
  • Zone Z3 => Stift D3
  • Zone Z4 => Stift D5

Verdrahten Sie die Ausgänge des LM339 mit den entsprechenden GPIO-Pins auf der Wemos-Platine, wie in diesem Schritt gezeigt. Auch hier habe ich die Eingänge und die passenden Ausgänge farbcodiert, um leichter zu erkennen, was sich auf was bezieht. Jeder GPIO-Pin im Arduino ist als 'INPUT_PULLUP' definiert, was bedeutet, dass sie bei normalem Gebrauch (IDLE) auf 3,3 V hochgezogen werden und der LM339 sie auf Masse zieht, wenn der PIR ausgelöst wird. Der Code erkennt die Änderung von HOCH zu NIEDRIG und sendet eine Nachricht drahtlos an Ihre Hausautomationssoftware. Wenn Sie Probleme mit dieser Funktion haben, ist es möglich, dass Sie Ihre invertierenden und nicht invertierenden Eingänge falsch herum haben (wenn die Spannung von Ihrem PIR beim Auslösen hoch wird, wie dies bei den meisten Hobby-PIRs der Fall ist, dann möchten Sie, dass die Verbindungen die anders herum)

Arduino-IDE

Entfernen Sie das Wemos vom Steckbrett, wir müssen jetzt Code darauf hochladen (alternativer Link hier). Ich werde nicht näher darauf eingehen, da es im Internet viele Artikel zum Hochladen von Code auf Wemos oder andere ESP8266 gibt Typentafeln. Stecken Sie Ihr USB-Kabel in das Wemos-Board und in Ihren PC und starten Sie die Arduino IDE. Laden Sie den Code herunter und öffnen Sie ihn in Ihrem Projekt. Sie müssen sicherstellen, dass das richtige Board für Ihr Projekt installiert und geladen ist sowie der richtige COM-Port ausgewählt ist (Tools, Port). Sie müssen auch die entsprechenden Bibliotheken installiert haben (PubSubClient, ESP8266Wifi). Um das Wemos-Board in Ihrem Sketch zu erhalten, lesen Sie diesen Artikel.

Sie müssen die folgenden Codezeilen ändern und durch Ihre eigene SSID und Ihr eigenes Passwort für Ihre drahtlose Verbindung ersetzen. Ändern Sie außerdem die IP-Adresse so, dass sie auf Ihren eigenen MQTT-Broker verweist.

// W-lan

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

Überprüfen Sie nach der Änderung Ihren Code und laden Sie ihn dann über ein USB-Kabel auf das Wemos-Board hoch.

Anmerkungen:

  • Wenn Sie verschiedene GPIO-Ports verwenden, müssen Sie den Code anpassen. Wenn Sie mehr oder weniger Zonen verwenden als ich, müssen Sie auch den Code und TOTAL_ZONES=4; konstant passend.
  • Beim Hochfahren meines Alarmsystems führte das Alarmsystem einen Leistungstest an allen 4 x PIRs durch, der alle angeschlossenen GPIOs auf Masse zog, was dazu führte, dass die Wemos dachten, die Zonen würden ausgelöst. Der Code ignoriert das Senden von MQTT-Nachrichten, wenn alle 4 x Zonen gleichzeitig aktiv sind, da er davon ausgeht, dass das Alarmsystem hochfährt.

Alternativer Download-Link zum Code HIER

Schritt 6: Testen und OpenHAB-Konfiguration

Testen und OpenHAB-Konfiguration
Testen und OpenHAB-Konfiguration

MQTT-Tests

MQTT ist ein "Subscribe / Publish"-Messaging-System. Ein oder mehrere Geräte können mit einem „MQTT-Broker“kommunizieren und ein bestimmtes Thema „abonnieren“. Alle eingehenden Nachrichten von einem anderen Gerät, die zu demselben Thema "veröffentlicht" werden, werden vom Broker an alle Geräte gesendet, die es abonniert haben. Es ist ein extrem leichtes und einfach zu verwendendes Protokoll und perfekt als einfaches Triggersystem wie das hier beschriebene. Zu Testzwecken können Sie eingehende MQTT-Nachrichten von Wemos an Ihren MQTT-Broker anzeigen, indem Sie den folgenden Befehl auf Ihrem Mosquitto-Server ausführen (Mosquitto ist eine von vielen verfügbaren MQTT-Broker-Software). Dieser Befehl abonniert eingehende Keepalive-Nachrichten:

mosquitto_sub -v -t openhab/alarm/status

Sie sollten alle 30 Sekunden eingehende Nachrichten vom Wemos mit der Zahl "1" sehen (bedeutet "Ich lebe"). Wenn Sie konstante "0" (oder keine Antwort) sehen, gibt es keine Kommunikation. Sobald Sie die Nummer 1 sehen, bedeutet dies, dass Wemos mit dem MQTT-Broker kommuniziert (suchen Sie nach "MQTT Last Will and Testament", um mehr darüber zu erfahren, wie dies funktioniert, oder sehen Sie sich diesen wirklich guten Blogeintrag an).

Sobald Sie nachgewiesen haben, dass die Kommunikation funktioniert, können wir testen, ob ein Zonenstatus über MQTT gemeldet wird. Abonnieren Sie das folgende Thema (das # ist ein Platzhalter)

mosquitto_sub -v -t openhab/alarm/#

Es sollten die üblichen Statusmeldungen eingehen, ebenso wie die IP-Adresse des Wemos selbst. Gehen Sie vor ein PIR, und Sie sollten auch die Zoneninformationen sehen, die anzeigen, dass es OFFEN ist, und eine Sekunde später, dass es GESCHLOSSEN ist, ähnlich wie folgt:

offenhab/alarm/status 1

offenhab/alarm/zone1 OFFEN

offenhab/alarm/zone1 GESCHLOSSEN

Sobald dies funktioniert, können wir OpenHAB so konfigurieren, dass dies in der GUI schön dargestellt wird.

OpenHAB-Konfiguration

Folgende Änderungen sind für OpenHAB erforderlich:

'alarm.map' Transformationsdatei: (optional, zum Testen)

CLOSED=IdleOPEN=TriggeredNULL=Unbekannt-=Unbekannt

Transformationsdatei 'status.map':

0=Fehlgeschlagen

1=Online -=DOWN! NULL=unbekannt

'items'-Datei:

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 Chart" Kontakt alarmZone1State "Zone 1 State [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 Chart" Kontakt alarmZone2State "Zone 2 State [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" Kontakt alarmZone3State "Zone 3 State [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone3:state:default" } String alarmZone3Trigger "Schlafzimmer PIR [%1$ta %1$tr]" Zahl zone4_Chart_Period "Zone 4 Chart" Kontakt 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'-Datei (einschließlich rrd4j-Grafiken):

Text item=alarmZone1Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone1_Chart_Period label= "Period"-Mappings=[0="Stunde", 1="Tag", 2="Woche"] Image url="https://localhost:8080/rrdchart.png" visible=[zone1_Chart_Period==0, zone1_Chart_Period= =Nicht initialisiert] Bild url="https://localhost:8080/rrdchart.png" Sichtbarkeit=[zone1_Chart_Period==1] Bild url="https://localhost:8080/rrdchart.png" Sichtbarkeit=[zone1_Chart_Period==2] } } Text item=alarmZone2Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Item wechseln= zone2_Chart_Period label="Period" mappings=[0="Stunde", 1="Tag", 2="Woche"] Image url="https://localhost:8080/rrdchart.png" visible=[zone2_Chart_Period==0, zone2_Chart_Period==Uninitialized] Image url="https://localhost:8080/rrdchart.png" visible=[zone2_Chart_Period==1] Image url="https://localhost:8080/rrdchart.png" visible=[zone2_Chart_Period ==2] } } Textelement=alarmZone3Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone3_Chart_Period label="Period" Zuordnungen =[0="Stunde", 1="Tag", 2="Woche"] Image url="https://localhost:8080/rrdchart.png" visible=[zone3_Chart_Period==0, zone3_Chart_Period==Nicht initialisiert] Image url="https://localhost:8080/rrdchart.png" visible=[zone3_Chart_Period==1] Bild url="https://localhost:8080/rrdchart.png" visible=[zone3_Chart_Period==2] } } Text item=alarmZone4Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone4_Chart_Period label=" Zeitraum" Zuordnungen=[0="Stunde", 1="Tag", 2="Woche"] Image url="https://localhost:8080/rrdchart.png" visible=[zone4_Chart_Period==0, zone4_Chart_Period== Nicht initialisiert] Image url="https://localhost:8080/rrdchart.png" visible=[zone4_Chart_Period==1] Image url="https://localhost:8080/rrdchart.png" visible=[zone4_Chart_Period==2] } } // OPTIONAL, aber praktisch für die Diagnose von Status und IP-Adresse ss Textelement=alarmMonitorState Textelement=alarmMonitorIPAddress

'Regeln'-Datei:

Regel "Alarmzone 1 Zustandsänderung"

Wenn das Element alarmZone1State in OPEN geändert wurde, dann postUpdate(alarmZone1Trigger, new DateTimeType()) alarmZone1State.state = CLOSED end

Regel "Alarmzone 2 Zustandsänderung"

Wenn das Element alarmZone2State in OPEN geändert wurde, dann postUpdate(alarmZone2Trigger, new DateTimeType()) alarmZone2State.state = CLOSED end

Regel "Alarm Zone 3 Zustandsänderung"

Wenn das Element alarmZone3State in OPEN geändert wurde, dann postUpdate(alarmZone3Trigger, new DateTimeType()) alarmZone3State.state = CLOSED end

Regel "Alarm Zone 4 Zustandsänderung"

Wenn das Element alarmZone4State in OPEN geändert wurde, dann postUpdate(alarmZone4Trigger, new DateTimeType()) alarmZone4State.state = CLOSED end

Möglicherweise müssen Sie die obige OpenHAB-Konfiguration leicht ändern, um sie an Ihr eigenes Setup anzupassen.

Wenn Sie Probleme mit der Auslösung von PIRs haben, beginnen Sie von vorne und messen Sie die Spannungen für jeden Teil der Schaltung. Wenn Sie damit zufrieden sind, überprüfen Sie Ihre Verkabelung, stellen Sie sicher, dass eine gemeinsame Basis besteht, überprüfen Sie Nachrichten auf dem Wemos über eine serielle Debug-Konsole, überprüfen Sie die MQTT-Kommunikation und überprüfen Sie die Syntax Ihrer Transformations-, Item- und Sitemap-Dateien.

Viel Glück!

Empfohlen: