DIY Smart Home Sensoren mit Arduino, MySensors und OpenHAB

Smart-Home-Sensoren kosten eine lächerliche Menge Geld. Ein ganzes Haus zu verdrahten ist die Domäne von Leuten mit albernen Mengen verfügbaren Einkommens. Lass uns mit MySensors unser eigenes bauen.

Smart-Home-Sensoren kosten eine lächerliche Menge Geld.  Ein ganzes Haus zu verdrahten ist die Domäne von Leuten mit albernen Mengen verfügbaren Einkommens.  Lass uns mit MySensors unser eigenes bauen.
Werbung

Smart-Home-Sensoren kosten eine lächerliche Menge Geld. Bei $ 60- $ 100, nur für einen Bewegungsmelder oder Feuchtigkeitssensor, wird die Verkabelung eines ganzen Hauses zur Domäne von Leuten mit dummen Mengen an verfügbarem Einkommen. Lass uns unsere eigenen bauen.

Glücklicherweise wurde die harte Arbeit von den netten Leuten hinter MySensors.org bereits geleistet. Heute zeige ich Ihnen, wie Sie mit dem MySensors-Framework ein billiges Array von Smart-Home-Sensoren erstellen, die in eine OpenHAB-Installation einfließen können (siehe unsere Einführung in OpenHAB auf Raspberry Pi). Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi OpenHAB ist eine ausgereifte Open-Source-Plattform für die Heimautomatisierung, die auf einer Vielzahl von Hardware läuft und protokollunabhängig ist, sodass sie sich mit nahezu jeder auf dem Markt befindlichen Hausautomatisierungs-Hardware verbinden kann. Weiterlesen . Ich nehme an, Sie haben bereits einen funktionierenden MQTT-Server und verstehen die Grundlagen des MQTT-Nachrichtenformats. Wenn nicht, lesen Sie unbedingt das Follow-up zum OpenHAB-Handbuch, das Anweisungen zur Installation eines MQTT-Servers enthält. OpenHAB Einsteigerhandbuch Teil 2: ZWave, MQTT, Regeln und Charts OpenHAB Anfängerleitfaden Teil 2: ZWave, MQTT, Regeln und Charting OpenHAB, die Open-Source-Hausautomatisierungs-Software, weit übertrifft die Möglichkeiten anderer Hausautomationssysteme auf dem Markt - aber es ist nicht einfach, sich einzurichten. In der Tat kann es geradezu frustrierend sein. Weiterlesen .

Obwohl ich mich speziell mit der Weiterleitung der MySensors-Daten von einem Netzwerk von Arduinos unter Verwendung von MQTT zu einer OpenHAB-Installation befasse, sollte ich darauf hinweisen, dass das MySensors-Framework in eine Reihe verschiedener Heimautomations-Controller einspeisen kann. Ich habe dies hier als eine vollständige Lösung vorgestellt, die für mich funktioniert, aber bitte sehen Sie sich die MySensors-Website an, da Sie vielleicht feststellen, dass sie auch für Ihren ähnlichen Zweck geeignet ist, aber leicht abweichende Hardware oder ein anderes Messaging-Protokoll verwendet. Es ist unglaublich vielseitig.

Meine Sensoren Hardware -1

Die Hardwarekosten für mein Setup liegen unter $ 10 pro Knoten (etwas mehr für das Gateway), aber zusätzliche Sensoren und Aktuatoren können für sehr wenig hinzugefügt werden (der DHT11 Feuchtigkeits- und Temperatursensor ist zum Beispiel etwa $ 1; ein Hochspannungsrelais) ist um 3 $).

Was wir machen

Die Grundidee besteht darin, dass wir, anstatt unser bestehendes dichtes lokales Netzwerk mit unzuverlässigem Wi-Fi oder teuren Ethernet-Shields zu erweitern, ein völlig separates mesh-fähiges Netzwerk nur für die Arduinos erstellen; dann überbrücken Sie das mit dem lokalen Netzwerk über einen einzelnen Gateway-Knoten, der sowohl eine Ethernet-Verbindung als auch eine Funkverbindung zu den anderen Arduinos hat. Wir machen also ein paar Sensorknoten, die Daten sammeln; und einen Gateway-Knoten, der diese Daten an den OpenHAB-Server weiterleitet.

Auch das funktioniert für mich, denn mein Wi-Fi-Empfang ist so entsetzlich und ich möchte ihn nicht mit unnötigen Daten durcheinander bringen. Wenn Sie mit Wi-Fi zufrieden sind, schauen Sie sich die kostengünstigen Arduino-kompatiblen ESP8266 an. Lernen Sie den Arduino-Killer kennen: ESP8266 Lernen Sie den Arduino-Killer kennen: ESP8266 Was ist, wenn ich Ihnen ein Arduino-kompatibles Dev-Board mit eingebautem Wi vorstelle? -Fi für weniger als 10 $? Nun, da ist es. Lesen Sie mehr mit integrierten Wi-Fi-Boards - MySensors unterstützt diese auch.

Wichtiger Hinweis für Benutzer von El Capitan und Arduino Clones: Apple konnte die seriellen Treiber für die Kommunikation mit einer Reihe von Arduino-Clone-Boards in der neuesten Version von El Capitan durch neue Sicherheitsmaßnahmen durchbrechen. Um zu sehen, ob Sie betroffen sind, schauen Sie sich Ihr Board und den Chip an, der dem USB-Port am nächsten ist. Wenn es CH340 heißt, sind Sie davon betroffen. Befolgen Sie die Anweisungen hier, um das Treiber-Kext-Signing zu deaktivieren, und installieren Sie die seriellen CH340-Treiber erneut.

Komponenten benötigt

Für das Gateway benötigen Sie:

  • Arduino Uno
  • Ethernet Shield (W5100 basierend)
  • NRF24L01 Modul - Ich habe die + PA + LNA Versionen verwendet, die eine erhöhte Reichweite von bis zu 1km haben. Die Verdrahtung ist die gleiche, die Sie wählen.

Für jeden Sensorknoten:

  • Arduino Uno
  • NRF24L01 Modul
  • Sensoren (zu Beginn würde ich ein DHT11- oder DHT22-Modul für Temperatur und Luftfeuchtigkeit vorschlagen)

Zusätzlich / Optional:

  • 10uF Kondensatoren, eine für jedes HF-Modul, das Sie haben (der Link ist für eine Packung von 50!)
  • Netzteil mit 5V und 3, 3V Ausgang (YwRobot MB102 funktioniert gut und sie sind jeweils 1 $) - benötigt, wenn Sie einen Klon Arduino verwenden. Sie benötigen auch eine 9-12V DC-Stromversorgung für diese.
  • Prototyping Shields oder kurze männlich-weibliche Überbrückungskabel.

Arbeiten mit NRF24L01 Modulen

Beginnen wir mit den NRF24L01-Modulen, denn sie sind der komplexeste Teil des Projekts. Ich entschied mich für die teurere Version mit längerer Reichweite: technisch bekannt als NRF24L01 + PA + LNA . Sie kommen mit einer on-board Signalverstärkungsschaltung und Antennenverbindung, obwohl ich schlage vor, dass Sie die preiswertere Nicht-Antennenversion der Module zuerst probieren, wenn Sie ein normales Haus mit regelmäßigen Wänden haben, nicht die meterdicke feste Steinart der Wand Ich mache. Die beanspruchte Reichweite von diesen beträgt etwa einen Kilometer, mehr als genug für mich in den Gartenschuppen gestellt.

Diese Dinge sind jedoch sehr schwierig zu bearbeiten. Wenn Sie weitermachen und alles einstecken, ohne zuerst diese Tipps zu lesen, werden Sie enttäuscht sein.

  • Das Modul benötigt 3, 3 V Eingangsspannung zum VCC-Pin - nicht 5 V. Wenn du 5v eingibst, wirst du es braten.
  • Löten Sie einen 10uF-Kondensator über die VCC / GND-Anschlüsse. Die durchgezogene graue Linie am Kondensator zeigt die negative / GND-Seite an.
  • Verwenden Sie kurze, hochwertige Sprungseile; oder noch besser, löten Sie sie direkt an eine Prototyping-Abschirmung, um die Kabellänge auf ein Minimum zu beschränken und solide Verbindungen zu erhalten.
  • Wenn Sie einen Arduino-Klon verwenden, bietet der Spannungsregler nicht genügend Spannung für 3, 3-V-Pins - Sie müssen eine externe Stromversorgungsplatine (oben verlinkt) verwenden, die für jeweils $ 1 erhältlich ist. Diese bieten eine stabile 3.3v. Wenn Sie eine Original- Arduino-Marke Uno verwenden, scheint dies kein Problem zu sein.

Ich schlage vor, dass Sie zuerst einige grundlegende Tests durchführen, nur um festzustellen, dass Ihr Radio funktioniert. Verbinden Sie zwei Radios wie auf der MySensors-Seite angezeigt. Es spielt keine Rolle, dass ihr Diagramm Arduino Micro Boards zeigt - die gleichen Pin-Nummern werden verwendet. Beachten Sie, dass das Diagramm den NRF24L01 von oben zeigt ; Sie werden tatsächlich Dinge von der Unterseite einstecken . Passen Sie sich entsprechend an. Ignoriere den grauen IRQ-Pin, der momentan nicht verwendet wird. Zusammenfassend:

  • VCC geht auf 3, 3 V an Ihrer externen Stromversorgung
  • GND geht zur gemeinsamen Bodenschiene
  • CE zu Pin 9
  • CSN / CS an Pin 10
  • MOSI an Pin 11
  • MISO an Pin 12
  • SCK an Pin 13

Verdrahtung von meiner Sensorseite

Sie benötigen zwei vollständig verdrahtete Knoten zum Testen. Laden Sie die RF24-Bibliothek herunter und laden Sie das einfachste Getting Started- Beispiel. Schalten Sie beide Module ein, lassen Sie jedoch einen über USB angeschlossen und öffnen Sie die serielle Konsole. Geben Sie "T" ein und senden Sie es, um es in den Übertragungsmodus zu versetzen. An diesem Punkt sollten Sie Debug-Meldungen erhalten, die besagen, dass es erfolgreich eine Nachricht an den anderen Knoten sendet.

Erstellen der MySensors MQTT-Client-Gateway

Ok, jetzt, da wir wissen, dass die RF24-Funkgeräte korrekt angeschlossen sind und funktionieren, laden Sie den Entwicklungszweig des MySensors-Arduino-Pakets herunter. Dieses Tutorial wurde mit Version 1.5 geschrieben, sollte aber auch mit späteren Versionen in Ordnung sein. Wir verwenden den Entwicklungszweig, da das MQTT- Client- Gateway zu diesem Zeitpunkt noch nicht Teil des Hauptpakets ist.

Obwohl MQTTGateway im Master-Zweig verfügbar ist, fungiert es auch als Server, was wir nicht möchten, da wir bereits einen stabilen MQTT-Server auf dem Raspberry Pi haben. Wir möchten nur die MySensors-Daten dorthin weiterleiten. Wenn Sie nicht möchten, dass MQTT überhaupt verwendet wird, dann schauen Sie sich EthernetGateway oder SerialGateway an, die beide ebenfalls mit OpenHAB kompatibel sind.

Es ist erwähnenswert, dass das Download-Paket nicht nur wichtige MySensors-Dateien enthält, sondern auch kompatible Bibliotheken, die für jeden möglichen Sensor benötigt werden. Um Konflikte zu vermeiden, würde ich vorschlagen, den gesamten aktuellen Bibliotheksordner zu sichern und ihn durch die im Download-Paket zu ersetzen.

Die Verkabelung für das Gateway ist etwas anders; Sobald Sie Ihre Ethernet-Abschirmung haben, verwenden Sie die folgenden Pins für das Funkmodul:

  • CE an Pin 5
  • CSN zu Pin 6
  • SCK an Pin A0
  • MOSI an Pin A1
  • MISO an Pin A2

Sie müssen auch die Zeile #define SOFTSPI in der Datei libraries / mySensors / MyConfig.h aktivieren . Tun Sie dies, indem Sie das // entfernen, um es auskommentieren, es ist um Linie 309 auf meiner.

Wir müssen dies tun, weil sowohl das Funkmodul als auch das Netzwerkschild SPI verwenden und nicht kompatibel sind. Also verschieben wir einfach das Funkmodul SPI auf einige andere Pins und führen stattdessen SPI-Kommunikation in Software durch (daher Soft- SPI).

Laden Sie die Skizze MySensors / GatewayW5100MQTTClient . Wenn Sie dies nicht im Menü MySensors sehen, ist der Entwicklungszweig nicht installiert. Verwenden Sie den oben angegebenen Link, um die gesamte Bibliothek erneut herunterzuladen.

Mysensor-Gateway

Sie müssen eine statische IP-Adresse für den Controller, die IP Ihres Netzwerk-Routers und Subnetzes sowie die IP-Adresse Ihres vorhandenen MQTT-Servers definieren. Fühlen Sie sich frei, die Themenpräfixe auch zu ändern, wenn Sie mögen. Hochladen und das Ding in das Netzwerk einstecken. Überprüfen Sie kurz die serielle Konsole auf eklatante Fehler, z. B. wenn Sie keine Verbindung zu Ihrem MQTT-Server herstellen können, andernfalls stellen Sie sie beiseite (lassen Sie sie jedoch eingeschaltet).

IP-Adressen zu ändern

Aufbau der Sensorknoten

Kommentieren Sie zuerst die Zeile #define SOFTSPI in der Datei MyConfig.h erneut, indem Sie // an den Anfang setzen. Es wird nur für das Gateway benötigt - wir verwenden die Standard-NRF24L01-Verkabelung für die Sensorknoten, die Hardware-SPI verwenden. Wenn Sie daran erinnern müssen:

  • VCC geht zu 3.3v auf Ihrem externen Netzteil (oder auf dem Arduino selbst, wenn es ein Original und kein Klon ist)
  • GND geht zur gemeinsamen Bodenschiene
  • CE zu Pin 9
  • CSN / CS an Pin 10
  • MOSI an Pin 11
  • MISO an Pin 12
  • SCK an Pin 13

Weiter, verdrahten Sie Ihre Wahl des Sensors; Ich benutze den DHT11 Feuchtigkeits- und Temperatursensor zum Testen, aber wenn Sie zur Liste der Sensoren und Aktuatoren in der Seitenleiste der MySensors-Seite runterscrollen, finden Sie eine riesige Auswahl an anderen Optionen: Türen, Regenmesser, Licht, Bewegung, gerade RFID - und lädt mehr. Sie können sehen, dass ich dem Knoten, der unten abgebildet ist, auch ein Relais hinzugefügt habe, aber dazu später mehr.

Meine Sensoren Hardware -2

Laden Sie schließlich das HumiditySensor- Beispiel aus dem Menü MySensors und fügen Sie unmittelbar nach den Kommentaren die folgende Zeile hinzu.

 #define MY_NODE_ID 2 

Da wir eine spezielle Version des Controllers verwenden, die Dinge einfach auf unseren eigenen MQTT-Server weiterleitet, verfügt sie nicht über die Standard-Controller-Funktion, die jedem neuen Knoten automatisch Knoten-IDs zuweist. Stattdessen werden wir es nur jedes Mal manuell definieren. Notieren Sie diese Nummer irgendwo für Ihre eigenen Aufzeichnungen und ändern Sie sie für jeden Knoten.

Aktivieren Sie auch die Debug-Ausgabe:

 #define MY_DEBUG 

Überprüfen Sie abschließend, ob der Datenstift Ihres DHT11-Sensors korrekt ist.

 #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

Dann lade hoch!

Es lohnt sich, die serielle Konsole zu öffnen, um einen Blick darauf zu werfen. Das entscheidende zu suchende Bit ist st =, was der Status der Nachricht ist. st = fail bedeutet, dass die Nachricht nicht gesendet wurde. Es ist möglich, dass Sie keine eindeutige Knoten-ID definiert haben oder dass Ihr Gateway offline ist. Ich habe diese Fehler gefälscht, indem ich einfach den Netzstecker gezogen habe:

st-fail

Wenn alles funktioniert, sollten Sie anfangen, einige Datenlesungen auf Ihrem MQTT-Server zu sehen. Diese in OpenHAB zu integrieren, würde den Rahmen dieses Tutorials sprengen, wurde aber in Teil 2 des OpenHAB Leitfadens behandelt. OpenHAB Anfängerleitfaden Teil 2: ZWave, MQTT, Regeln und Charts OpenHAB Anfängerleitfaden Teil 2: ZWave, MQTT, Regeln und Charting OpenHAB, Die Open-Source-Hausautomatisierungs-Software übertrifft bei weitem die Möglichkeiten anderer Hausautomatisierungssysteme auf dem Markt - aber es ist nicht einfach, sie einzurichten. In der Tat kann es geradezu frustrierend sein. Lesen Sie weiter, damit Sie sich dort wieder beziehen können.

Kombinieren des Sensorcodes

Obwohl es relativ einfach ist, einen einzelnen Sensorknoten in Betrieb zu nehmen, wird es etwas komplizierter, wenn Sie jedem Knoten mehrere Sensoren hinzufügen möchten. Im Wesentlichen werden Sie die Codeschnipsel aus zwei verschiedenen Beispielen zusammenfügen. Der einfachste Weg, dies zu zeigen, ist ein Beispiel mit einem Video! Hier kombiniere ich unseren Grundfeuchtesensor mit einem Relais.

Den vollständigen Code für Feuchtesensor und Relais finden Sie hier, der bereits mit einer nicht blockierenden Schleife modifiziert wurde, wie ich im Video erwähnt habe. Wenn Sie mehr über die MQTT-Befehlsstruktur erfahren möchten, die zum Aktivieren des Relays erforderlich ist, überprüfen Sie die serielle API. Aber es genügt zu sagen, dass der folgende Kanal das erste Relay im Code steuert (mit einem Nachrichtentext von 0 oder 1):

 MeinSensoren-in / 9/1/1/0/2 

Ihre einzige Einschränkung ist jetzt die Menge an Speicher auf dem Arduino, und ich sage dies - die zuverlässigsten Sensoren in meinem Smart Home sind nicht die kommerziellen Z-Wave-Module, die $ 80 kosten, sondern die benutzerdefinierten MySensors.

Ich werde es heute beenden, aber wenn Sie Probleme haben, können Sie in den Kommentaren oder den sehr aktiven Benutzerforen von MySensors fragen. Werden Sie Ihre eigenen billigen Sensorknoten zusammenstellen? Wie kommt dein Smart Home?

In this article