Start / Embedded Systems / Amazon Dash Buttons: Erkenntnisse aus dem IoT

Amazon Dash Buttons: Erkenntnisse aus dem IoT

Ich nutze Amazon-Dash-Buttons in meinem Hausautomationsprojekt, hab sie bei eBay für ein paar Euro ergattert. So kann ich alle Lichter und die Heizung von meinem Bett aus ausschalten und die Lichter im Wohnzimmer dimmen, wenn ich fernsehe. Und das alles fast umsonst. Die Buttons sind für 1000 Klicks ausgelegt, also dachte ich, ich wäre auf der sicheren Seite.

Aber ich habe die „Macht von Amazon“ unterschätzt und die Software und Hardware unterschätzt, die in diesem kleinen Knopf steckt.

Mein Plan – wie man den „Dash-Button“ in der Hausautomation nutzt!

Amazon hat alles getan, um den Knopf unbrauchbar zu machen – außer für Bestellungen bei Amazon 🙂

Aber clevere Leute haben eine Lösung gefunden: Du richtest den Knopf einmalig mit der Amazon-App ein (damit er sich über SSID und Passwort mit deinem WLAN-Netzwerk verbinden kann).

Wenn der Button gedrückt wird, wacht er auf und muss sich erneut mit dem konfigurierten WLAN verbinden; dieses Verbindungsereignis lässt sich mit einem einfachen Skript überwachen, das auf dem RPI HomeServer mit OpenHABian installiert wird: https://github.com/Nekmo/amazon-dash

sudo apt-get remove python3-pip; sudo apt-get install python3-pip
sudo pip3 install amazon-dash
<code class="yml">sudo systemctl start amazon-dash 

Schließlich musst du die zu steuernden Buttons (Name, MAC-Adresse) in einer Konfigurationsdatei einrichten. Das war’s – du kannst über OpenHABian auf den Button zugreifen wie auf jedes Hue-Gerät.

Oh nein… nicht ganz… es ist wichtig, dass du es unmöglich machst, dass der Knopf bei Amazon „CALL HOME“ auslöst (z. B. indem du bei einer FritzBox das Internet für die feste IP-Adresse des Knopfes deaktivierst).

Die große Enttäuschung!

Eines Tages funktionierte ein Button nicht mehr. Es scheint, als sei die Batterie leer. Ok, kein Problem – ich habe eine Weile gebraucht, um das Gehäuse zu öffnen – und habe die Batterie ausgetauscht.

Nö… funktioniert nicht... natürlich hat der Knopf alles über WLAN und Passwort vergessen. Also wollte ich die Amazon-App nutzen, um diese Einstellungen zu speichern.

Nö… funktioniert nicht… Amazon hat die App geändert, es gibt keinen Menüpunkt mehr für Dash-Buttons. Also, wie bringt man dem Knopf das WLAN bei?

Bei meinen Recherchen habe ich mehr über diesen Knopf erfahren und hatte einen interessanten Abend, angefangen hier: https://github.com/danimtb/dasshio/issues/93

Mein „Dash-Button“ ist ein kleiner Webserver mit Access Point!

Beim Zurücksetzen öffnet der Button seinen eigenen WLAN-AP, sodass du über http://192.168.0.1 von einem Browser des Geräts in diesem lokalen WLAN darauf zugreifen kannst. Dort erfährst du z. B. die Firmware-Version. Über den Button kannst du auch die WLAN-SSID und das Passwort unter http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASSWORD einrichten.

Mein „Dash-Button“ kann seine Firmware aktualisieren und Zertifikate validieren!

Nö… funktioniert nicht… dieser winzige Knopf hat eine Firmware, und wenn er mit dem Internet verbunden ist, aktualisiert er automatisch die Firmware (kannst du dir das vorstellen, dieses kleine Ding…). Seit einer aktuellen Firmware-Version will sich der Knopf mit einem Amazon-Server verbinden und validiert dessen Zertifikat, bevor er die WLAN-Daten speichert. Amazon hat den Server deaktiviert, denn aufgrund der Zertifikatsüberprüfung kann man keinen Amazon-Server „fälschen“. Es gibt keine Möglichkeit, den Button davon zu überzeugen, die SSID und das Passwort zu speichern 🙁

Also… gibt es eine Möglichkeit, eine ältere Firmware-Version zu bekommen oder vielleicht einen Firmware-Hack?

Mein „Dash-Button“ hat ein Mikrofon!

Falls das WLAN nicht funktioniert, kann der Dash-Button über *Ton* konfiguriert werden – er hat also ein kleines Mikrofon und lädt seine Einstellungen per Audio vom Handy. Einige wirklich clevere Leute haben einen Speicherleck in dieser Schnittstelle entdeckt und es geschafft, dieses Leck zu nutzen, um eine neue Firmware-Version zu implementieren, die die Zertifikatsüberprüfung umgeht. Ich habe das hier auf GitHub gefunden: https://github.com/znuh/dashbutton

Also lädst du die Wave-Datei herunter, setzt den Button zurück, spielst die Wave-Datei ab und danach funktioniert http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASSWORD wieder, weil der Button nicht nach dem Zertifikat fragt.

Als ich es ausprobierte, sah es zunächst super aus – der Button reagierte auf den Ton, aber:

Nö… funktioniert nicht… Ich habe herausgefunden, dass mein Button eine aktuelle Firmware-Version hatte und dass Amazon diesen Fehler in der neuen Version behoben hat.

Mein „Dash-Button“ bekommt ein *Packet of Death* von Amazon!

Ich habe außerdem erfahren, dass (derzeit) jeder Dash-Button, der sich mit dem Internet verbindet, einen speziellen Befehl erhält, sich selbst komplett zu deaktivieren, indem er in eine Endlosschleife gerät.

Fazit – Die Macht von Amazon

Ich habe einen ganzen Abend mit meinem Dash-Button verbracht, ein bisschen enttäuscht, dass ich ihn nicht wieder zum Laufen bringen konnte, aber es war eine sehr interessante Lernerfahrung.

Wie viel Aufwand und Denkarbeit hat Amazon in diesen Knopf gesteckt, dessen Funktionalität für den Nutzer völlig unsichtbar ist – der denkt nur, er kaufe einen Knopf. Und der sogar ein Mikrofon hat. Und wie viel Macht hat Amazon eigentlich: Das Unternehmen hat einfach beschlossen, dass die Knöpfe nicht mehr verwendet werden sollen, aktualisiert die Firmware, sendet ein „Paket des Todes“ und deaktiviert den Zertifikatsserver. Jetzt hast du nur noch ein Stück tote Elektronik, das du wegwerfen kannst.

 

Das bringt mich zum Nachdenken … wie viele Sensoren und wie viel Rechenleistung stecken in einem Handy oder einem Staubsaugerroboter? Und wie viel Macht haben wir über diese Geräte – wenn wir nicht einmal einen einfachen Knopf kontrollieren können 🙂

Markiert: