Heimautomatisierung… für Fußgänger

Das Thema Heimautomatisierung oder Smart-Home ist immer mal wieder in den Medien. Meistens dann, wenn es um bunte Zukunftsprognosen oder Sicherheitslücken geht. Doch wer kann schon von sich behaupten, dass ihn das Thema auch nur peripher tangiert? Bei den Preisen der Komponenten überlegt der ein oder andere Interessierte es sich meistens doch noch mal anders. Und für den Preis einer kompletten Installation, würde ich mir doch lieber eine neue Einbauküche kaufen.

Aber reizvoll ist das Thema ja schon irgendwie. Beim DVD schauen, auf der Couch liegend mal eben das Licht mit dem Handy ausschalten, statt mühsam aufzustehen und zum Schalter zu laufen? Das Musikprogramm auf dem MediaCenter per Tablett steuern? Von unterwegs mal eben nachsehen, ob zu Hause noch alles OK ist? Automatische Benachrichtigung aufs Handy, wenn der Bewegungsmelder Alarm schlägt – inklusive Bild der Webcam? Die Ideen und Ansprüche sind vielfältig.

Und die meisten können mit ein paar günstigen Komponenten, Bastelgeschick und etwas Programmierkenntnissen durchaus realisiert werden! Vielleicht nicht immer so bequem oder elegant wie eine Fertiglösung (sondern halt „zu Fuß“), aber bei den Vorteilen – vor allem preislich – werden die meisten darüber hinwegsehen.

Dreh- und Angelpunkt des ganzen Unterfangens ist eine Möglichkeit, elektronische Geräte programmgesteuert an- und ausschalten zu können. Dafür könnte man sich für über 100€ eine Steckerleiste mit eingebautem Webserver kaufen, aber es geht schon sehr viel günstiger! Steckerleisten die per USB gesteuert werden können gibt es schon für 30 – 40€.

Diese muss natürlich von einem Rechner angesteuert werden, der 24/7 läuft – damit sich das nicht eklatant in der Stromrechnung niederschlägt sollte das ein Gerät mit sehr geringem Verbrauch sein. Ein Raspberry Pi bietet sich dafür also regelrecht an! Als Betriebssystem empfehle ich Raspbian. Treiber für die Steckerleiste findet man beim SiS PM Control Projekt auf Sourceforge.
Damit ist bereits alles an Hardware vorhanden, was für eine einfach gestrickte Steuerung – bspw. des Deckenfluters – notwendig ist. Der Rest ist Software! Mit – für Softwareentwickler – vergleichsweise wenig Aufwand, kann der geneigte Bastler sich jetzt eine Webapp schreiben, die z.B. in einem Tomcat läuft und ein Interface bereit stellt, mit dem die SiS-PM Treiber angesprochen werden können. Da jedes Smartphone über einen Webbrowser verfügt, ist es damit schon möglich den Deckenfluter vom Sofa aus zu bedienen – ach ja, ein WLAN sollte dafür natürlich auch vorhanden sein (es geht zwar im Zweifelsfall auch ohne – aber dazu später mehr).

Das mit dem Webbrowser auf dem Handy ist auf Dauer natürlich unbequem. Wer es kann schreibt sich also lieber eine App dafür – und das dazu passende REST-Interface auf dem Server/Pi. Wer es nicht kann, beschränkt sich stattdessen auf das REST-Interface, und bezieht die App „HomeRC“ von github sobald sie verfügbar ist!

Die App hat auch bereits Unterstützung für Bilder der Webcam – diese eigentliche Arbeit übernimmt hierfür natürlich ebenfalls der Server. Wie die Webcam unter Linux/Raspbian eingerichtet wird, werde ich hier nicht extra erläutern. Dafür gibt es genug Anleitungen im Internet. Als Programm für die Commandline empfehle ich: fswebcam. Als Aufruf bietet sich folgendes an:

fswebcam -F 2 -S 10 -r 640x480 /var/tmp/targetfile.jpg

Um einen sinnvollen Mittelweg zwischen Belichtung und Bewegungsunschärfe zu bekommen, muss ggfs. mit den Parametern „F“ und „S“ gespielt werden werden. (Deren Bedeutung erläutert die man-page bzw. fswebcam –help)

Das dritte Feature der App macht nun vielleicht den ein oder anderen neugierig. Eine Alarmfunktion?
Was das angeht sind wir nun an der Stelle angelangt, wo wir um neue Hardware nicht herum kommen. Sicherlich gibt es auch Bewegungssensoren für den Pi, ich hatte mich allerdings für einen Arduino entschieden. Die Version „Yun“ mit eingebautem WLAN kostet allerdings freilich gut das Doppelte eines Raspberry …zuzüglich der ca. 10€ für einen IR-Sensor. Als Bezugsquelle für beides ist Tinkersoup ein guter Anlaufpunkt! Wer mit dem Zusammenlöten des IR-Sensors schon genug zu tun hat, und nicht noch selber ein Programm für den Arduino entwickeln will, dass diesen ansteuert, für den hab ich hier ein kleines Snippet, dass sogar schon einen primitiven Filter für False-positives eingebaut hat. Das ist erforderlich, wenn der Sensor keine Möglichkeit bietet, die Empfindlichkeit einzustellen:

#include <Mailbox.h>
#include <Process.h>
#include <Console.h>
#include <YunServer.h>
#include <Bridge.h>
#include <FileIO.h>
#include <HttpClient.h>
#include <YunClient.h>
#include <Process.h>

int pirPin = 2;

void setup() {
  // put your setup code here, to run once:
  Bridge.begin();
  Serial.begin(9600);
  pinMode(pirPin, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  int pirVal = digitalRead(pirPin);

  if(pirVal == LOW) {
    Serial.println("Motion detected - verifying...");
    
    delay(300);
    pirVal = digitalRead(pirPin);
 
    if(pirVal == LOW) {
      Serial.println("Motion detected - verified!");
      runCurl();
      delay(1000);
    }
  }
}

void runCurl() {
  Process p;
  p.runShellCommand("curl 'http://192.168.0.42:8080/home-control/trigger.sc?method=triggerAction' > /dev/null");
}

Jetzt muss der Server nur noch auf der entsprechenden URL lauschen und sich entsprechend dem Status verhalten, den man mit der App gesetzt hat.

Die Einstellungen in der App lassen den geneigten Leser nun wieder aufhorchen – hatte der Autor nicht etwas von „auf Reisen nach dem Rechten sehen“ versprochen? Wie aber von außen auf den Server auf dem Raspberry drauf kommen?
Spätestens jetzt zahlt es sich aus, einen vernünftigen Router (z.B. eine Fritzbox) zu haben! Denn genau dort muss ein Port-forwarding auf den Server eingerichtet werden. Das ist allerdings nur die halbe Miete. Durch die Zwangstrennung der Internetverdindung bei den meisten ISPs ändert sich die IP des eigenen Anschlusses alle 24 Stunden. Das mag aus Datenschutzgründen manchmal gar nicht so schlecht sein, aber in diesem Fall ist es überaus hinderlich. Findige Leute haben sich diesem Problem allerdings schon vor Jahren angenommen. Fast jeder hat sicher schon mal von DynDNS gehört. Nun ist gleichnamiger Dienst sicherlich nicht mehr die beste Anlaufstelle. Aber es gibt ja genug Alternativen. Die Interessanteste dabei ist sicherlich: eine eigene Domain! Hostinganbieter bieten in manchen Tarifen ebenfalls DynDNS-Funktionalität für eine beliebige Subdomain an! Und vernünftige Router, wie bspw. eine Fritzbox ermöglichen es auch, die IP zu selbst definierten Diensten zu propagieren! Mit dieser Kombination ist es jetzt möglich über die eigene Domain auf den Server zu Hause zuzugreifen.

Auf das Thema „Musikplayer per Tablet steuern“ gehe ich nicht im Detail ein, da es im Prinzip ein reines Softwarethema ist. Mit dem Player „Amarok“ und der App „AmarokRC“ lässt sich das allerdings sehr einfach umsetzen!

Abschließend noch ein Wort zum Thema Sicherheit: Wenn ihr von außen auf euren Server zu Hause zugreifen wollt: sichert das entsprechend ab! Das fängt damit an, den Server immer up2date zu halten! Und denkt gar nicht erst daran unverschlüsselte Verbindungen zu ermöglichen! Der Vorteil, dass es euer Server ist, liegt ja gerade darin, dass ihr euch sichere Zertifikate und Schlüssel generieren könnt, ohne dafür hunderte von Euro pro Jahr zu bezahlen, nur damit euer Hoster das installiert. Also macht davon Gebrauch!

Und danach wendet euch dem größten Risikofaktor zu: eurem Smartphone! Es vergeht ja inzwischen kein Monat mehr, in dem nicht irgendeine Sicherheitslücke für ältere Android Versionen bekannt wird. Und 90% der Hersteller stellen sie keine Sicherheitsupdates bereit. Wenn euer Gerät also vom Hersteller nicht mehr mit Updates versorgt wird, zieht in Betracht eine Alternative ROM zu installieren! Denn bedenkt, auch wenn potentielle Angreifer nur Zugriff auf die Funktionalität haben, die auch die App hat: damit können sie auch Bilder mit der Webcam schießen. Als letzte Sicherheitsmaßnahme empfiehlt es sich also, eine Webcam mit physikalischem Verschluss zu benutzen – den macht ihr immer zu, wenn ihr zu Haus seid, damit ihr im schlimmsten Fall nicht von wild Fremden mit runter gelassenen Hosen fotografiert werdet.

Teilen Sie diesen Beitrag

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert