Amazon Dash Button in FHEM einbinden

Vor kurzem bin ich auf eine sehr einfache und kostengünstige Variante gestoßen, zusätzliche Schaltmöglichkeiten in FHEM einzubauen. Denn Amazon hat mit seinem Dash Button eine Hardware auf den Markt gebracht, die sich nach kurzer Einrichtung mit dem hauseigenen WLAN verbindet, kaum Ressourcen beansprucht und sich optimal als Aktor für die eigene Hausautomatisierung nutzen lässt.

Schaltaktor für gerade einmal 5 Euro

Man mag es kaum glauben, aber aufgrund der Tatsache, dass Amazon natürlich will, dass seine Kunden einen einfachen Zugang zum Dash Button haben, hat man die Kaufschwelle hier sehr niedrig gehalten. Für nicht ganz 5 Euro bekommt man einen Dash Button zugeschickt und kann mittlerweile aus einer Vielzahl an unterschiedlichen Designs auswählen. Ich habe für unseren ersten Test einen Dash Button im Pampers Design gekauft, da die angedachte Funktion des Buttons in unserer Hausautomatisierung passend sein sollte.

Funktionslos bis zur Einrichtung

Was den Dash Button so perfekt für die Einbindung in das eigene Heimsystem macht ist der Fakt, dass er quasi ohne Funktion von Amazon versendet wird. Das bedeutet, dass es im Grunde egal ist, welches Design ein Dash Button besitzt, denn die eigentliche Funktion – ein Produkt wird per Knopfdruck einfach und schnell nachbestellt – die wird bei Amazon erst mit der Einrichtung des Dash Buttons hinterlegt.

Die Einrichtung wird über die Amazon App gestartet

Verbindung zum Heim-WLAN

Interessanterweise verschickt Amazon die Anleitung zur Einrichtung des Dash Buttons mit einem zeitlichen Versatz, so dass ich diese erst erhalten habe, als der Button schon längst in meinen Händen war. Egal – alles was man für die Einrichtung braucht ist die Amazon App, die jeder Amazon Prime Kunde wahrscheinlich eh schon auf seinem iPhone- oder Android-Gerät installiert hat. In dieser öffnet man dann nach einem Klick auf das Burger-Symbol den Eintrag "Mein Konto" und wählt dort unter dem Punkt "Dash-Geräte" den Eintrag "Ein neues Gerät einrichten" aus. Es könnte also sein, dass Amazon in Zukunft noch weitere Dash-Geräte auf den Markt bringt, wenn es hier nicht explizit auf die Form des Buttons eingeht.

Bluetooth sollte aktiviert sein

Hat man Bluetooth an seinem Mobiltelefon nicht aktiv, so wird man zunächst aufgefordert, dies nachzuholen, da der Button zunächst per Bluetooth Daten übertragen bekommt.

Ist dies erledigt (oder Bluetooth war bereits aktiv), kann man als nächstes eines der zur Verfügung stehenden WLANs auswählen und das entsprechende Passwort angeben.

Automatisierungshack

Geht man nun einen Schritt weiter, muss der Knopf am Dash Button 6 Sekunden lang gehalten werden, bis ein blaues Licht aufleuchtet. Die Daten des WLANs werden nun per Bluetooth an den Button übertragen.

Einmal den Dash Button aktivieren

Der Button verbindet sich nun mit dem heimischen WLAN und als letzten Schritt der Einrichtung soll man nun in der App nur noch das entsprechende Produkt auswählen, welches beim Betätigen des Buttons gekauft werden soll. An dieser Stelle klickt man einfach auf das X am rechten, oberen Rand der Anzeige und bestätigt noch einmal, dass man diesen Schritt aktuell nicht vornehmen möchte. Jetzt kann man erneut auf das X am rechten, oberen Rand klicken und noch einmal bestätigen, dass man die Einrichtung an dieser Stelle beenden möchte.

Der Dash Button kann sich nun mit dem eigenen WLAN verbinden, hat aber keine weitere Funktion, die er ausführen kann. Würde man den Button betätigen, leuchtet das Licht ein paar Mal weiß auf und ändert sich dann auf rot. Dies bedeutet, dass der Button kein Produkt bestellen konnte, was ja Sinn macht, denn wir haben keins eingerichtet.

Einrichtung in FHEM

Nun kommt die eigentliche Einbindung in die hauseigene Automatisierung. Hier kann man sich das Verhalten des Buttons beim Drücken zunutze machen. Da er keine feste IP-Adresse besitzt, wird bei jeder Betätigung ein Broadcast im heimischen Netzwerk ausgelöst, um eine (neue) IP-Adresse zu erhalten. Da die meisten WLAN-Geräte eine Browseroberfläche mitbringen in welcher der Nutzer sehen kann, welche Geräte sich mit dem heimischen Netzwerk verbunden haben, muss man "nur noch" in diese Oberfläche gehen und dort den entsprechenden Eintrag des Dash Buttons heraussuchen. Aufgrund der kurzen Verbindungszeit von unter einer Sekunde – der Dash Button muss ja quasi kaum Daten übermitteln – kann es sein, dass eine versuchte Verbindung z.B. gar nicht im eigenen Router mitgeschrieben wird.

Für solche Fälle lohnt es sich, wenn man ein Tool wir Wireshark einfach kurz einschaltet und den Netzwerk-Traffic während der Betätigung des Buttons "mitschneidet". Im Anschluss kann man sich in den übertragenen Daten den DHCP-Request raussuchen und findet dort die MAC-Adresse des Dash Buttons, wenn man nach "amazon" in den Details sucht. Die dort gefundene Adresse am besten notieren, denn die wird im Anschluss in FHEM gebraucht. Der einfachste Weg hierfür ist die Verwendung des Moduls <a href="https://fhem.de/commandref.html#dashdhcp">dash_dhcp</a>, welches mittlerweile als Teil von FHEM selber zur Verfügung steht. Man muss sich also keine zusätzliche Software installieren.

Nun ruft man folgende Befehle in FHEM auf bzw. definiert diese in der Datei fhem.cfg:

define DashButton dash_dhcp
attr DashButton allowed ab:12:de:34:5f:f2
attr DashButton port 6767
define DashButtonSchalteMeinAktor notify DashButton:ab-12-de-34-5f-f2..short set MeinAktor on

Es wird also ein DashButton mittels dash_dhcp definiert, der im Anschluss an die herausgefundene MAC-Adresse gebunden wird.

Anpassung der iptables

Da DHCP-Requests auf dem Port 67 gesendet werden und nur der root-User die entsprechenden Rechte hat, um auf diesen zuzugreifen, muss man hier noch zusätzlich auf der Konsole des Geräts, auf dem FHEM läuft, die iptables anpassen. Hierfür verbindet man sich per SSH mit dem Gerät auf dem FHEM läuft und führt dort als root-User den folgenden Befehl aus:

sudo iptables -I PREROUTING -t nat -i wlan0 -p udp --src 0.0.0.0 --dport 67 -j DNAT --to 0.0.0.0:6767

Dieser gilt übrigens nur dann, wenn das Gerät per WLAN mit dem Netzwerk verbunden ist. Wurde die Verbindung per Netzwerkkabel hergestellt, muss man folgenden Befehl nutzen:

sudo iptables -I PREROUTING -t nat -i eth0 -p udp --src 0.0.0.0 --dport 67 -j DNAT --to 0.0.0.0:6767

Da diese Regel der iptables allerdings beim Neustart des Systems wieder überschrieben werden würde, muss man einen Weg finden, um sie nach einem Neustart wieder zu setzen (sofern man dies nicht immer manuell machen will). Hier lohnt es sich, das Package iptables-persistent zu installieren.

sudo apt-get update && sudo apt-get install -y iptables-persistent

Im Anschluss kann man in der Datei rules.v4 eine entsprechende IP4-Regel hinterlegen:

sudo nano /etc/iptables/rules.v4

Auch hier muss man natürlich beachten, wie das Gerät ans Heimnetz angebunden ist. Bei einer Verbindung per Netzwerkkabel würde man folgenden Befehl eintragen:

-I PREROUTING -t nat -i eth0 -p udp --src 0.0.0.0 --dport 67 -j DNAT --to 0.0.0.0:6767

Ist das Gerät per WLAN verbunden, nimmt man folgenden Befehl:

-I PREROUTING -t nat -i wlan0 -p udp --src 0.0.0.0 --dport 67 -j DNAT --to 0.0.0.0:6767

Dabei ist es wichtig, dass man diesen Befehl vor dem letzten COMMIT in der Datei rules.v4 einträgt.

Aktion in FHEM definieren

Zu guterletzt wird noch eine Aktion definiert die ausgeführt werden soll, wenn der Dash Button betätigt wird. Im o.g. Beispiel führt diese "DashButtonSchalteMeinAktor" genannte Aktion dazu, dass MeinAktor auf on geschaltet wird. Hier könnte man z.B. auch komplexere Varianten erstellen, wenn man mit IFs oder ähnlichen Dingen arbeitet. Bei uns habe ich den Button dafür verwendet, den sog. StillModus unserer Rolläden im Wohnraum zu betätigen. Je nachdem, ob der StillModus an oder aus ist, wird er ein- oder ausgeschaltet.

define StillModusDashButton notify DashButton:ab-12-de-34-5f-f2..short IF ([StillModus] eq "on") (set StillModus off) ELSE (set StillModus on)

Und das war es eigentlich schon. Von nun an wird beim Betätigen des Dash Buttons ein DHCP-Request ins Netzwerk gesendet. FHEM fängt diesen auf und da die MAC-Adresse zum Eintrag in der Konfiguration passt wird die in FHEM hinterlegte Aktion ausgeführt. So einfach kann es manchmal sein.

About the Author