Original-URL des Artikels: https://www.golem.de/news/smarter-schalter-wenn-github-mit-dem-lichtschalter-klingelt-1606-121349.html    Veröffentlicht: 13.06.2016 12:04    Kurz-URL: https://glm.io/121349

Smarter Schalter

Wenn Github mit dem Lichtschalter klingelt

Einfach Home-Automation-Komponenten zusammenklicken, statt sie mühselig selbst zu integrieren, das geht mit dem Webservice IFTTT (If This Then That). Es darf aber trotzdem noch selbst Hand angelegt werden.

Anders als der Name vermuten lässt, ist der Wemo Switch der Firma Belkin kein smarter Lichtschalter, sondern eine smarte Steckdose mit Schalter. Damit können elektrische Geräte mechanisch oder mit mobiler Telefon-App übers heimische WLAN oder gar übers Internet ein- und ausgeschaltet werden. Abgesehen von den immer vorhandenen Sicherheitsrisiken kann der intelligente Schalter gut für Basteleien genutzt werden, und das sogar nur durch einige wenige Klicks samt Anbindung an Dienste wie Github. Für Letzteres sorgt der Dienst Ifttt.com, der in Kombination mit dem Wemo Switch die Umsetzung einiger lustiger Ideen ermöglicht.

Smarter Schalter ohne Registrierungspflicht

Zur Installation erzeugt der Fernschalter nach dem Einstecken in die Steckdose sein eigenes WLAN mit der Kennung WeMo-xxx. Nutzer müssen dann die App für iOS oder Android aufs Smartphone herunterladen und sich mit dem Gerät zunächst über das temporäre Wemo-WLAN verbinden. Die App kommuniziert so mit dem Fernschalter und fordert dazu auf, die SSID und das Passwort des heimischen WLAN einzugeben. Diese Daten werden an den Minicomputer im Schalter geschickt, der daraufhin über das heimische WLAN auf das Internet zugreift und sich selbstständig beim Belkin-Wemo-Service anmeldet.

Dazu ist keinerlei Registrierung per E-Mail erforderlich, alles läuft anonym ab. Die App kommuniziert mit dem Fernschalter entweder übers WLAN oder, falls das Mobiltelefon außerhalb dessen Reichweite ist, über den Belkin-Service mit dem Internet.

Da der Schalter sich nicht nur über Steuerungsgeräte im lokalen LAN betätigen lässt, sondern auch übers Internet, überwindet das Gerät die NAT-Firewall des heimischen Routers, indem per STUN-Protokoll mit einem Belkin-Server im Internet kommuniziert wird. Das ist aus Sicherheitserwägungen heraus eher bedenklich, da schon ein kleiner Fehler in der Implementierung potenziell eine sehr große Menge an fernsteuerbaren elektrischen Geräten im Internet erzeugt. Dies ist bei Wemo-Geräten bereits geschehen. Vom Betreiben wirklich kritischer Komponenten muss daher dringend abgeraten werden.

Klicken statt programmieren

Ein gravierender Nachteil des Geräts ist, dass es überflüssigerweise ein weiteres proprietäres Protokoll benutzt. Das ist leider die Norm bei den Heimautomations-Produkten, die folglich nur mit den meist nicht sonderlich originellen Apps des Herstellers zusammenarbeiten.

Zwar hat sich ein Startup namens Smartthings im Silicon Valley vorgenommen, die mehr oder weniger proprietären Home-Automation-Protokolle wie Z-Wave, Zigbee oder Wemo im sogenannten Smartthings-Hub zu vereinen und mit offenen Protokollen sowie einer aktiv eingebundenen Developer-Community in neue Dimensionen vorzudringen. Leider funktioniert der Smartthings-Hub bislang nur in den USA, und es ist kein europäisches Modell in Sicht.

Zum Glück hat sich das Unternehmen Ifttt.com vorgenommen, dieses Protokollwirrwarr zu abstrahieren und für Nutzer unter dem Motto "If This Then That" durch einfaches Menüklicken logische Verknüpfungen zwischen Ereignissen herzustellen, deren Integration sonst einiges an Arbeit erfordern würde. Der Service erzeugt aus Bedingungen (This) und ausgelösten Aktionen (That) Regeln, die der Benutzer mit ein paar Mausklicks dauerhaft aufstellt.

"This" ist dabei ein Eingabekanal, etwa "Um diese Uhrzeit" oder "Wenn es regnet". "That" bezeichnet die eingeleitete Aktion wie "Schicke mir eine E-Mail" oder "Poste diese Twitter-Nachricht" oder eben "Schalte dieses Gerät ein".



Bei Ifttt.com finden sich allerlei vorgefertigte Kanäle, die ein Ereignis auslösen: Der Sunrise-Kanal löst bei Sonnenaufgang aus, der Wetter-Kanal bei Sonnenschein oder Regen, diverse Security-Komponenten lösen bei Einbrüchen Alarm aus. Fallende oder steigende Börsenkurse können ebenso Ereignisse zur Folge haben.

Unter den durch Ereignisse ausgelösten Aktionen finden sich E-Mail-Benachrichtigungen, SMS, Push-Nachrichten, An/Aus-Schalter wie eben Wemo und vieles mehr. Die Kombinationsmöglichkeiten von Eingaben und Ausgaben scheinen beinahe unbegrenzt und die Fantasie der beitragenden Entwickler nimmt erstaunliche Ausmaße an.

Github zum Klingeln bringen und selber basteln

Wer einen Kanal auf Servern nutzen möchte, die Zugänge voraussetzen wie etwa Github oder Gmail, muss sein Passwort nicht auf Ifttt.com hinterlegen. Vielmehr nutzt Ifttt.com dafür Oauth. Die Anwendungen müssen so vom authentifizierten Nutzer nochmals die Bestätigung abholen, dass Ifttt.com nun ausgewählte Aktionen unter deren User-ID ausführen darf. Nutzer können, wie in Oauth üblich, jederzeit ihre Erlaubnis zurückziehen. Das Passwort verlässt niemals den Originaldienst, während Ifttt.com mit begrenzt gültigen Tokens arbeitet.

Die Kommunikation zwischen der Smartphone-App und dem Belkin-Server ist nur mit einem SDK zu bewerkstelligen, aber in die Wemo-App ist bereits Ifttt.com integriert. Wer mit Ifttt.com den Wemo-Switch ein- und ausschalten möchte, abonniert dort einfach den Kanal "WeMo-Switch" und gibt Ifttt.com die PIN, die die Wemo-App auf Anfrage im Einstellungs-Menü generiert.

Damit hat Ifttt.com die Schlüssel für die Fernsteuerung des Wemo-Schalters und in Verbindung mit einem auslösenden Eingabe-Kanal können damit heimische Elektrogeräte angeschaltet werden. Das funktioniert auch mit ungewöhnlichen Ereignissen als Auslöser, zum Beispiel bei steigenden Börsenkursen oder beim Eintreffen von Twitter-Nachrichten.

Alarm bei Github-Issue

Um etwa bei jedem neu erzeugten Github-Issue in einem vom Nutzer geführten Projekt eine Lampe oder eine Sirene anzuwerfen, kann auf Ifttt.com einfach ein neues Rezept erzeugt werden. Dazu abonnieren registrierte Anwender den Github-Kanal sowie den Wemo-Switch-Kanal auf der Webseite und verknüpfen dann den New-Issue-Bereich des Github-Kanals als Input mit dem Wemo-Switch-Kanal, also dem Output.

Da der Ifttt-Server laufend viele solche Rezepte prüfen muss, dauert es manchmal eine Weile nach dem Einleiten des Inputs, bis der Output aktiviert wird. Im Test betrug die Verzögerung zwischen dem Anlegen eines Github-Issues und dem Anschalten der Lampe etwa zwei Minuten. Aber dennoch ist es faszinierend, wie leicht diese Art der Verknüpfung von der Hand geht und wie viele Möglichkeiten der Home-Automatisierung sich damit öffnen.

Statt nun aber bloß mechanisch auf der Telefon-App herumzutippen, bietet es sich zum Basteln an, den Schalter per Skript auszulösen. Wer nimmt schon gerne die Hände von der Tastatur, nur um das Licht anzumachen? Aber im Ernst: Erst durch die Verknüpfung des Schalters mit Sensoren im Haus und etwas Logik entsteht ein Smarthome, das zum Beispiel nur dann das Licht im Carport anschaltet, wenn es dunkel ist und sich das Bluetooth-Signal des Smartphones der Besitzer nähert.

Kommando Ein/Aus

Der Wemo-Schalter betreibt einen kleinen Webserver im WLAN, den ein einfaches Perl-Skript durch HTTP-Abfragen zum Umlegen des mechanischen Schalters auffordern kann. Dazu nutzt das Skript das CPAN-Modul Power:: Outlet::WeMo, dessen Konstruktor die IP-Adresse des Schalters im WLAN entgegennimmt und anschließend mit den Methoden on() und off() als HTTP-Client mit dem lokalen Server kommuniziert. #!/usr/bin/perl -w use strict; use Power::Outlet::WeMo; my $lamp = Power::Outlet::WeMo->new( host => "192.168.1.139" ); $lamp->on; sleep 1; $lamp->off;

Zudem unterstützt das Modul die Methoden switch() (zum Umschalten in den entgegengesetzten Zustand) sowie query() zur Abfrage des aktuellen Zustands. Das Ganze ließe sich auch recht einfach über einen simplen Webclient erledigen, aber das Modul abstrahiert die zugrundeliegenden URLs und ermöglicht so bequeme und saubere Programmierung.

Da der WLAN-Router dem Schalter die IP-Adresse dynamisch zuweist, bietet es sich an, jenem per Einstellung beizubringen, an anfragende Geräte mit der MAC-Adresse des Schalters immer die gleiche statische IP-Adresse zu vergeben. Weil der Schalter aber auch das UPnP-Protokoll implementiert, kann das nachfolgende Skript die IP-Adresse auch mit dem CPAN-Modul Net::UPnP::ControlPoint erfahren.

#!/usr/local/bin/perl -w use strict; use Net::UPnP::ControlPoint; my $upnp = Net::UPnP::ControlPoint->new(); my @devices = $upnp->search( st => 'upnp:rootdevice', mx => 3 ); foreach my $device (@devices) { print $device->getdevicetype(), "\n"; print $device->getfriendlyname(), "\n"; print $device->getssdp(), "\n"; }

Als Search-Target spezifiziert das Skript mit dem Parameter st und dem Wert upnp:rootdevice, dass es an allen Rootdevices im Netz interessiert ist. Mit dem Parameter mx und dem Wert 3 gibt es die maximale Wartezeit von 3 Sekunden vor, bis sich ein Gerät meldet oder das Skript abbricht. In meinem Netz befand sich zum Testzeitpunkt nur ein UPnP-Gerät, und die Ausgabe zeigt unter anderem, dass die UPnP-Abfrage den Webserver des Schalters auf 192.168.1.139 gefunden hat.

Es ist davon auszugehen, dass das Schreiben kleinerer Skripte, wie hier in Perl oder auch in anderen Programmiersprachen, für etwas ausgefallenere Basteleien bei der Heimautomation noch lange Zeit notwendig sein wird. Zumindest theoretisch ergeben sich damit auch wesentlich mehr Möglichkeiten als bei dem Rückgriff auf Ifttt. Für all jene, die nicht selbst programmieren wollen, ist die Umsetzung eigener Ideen dank derartiger Dienste aber sehr einfach. Zudem sind die Möglichkeiten für eigene Projekte mit Ifttt schon jetzt so vielfältig, dass auch hartgesottene Programmierer Spaß am Zusammenklicken ihrer Anwendungen haben sollten. Wohl aber nur bis das nächste Github-Issue klingelt.

Dieser Artikel erschien in einer anderen Fassung zuerst in der Ausgabe 07/16 des Linux Magazins, das seit September 2014 wie Golem.de zum Verlag Computec Media gehört.  (msc)


Verwandte Artikel:
WLAN-Booster für Sende- und Empfangsverstärkung   
(26.05.2004, https://glm.io/31431 )
Smart Home: Alexa kommt in den Lichtschalter und den Badspiegel   
(08.01.2018, https://glm.io/132010 )
Smart Home: Amazon verbannt Nest-Geräte aus dem Onlineshop   
(04.03.2018, https://glm.io/133132 )
Medion Smart Home im Test: Viele Komponenten, wenig Reichweite   
(29.03.2017, https://glm.io/126826 )
OpenHAB 1.0: Offene Plattform für die Heimautomation   
(20.08.2012, https://glm.io/93960 )

© 1997–2019 Golem.de, https://www.golem.de/