Hausautomationshandbuch mit Raspberry Pi und Arduino

Hausautomationshandbuch mit Raspberry Pi und Arduino / Intelligentes Zuhause

Wir haben bereits über die relativen Vorzüge von Arduino und Raspberry Pi gesprochen - sie haben jeweils ihre Stärken. Sie müssen jedoch keine Wahl oder Wahl sein - kombinieren Sie sie, um das Beste aus beiden Welten zu erhalten. Die Hausautomation ist dafür der perfekte Kandidat. Der Markt für Hausautomation ist mit teuren Verbrauchersystemen überflutet, die nicht miteinander kompatibel sind und deren Installation kostspielig ist. Wenn Sie einen Raspberry Pi haben: Raspberry Pi: Das inoffizielle Lernprogramm Raspberry Pi: Das inoffizielle Lernprogramm Ob Sie ein aktiver Pi-Besitzer sind, der mehr erfahren möchte, oder ein potenzieller Besitzer dieses Geräts in Kreditkartengröße, dies ist kein Leitfaden verpassen wollen Lesen Sie mehr und ein Arduino, Sie können im Grunde dasselbe zu einem Bruchteil des Preises erreichen, vorausgesetzt, Sie sind bereit, die Zeit und den Aufwand zu investieren.

Update: Seit der Veröffentlichung dieses Artikels habe ich OpenHAB entdeckt, eine kostenlose Open Source-Plattform für Heimautomation, die auf Raspberry Pi läuft und in eine große Auswahl an Standard-Smart-Home-Kits sowie Arduino integriert werden kann. Schauen Sie sich das Video unten an, um einen Vorgeschmack zu erhalten, und schauen Sie sich unsere ersten Schritte mit OpenHAB auf Raspberry Pi an. Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi OpenHAB ist eine ausgereifte Open Source-Heimautomation Plattform, die auf einer Vielzahl von Hardware ausgeführt wird und protokollunabhängig ist, was bedeutet, dass sie mit nahezu jeder Hausautomationshardware auf dem heutigen Markt verbunden werden kann. Lesen Sie mehr, um mehr zu erfahren.

Heimcontrol.js ist eine Node.js-App, die für die Ausführung auf Raspberry Pi entwickelt wurde. In Kombination mit einem Arduino und einigen handelsüblichen Fernbedienungsbuchsen ist die Steuerung von AC-Geräten einfach. Sie können Temperatursensoren hinzufügen und sogar Ihr Fernsehgerät steuern - aber wir werden heute die Grundlagen beibehalten und das Projekt in einem späteren Lernprogramm erweitern.

Hier ist eine Aufschlüsselung des Projekts:

  • Das Raspberry Pi fungiert als Gehirn und als Gateway für Operationen - es führt eine Node-App aus, die an eine Mongo-Datenbank gebunden ist, und stellt die Front-End-Schnittstelle für jeden Webbrowser bereit.
  • Ein vom Pi angetriebener Arduino dient vorerst als Schnittstelle zwischen den Leistungsschaltern für die Elektronik - Funksteuerung.

Dazu benötigen Sie:

  • Arduino und ein Himbeer-Pi
  • Einige ferngesteuerte Steckdosen und Controller (ich habe diese verwendet)
  • Angetriebener USB-Hub

Bevor wir beginnen, hier ein Demo-Video vom Projektersteller.

Neu anfangen

Wir werden Raspian für dieses Projekt verwenden. 11 Betriebssysteme, die Sie auf Raspberry Pi ausführen können 11 Betriebssysteme, die Sie auf Raspberry Pi ausführen können Die Hardware des Raspberry Pi ist nur eine Seite der Medaille. Hier sind einige verschiedene Raspberry Pi-Betriebssysteme, die Sie installieren können. Lesen Sie mehr, und ich würde nachdrücklich empfehlen, mit einer Neuinstallation zu beginnen, wenn Sie zuvor andere Hacks durchgeführt haben. Laden Sie das neueste Raspian-Image herunter, kopieren Sie es auf Ihre SD-Karte, und erweitern Sie das Dateisystem, und aktivieren Sie SSH. Der Rest dieses Handbuchs setzt voraus, dass Sie dies getan haben und die Verbindung über SSH mit dem Standardbenutzer hergestellt wird.

Wenn Sie dies noch nicht getan haben, wird in diesem Video der Vorgang der Vorbereitung Ihrer SD-Karte unter OS X erläutert:

Und dies für Windows-Benutzer:

Vorbereitung

Der Installationsprozess ist ziemlich umständlich und leitet sich von den Anweisungen ab. Leider waren diese veraltet oder nicht für Raspian konzipiert, daher habe ich sie unten stark angepasst. Die folgenden Codes können meistens in Blöcken eingefügt werden. Sie müssen nicht nacheinander eingefügt werden. Da wir ein paar Dinge auf dem Pi selbst kompilieren, seien Sie gewarnt, dass dieser gesamte Prozess lange dauern wird. Ich würde sagen, machen Sie sich eine Tasse Tee - aber wenn ich eine sage “lange Zeit”, Ich meine den besten Teil eines Tages - also wären 178 Tassen passender.

Alle Befehle sollten in das Terminal eingegeben werden, und Sie müssen an einigen Stellen die Eingabetaste drücken. Diese ersten Befehle werden das System aktualisieren und Voraussetzungen installieren:

Sudo Apt-Get Update Sudo Apt-Get Upgrade Sudo Apt-Get installieren Git-Core Git Scons Build-Essential Scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-programm-options-dev libboost-thread-dev libboost-filesystem-dev 

Als nächstes müssen wir Node installieren:

sudo mkdir / opt / node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf node-v0.10.2-linux-arm-pi. tar.gz sudo cp -r node-v0.10.2-linux-arm-pi / * / opt / node sudo ln -s / opt / node / bin / node / usr / local / bin / node sudo ln -s / opt / node / bin / npm / usr / local / bin / npm 

Fügen Sie Ihrem Profil eine PATH-Variable hinzu, damit das Betriebssystem weiß, wo sich der Knoten befindet. Verwenden Sie den Nano-Texteditor wie folgt:

sudo nano / etc / profile 

Suchen Sie die Zeile mit der Angabe PATH exportieren und ersetze es mit:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" export PATH 

Drücken Sie zum Verlassen Strg-X und zum Speichern Y.

Möglicherweise müssen Sie sich ab- und wieder anmelden, damit die Pfadänderungen wirksam werden. Sie können jedoch mit dem Befehl testen:

welcher Knoten 

Wenn Sie keine Ausgabe auf das Node-Binärprogramm erhalten, ist ein Fehler aufgetreten.

Mongo

Die nächste Aufgabe ist die Installation von Mongo. Mongo ist eine dokumentenbasierte No-SQL-Datenbank, die zunehmend von Web-Apps verwendet wird. Leider dauert dies eine Installation, da wir sie erst kompilieren müssen. Während Sie die folgenden Befehle ausführen, erhalten Sie eine Reihe von Fehlern wie:

Standard-Eingabe: 13085: Warnung: Die Verwendung von swp b wird für diese Architektur nicht mehr empfohlen 

Mach dir keine Sorgen über diese. Führen Sie die folgenden Befehle aus, um Mongo zu installieren:

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo install scons -c 

Wenn dies abgeschlossen ist, müssen wir zunächst ein wenig mehr einrichten, um Berechtigungsprobleme zu beheben und sicherzustellen, dass es beim Start ausgeführt wird.

sudo useradd mongodb sudo mkdir / data / dbb sudo chown $ USER / data / db cd /etc/inch.d sudo wget -O mongodb .sh sudo chmod + x mongodb sudo update-rc.d mongodb verwendet mongod

Dieser letzte Befehl startet den Mongo-Server und Sie müssen ein neues Terminal öffnen, um mit den anderen Befehlen fortfahren zu können. Ich bin nicht ganz zuversichtlich für diesen Schritt. Wenn also jemand dies in den Kommentaren zum automatischen Start von Mongod beim Start korrigieren kann, wäre dies sehr zu begrüßen. Im Moment funktioniert es einfach nicht elegant.

Sudo Shutdown -r jetzt

Schließlich ist es Zeit für die Installation der Heimcontrol.js-Knotenanwendung.

cd ~ pi git clone git: //github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Sie können die App starten, indem Sie sie eingeben

 Knoten heimcontrol.js 

An diesem Punkt sollten Sie mit auf die Steuerungsschnittstelle zugreifen können http: // localhost: 8080 vom Pi aus, oder ersetzen Sie localhost durch die IP-Adresse, wenn Sie von einem anderen Computer darauf zugreifen (und Sie könnten auch eine Portweiterleitung einrichten. Was ist Portweiterleitung und wie kann sie mir helfen? [MakeUseOf-Erklärungen] Was ist Portweiterleitung & Wie kann es mir helfen? [MakeUseOf Explains] Weinen Sie etwas, wenn Ihnen jemand sagt, dass es ein Problem mit der Portweiterleitung gibt und deshalb funktioniert Ihre glänzende neue App nicht? Ihre Xbox lässt Sie keine Spiele spielen, Ihr Torrent lädt herunter weigern Sie sich… mehr darüber, um von überall auf der Welt darauf zuzugreifen), so dass ich Sie dazu ermutigen sollte, sich zu erkundigen, ob alles mit der Datenbank arbeitet, bevor Sie den Arduino anschließen.

Hardware

Irgendwann möchte ich ein festverdrahtetes Relais, aber jetzt nutze ich die sicherere Option der Funkschalter.

Ich habe einigermaßen günstige £ 20-Sets von Maplin verwendet, die mit 3 Steckdosen ausgestattet sind, und die Fernbedienung geöffnet, sodass ich direkt mit dem 433 MHz-Chip im Inneren kommunizieren konnte. Die Anleitung dazu habe ich hier gefunden.

Sie können auch einzelne 433-MHz-Sender kaufen, die bei eBay oder bei Hobby-Elektronikanbietern einsatzbereit sind. Sie müssen lediglich den VCC mit 5 V am Arduino, den GNDs und einem einzelnen Steuer-Pin verbinden. Denken Sie daran, welchen Sie verwendet haben. (Schema von Willi Thiel)

Das Plugin funktioniert durch Senden “Tristate-Codes”, Diese variieren jedoch je nach Hersteller. In der RCSwitch-Dokumentation finden Sie Ihre genauen Codes. Diese Wiki-Anleitung kann auch hilfreich sein.

Die Kommunikation mit dem Arduino erfolgt über eine Node-Bibliothek namens duino. Stoppen Sie die Heimcontrol-App, wenn sie ausgeführt wird, und installieren Sie die Arduino Bridge mit dem folgenden Befehl.

npm duino installieren 

Der Arduino muss diesen Code hochgeladen haben. Ich empfehle Ihnen, diese zu kopieren, um ihn von einem anderen Computer zu installieren. Es ist im Wesentlichen ein Listener-Programm, das auf serielle Befehle vom Pi reagiert, aber es gibt nichts, was Sie daran hindern könnte, es mit Ihren eigenen Funktionen zu erweitern.

Gehen Sie mit der Web-App zum die Einstellungen Menü> Arduino.

Von dort aus können Sie einen neuen Artikel hinzufügen, indem Sie die RCSwitch-Methode, den Pin Ihres Senders und den Tristate-Adresscode auswählen. Vergessen Sie nicht zu speichern und kehren Sie dann zum Hauptbildschirm für Ihre neue Schaltfläche zurück.

Bugs:

Nach vielen Stunden des Debugging des Codes stellte ich fest, dass einstellige PIN-Nummern nicht funktionierten. Stellen Sie sicher, dass Ihr Sender auf Pin steht 10 um sicher zu sein.

Ich fand auch, dass das Arduino-Plugin mit falschen Endbits für die von meinen Empfängern benötigten Tristate-Codes hartcodiert war. Zunächst eine kleine Erklärung: Tristate-Codes bestehen aus 3 Byte Information. Die erste bestimmt die Netzwerknummer (1-4), und die zweite gibt die Transceiver-Adresse an (wiederum 1-4, die maximal 16 adressierbare Sockets erzeugt). Das letzte Byte besteht aus zwei Padding-Bits plus 2 Bits für Ein / Aus. Leider ist das letzte Byte im Arduino-Plugin fest codiert - und in meinem Fall war der Ein / Aus-Code falsch.

Ich musste das manuell bearbeiten Plugins / arduino / index.js die richtigen Codes verwenden. Wenn Sie die gleichen Fernbedienungsbuchsen wie ich verwenden, ändern Sie die Zeilen 80 weiter in:

// RC-Code senden if (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // Änderung von FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // Änderung von FF00

Hier ist ein Demo-Video von allem, was funktioniert:

Ich werde es an dieser Stelle hier belassen, aber auch Sensorablesungen und IR-Fernbedienungen werden unterstützt. Ich werde diese wahrscheinlich zu einem späteren Zeitpunkt mit einigen weiteren Verbesserungen nochmals besuchen. Wenn dies alles etwas zu komplex für Sie war, schauen Sie sich diese anfängerfreundlichen Arduino-Projekte an. 15 Große Arduino-Projekte für Anfänger 15 Große Arduino-Projekte für Anfänger Sie interessieren sich für Arduino, wissen jedoch nicht, wo Sie anfangen sollen? Hier sind einige unserer besten Arduino-Projekte für Anfänger! Weiterlesen .

.