19.032015

Homeautomation mit Android

Den PC von außen hochfahren...

Als Hobbyfotograf ein Foto fertig bearbeitet und noch nicht veröffentlicht. Dann aber als Besuch bei einem anderen Fotografen das neue Foto zeigen wollen. Man müsste doch den PC von außen einfach einschalten können, um via Fernwartung etwas zeigen zu können.

Homeserver sei Dank

Wer nun selbst ein wenig Interesse an Serverdiensten, PCs und dergleichen hat, hat unter Umständen auch einen kleinen Rechner zu Hause stehen, der als Server fungiert. Bei mir zum Beispiel existiert ein NT-fähiger Domänencontroller auf Basis von Samba4 unter Ubuntu 14.04 als Zentraler Speicherort und Backupspeicher für die eigenen Web- und Mailserver.

Aber außer Strom verbrauchen und Dateien durch's Netzwerk schubsen, muss man doch noch mehr mit der Kiste anfangen können.

Ja, das kann man!

Die Idee, den eigenen PC einzuschalten, ein Youtube-Video herunterzuladen, das Licht im Wohnzimmer einzuschalten oder Musik fernzusteuern - mit dem Handy - war nicht neu. Aber das umzusetzen, ohne eine riesige Menge Geld zu investieren für teure Automatisierungssysteme, das ist mehr ein riesiger Lernprozess, als die direkte Umsetzung. Denn wo keine vorhandenen Systeme existieren, dort muss man selbst entwickeln. Und nicht nur an der Software arbeiten, sondern auch elektrische Schaltungen bauen, Platinen löten und sich damit gezielt auseinandersetzen.

Also los geht's

Angefangen hat es mit einer kleinen Website, die auf dem Homeserver liegt, damit von außen beispielsweise geguckt werden kann, welche Dateien auf dem System liegen. Und damit war der erste Grundstein gesetzt. Eine, wenn auch sporadische, aber nicht weniger funktionsfähige Benutzerverwaltung entstand.

Tools

Werkzeuge, Commandline-Tools, Addons und dergleichen gibt es eine ganze Menge, dabei kommt es auf den Zweck an, den man erreichen will.

Es hat damit angefangen, dass der eigene PC hochgefahren werden sollte. Dafür gibt es ein paar gute Tools, die beste Möglichkeit schien mir, einfach ein Magic-Packet zu verschicken, um den PC via Wake-On-Lan zu aktivieren. Dafür gab es nur ein paar wenige Einstellungen im BIOS des Systems zu ändern und auf dem Server musste das Paket >etherwake installiert werden.

Die oben angesprochene Benutzerverwaltung habe ich dann einfach dafür benutzt, um über mehrere Zeichenketten in der URL die Zugangsdaten des Benutzers und ein Secret neben dem auszuführenden Befehl zu verstecken. Und ich habe noch eine kleine Wrapperfunktion für den Befehl erstellt, damit man keine SH-befehle über den Link übergeben kann.

https://mein-server-zu-hause.de/api?key=ABC&command=WOL(1234567890AB)&token=CAB

Und das via App?

Die App Tasker unterstützt eine ganze Menge Funktionen, zwischen verschiedenen "einfachen" Tasks, wie das Öffnen einer App oder das deaktivieren von WLAN auf dem Handy, können wir von hier aus (relativ) einfach, eben genau diese Links verbauen.

Wir brauchen drei verschiedene Tasks:

1) Der Authentication-Task

um die Variablen der Benutzerdaten anzulegen, zum Beispiel:
ZUHAUSE_USER=ABCDEFG
ZUHAUSE_PASS=test123

Screenshot_2015-03-19-16-36-19Screenshot_2015-03-19-16-56-52

2) Der Aktions-Task

Er legt den Namen einer Aktion in eine weitere Variable und ruft den Request-Task auf
Zum Beispiel:
ZUHAUSE_AKTION=Wolpc01

3) Der Request-Task

Dieser Task nimmt die Variablen, baut eine URL zusammen und sendet den GET-Request ab.
https://www.my-home-server-domain.de/api.php?user=%ZUHAUSE_USER%&pass=%ZUHAUSE_PASS%&aktion=%ZUHAUSE_AKTION%

Screenshot_2015-03-19-16-36-19Screenshot_2015-03-19-16-36-35

Erweitern, umbauen, vergrößern

Wenn jetzt noch weitere Aktionen auf dem Server erwünscht sind, muss ich nur einen weiteren Task anlegen, der die Aktions-Variable setzt und dann den Request-Task ausführt. Hierdurch lassen sich eine Menge Tasks schnell anlegen, die man auch auf dem Home-Screen des Smartphones verlinken kann.

Screenshot_2015-03-19-16-52-50

Ich hoffe, ich konnte einen kleinen Einblick gewähren, wie ich meine Home-Automatisierung begonnen habe. Mittlerweile stehen einige Funktionen mehr zur Verfügung. Die Auswahl an Drittanbieter-Diensten aus dem Internet ist ja bekanntlich unbegrenzt, damit ist es dann auch keine Kunst, bei bestimmten Events eine SMS zu verschicken oder ein Telefonat zu führen.