Amazon Dash Button einfach in FHEM einbinden

Der Amazon Dash Button dürfte mittlerweile wohl bekannt sein. Mit diesem Knopf kann man bei Amazon direkt ein zugeordnetes Produkt nachbestellen. Hierzu wird der Dash Button in das eigene Netzwerk integriert und über die Amazon App auf dem Handy mit einem Produkt verbunden.

Mittlerweile gibt es zahlreiche Hacks, die den Button für andere Zwecke nutzbar machen. Dies liegt sicherlich auch an dem günstigen Preis von knapp 5,-€. Auch ein Grund für mich, den Dash Button einmal in meiner FHEM Umgebung zu testen. Für erste Tests habe ich mir nun zwei Dash Button besorgt und im Netz als auch in der FHEM Community nach geeigneten Lösungen für die Einbindung gesorgt. Neulich war auch ein entsprechender Artikel in der c’t, der die wohl meist genutzte Basislösung für den Dash Hack beschrieben hat.

Amazon Dash Button

Amazon Dash Button

Irgendwie war mir das aber für einen ersten Test oft ein wenig zu kompliziert, da fast immer irgendetwas auf Betriebssystemebene installiert bzw. Scripte gestartet oder Einstellungen durchgeführt werden müssen. In der Community gibt es zwar mittlerweile wohl einen recht guten Ansatz mit einen dash_dhcp Modul, doch ich habe mich nun zunächst für eine Lösung mit dem PRESENCE Modul entschieden, die ich nachfolgend kurz erläutern möchte.

So funktioniert der Dash Button

Damit man die Problemstellungen beim Hack eines Dash Button versteht will ich kurz noch einmal die Funktionsweise des Button erläutern. Mittels der Amazon App wird der Button in das heimische Netzwerk eingebunden. Hierzu wird dem Button über die App das WLAN Netzwerk und dessen Zugriffsschlüssel bekannt gemacht. Wenn man bei der Einrichtung dann noch ein Produkt auswählt, würde der Button bei jedem Klick dieses Produkt bestellen.

Im Ruhezustand meldet sich der Button vom Netzwerk ab und ist somit auch nicht sichtbar und man kann auch nicht von irgendeiner Software auf ihn zugreifen. Erst mit einem Druck auf den Knopf wacht er auf, verbindet sich in diesem Moment mit dem Netzwerk und versucht dann eine Verbindung mit Amazon herzustellen.

Bei den Hacks geht es also darum, diesen Zustand des Buttons zu erkennen und dann in irgendeiner Form darauf zu reagieren.

Amazon Dash Button einrichten und für FHEM vorbereiten

Als Vorbereitung für die Nutzung des Amazon Dash Button mit FHEM muss dieser zunächst über die Amazon App eingerichtet werden. Allerdings bricht man den Vorgang ab, sobald die Auswahl des zuzuordnenden Produkts ansteht. Damit ist auf jeden Fall schon mal sicher gestellt, dass beim Klick auf den Button kein Produkt bestellt wird.

Für die spätere Nutzung des Button innerhalb FHEM ist es notwendig, die IP Adresse zu kennen. Leider meldet sich der Button nicht mit irgendeinem Namen im Netzwerk an, sondern als „unbekanntes Gerät“. In einer Fritzbox, in der man vielleicht noch andere Geräte ohne spezifischen Namen hat, ist es daher nicht so einfach, den Button zu finden.

Dash Button über Smartphone App einrichten

Dash Button über Smartphone App einrichten

Hier habe ich zu einem kleinen Trick bei der Einrichtung des Button gegriffen. Bei der Eingabe des Sicherheitsschlüssel für das WLAN Netzwerk habe ich mit Absicht zunächst irgendeinen falschen Wert eingegeben. Mit diesem Wert versucht sich der Button nun im Netzwerk anzumelden. Innerhalb der Fritzbox (WLAN->Funknetz) kann man sich anzeigen lassen, welche Geräte erfolglos versucht haben, sich anzumelden. Die entsprechende Liste löscht man am besten vor der Einrichtung des Dash Button, so dass man sofort den Dash Button identifizieren kann. Am besten merkt man sich die entsprechende MAC Adresse, mit der man dann in der Liste der angemeldeten Geräte, den Button erkennen kann.

Einrichtung des Dash Button vor der Produktzuordnung abbrechen

Einrichtung des Dash Button vor der Produktzuordnung abbrechen

Nachdem man nun den richtigen Schlüssel eingegeben hat, verbindet sich der Button mit dem Netzwerk. Nun kann man ihn aus der Liste der verbundenen Geräte innerhalb der Fritzbox an Hand der MAC-Adresse identifizieren und das Gerät entsprechend anpassen. Hier habe ich dem Button direkt mal einen Namen gegeben und sicherheitshalber eine feste IP Adresse zugeordnet. Darüber hinaus habe ich mittels der Kindersicherung den Zugang zum Internet gesperrt. Nun merkt Amazon noch nicht einmal mehr, dass der Button gedrückt wurde.

Dash Button benamen und für Internet sperren

Dash Button benamen und für Internet sperren

Amazon Dash Button in FHEM einbinden

Nun ist alles für die Einbindung des Dash Button in FHEM vorbereitet. Wie oben erwähnt nutze ich hierzu das PRESENCE Modul mittels lan-ping Einstellung. Das Modul fragt in dem angegebenen Zeitraum (hier 1 Sekunde) ab, ob die angegebene IP im Netzwerk angemeldet ist. Ist dieser der Fall ändert sich der Status auf „present“ und man kann mittels notify darauf reagieren.

Die Einbindung mittels IP Adresse sieht dann wie folgt aus (theoretisch müsste auch der evtl. in der Fritzbox vergebene Name funktionieren):

define DashButton01 PRESENCE lan-ping <EURE-IP-ADRESSE> 1

Damit nicht zu viele Ereignisse in FHEM erzeugt werden, sollte man noch das Attribut „event-on-change-reading“ auf „state,presence“ setzen. Nur bei Änderung wird dann ein Ereignis erzeugt. Außerdem bin ich der Einstellung von „nesges“ aus der Community gefolgt und habe das Attribut „ping_count“ auf 1 gesetzt. Damit werden nicht so viele pings im Netzwerk erzeugt. Dies könnte auch ein kleines Manko sein, wenn jede Sekunde ein ping-Befehl ausgeführt wird. Ich konnte bisher aber noch keine Einschränkungen in meiner FHEM- oder Netzwerkumgebung feststellen.

Mit dem passenden Notify kann man nun die gewünschten Aktionen in FHEM ausführen. Dies könnte zum Beispiel wie folgt aussehen:

define notDashButton01 notify DashButton01:present set Lampe on
Dash Button in FHEM mittels PRESENCE einbinden

Dash Button in FHEM mittels PRESENCE einbinden

Verwendungszwecke und Einschränkungen

Der Dash Button hat ein paar Einschränkungen mit denen man leben muss, wenn man ihn einsetzen möchte. So scheint die eingebaute Batterie nicht so ewig lange zu halten. Genaue Angaben, wieviele Klicks er verkraftet, konnte ich aber noch nicht finden. Daher sollte man den Button dort einsetzen, wo man nicht zuviele Schaltvorgänge durchführt.

Weiterhin reagiert der Button mitunter etwas langsam. Es kann schon mal 3-5 Sekunden dauern, bis die Aktion durchgeführt wird. Bei mir ging es bisher immer relativ zügig innerhalb von 1-3 Sekunden.

Genaue Ideen für die Verwendung des Dash Button habe ich bisher auch noch nicht. So könnte er ggf. als Notfall Schalter für irgendwelche Lampenszenarien dienen, wenn die programmierte Automatik mal nicht funktioniert hat. Einen Button werde ich bei mir im Bad deponieren. Ich hatte immer schon die Idee, dass ich mir über den Sonos Player im Bad morgens das Wetter, die Geburtstage und evtl. die Fahrzeit zur Arbeit ansagen lasse. Diese Sprachansage könnte ich dann mit dem Button starten.

Ihr könnt gerne berichte, ob und zu welchem Zweck ihr den Button einsetzt, damit andere Leser vielleicht noch ein paar Anregungen bekommen.

11 comments

  1. Bei Golem steht, wie der Dash Button aufgebaut ist. Die Batterie (AAA) soll hierbei für 75 Min Dauer-WLAN reichen.

    http://www.golem.de/news/reverse-engineering-mehr-spass-mit-amazons-dash-button-1701-125359.html

  2. Danke für diese tolle Anleitung.
    In dem Bericht von Golem wird über einen Hack berichtet, der ein Firmware Update verhindert. Ist dieser deiner Meinung nach notwendig oder reicht das Sperren des Internets ausreichend?

    Weil Du nach Ideen suchst. Ich habe mir übrigens einen Türöffner gebaut.
    Ein Gipo ist mit dem Kontakt der Gegensprechanlage verbunden.
    Der Dash Button führt ein Script aus , der die Tür öffnet.

    DashButton1:present {system („/opt/fhem/tuer.sh &“)}

  3. Also ich denke, dass man kein Firmware Update machen muss. Das Blocken des Internets reicht bei mir völlig aus.

  4. Hi, funktioniert leider nicht immer. Leider kann ich im Event-Monitor auch nicht sehen, warum. Auch Verbose 5 hat mir nichts verraten.
    Scheint am presence Modul zu liegen, warum einmal presence erkannt wird und dann wieder nicht.
    Hast Du ähnliche Erfahrung gemacht oder eine Erklärung dafür?

  5. Bisher hatte ich eigentlich keine größeren Ausfälle und der Button hat auf diese einfache Art bisher (fast) immer gut funktioniert. Wenn es nach dem ersten Klick nicht funktionierte, war die Verbindung meist beim zweiten Klick da. Welches Timeout hast du denn eingestellt? Vielleicht hilft es auch den Wert ping-count einmal hoch zu setzen.

  6. Danke für die gute Anleitung!

    Ich habe mir im Rahmen einer Aktion bei Amazon einige Dash-Buttons zum Preis von je 1,99 € besorgt und in FHEM eingebunden. Klappt absolut problemlos, und die Reichweite ist auch sehr gut.

    Ein Button hängt z.B. im Gartenpavillon und schaltet die Gartenbeleuchtung. Das funktioniert über eine Strecke von ca. 15m durch 2 Wände.

    Mit einem Cuttermesser habe ich das verklebte Gehäuse sehr einfach geöffnet. Die Batterie (AAA) kann dann problemlos getauscht werden.

  7. HAllo zusammen,

    ich habe die gleiche Erfahrung wie Tom gemacht. Meistens muss ich einige Male den Dash Button drücken, um das erwünschte Ergebnis zu bekommen.
    Ich steure eine Steckdose, an der eine Lampe angeschlossen ist, über:
    „DashButton01:present IF ([Steckdose_2] eq „on“) (set Steckdose_2 off) ELSE (set Steckdose_2 on)“.

    Vielleicht hat ja jemand von Euch in der Zwischenzeit eine „Lösung“ gefunden 🙂

    Euch allen noch einen schönen Tag!

    Gruß
    Jörg

  8. Danke für die Anleitung.

    Es funktioniert „sporadisch“.
    Wenn ich den fhem Log ansehen, dann kann ich erkennen, dass das Intervall der PRESENCE Abfrage zwischen 2 und 10 Sekunden schwankt.

    2017-11-18 13:13:21 PRESENCE DashButton01 absent
    2017-11-18 13:13:21 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:31 PRESENCE DashButton01 absent
    2017-11-18 13:13:31 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:33 PRESENCE DashButton01 absent
    2017-11-18 13:13:33 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:35 PRESENCE DashButton01 absent
    2017-11-18 13:13:35 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:45 PRESENCE DashButton01 absent
    2017-11-18 13:13:45 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:48 PRESENCE DashButton01 absent
    2017-11-18 13:13:48 PRESENCE DashButton01 presence: absent
    2017-11-18 13:13:50 PRESENCE DashButton01 absent

    Ist mein FHEM auf einem Raspi 2B vielleicht zu langsam?
    Oder gibt es noch einen Trick.

    Danke und Schöne Grüße

  9. Ich habe auch einen Raspi 2B. Auch bei mir habe ich immer wieder mal Probleme und muss den Taster mehrfach bedienen. Das Problem ist, dass der DashButton bzw. die entsprechende Umsetzung wohl nur eine „Notlösung“ ist.

  10. Warum wird in diesem Szenario ein ping pro Sekunde durchs LAN gejagt? Es würde reichen wenn man einen (kleinen) daemon hat der auf dem dhcp port horcht und bei broadcasts von bestimmten mac (denen der buttons) eine aktion auslöst.

  11. Das mag sicherlich richtig sein. Die dargestellte Lösung zeigt jedoch eine Möglichkeit, mit den Boardmitteln von FHEM auszukommen.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Why ask?

x

Check Also

Tibber Erfahrungen nach drei Monaten

Seit Mitte April nutzen wir die dynamischen Strompreise von Tibber*. Nach dem ersten vollen Monat ...