Amazon Dash mit dem Raspberry Pi benutzen

Amazon Dash mit dem Raspberry Pi benutzen Titelbild

Es gibt mittlerweile in Deutschland den Amazon Dash Button. Dieser wird mit dem Wlan Netzewerk verbunden und auf Knopfdruck wird dann ein vordefiniertes Produkt per Amazon Prime bestellt. Wir haben uns gedacht, dass es sich dabei um eine coole Technologie handelt, die sich bestimmt auch anders einsetzten lässt.

Amazon Dash Button

Natürlich können wir auch einfach mit einem Taster die selben Eingaben messen, doch die Besonderheit liegt darin, dass der Dash Button nicht kabelgebunden ist und auch eine relative lange Akkulaufzeit hat. Zum Auslesen muss der Dash Button einfach nur im selben Wlan Netz sein wie der Raspberry Pi, den wir benutzen werden, um diese Signale auszulesen.

Alles, was der Dash Button macht, ist eine Verbindung ins Internet zu den Servern von Amazon aufzubauen, wenn er gedrückt wurde. Mit dem Raspberry Pi kontrollieren wir die WLAN Verbindungen, die es gerade im WLAN Netz gibt. Wenn wir dann noch die MAC-Adresse von unserem Dash Button wissen, können wir nachsehen, ob es einen Verbindungsaufbau von genau dieser MAC-Adresse gegeben hat. Bei der MAC-Adresse handelt es sich um eine Zahlen- und Zeichenkette, die jedes Netzwerkgerät wie der WLAN- oder Ethernet-Chip auf dem Raspberry Pi hat. Diese ist einzigartig, das heißt, jede Adresse wird nur einmal vergeben.

Dash Button einrichten

Zuerst musst du den Dash Button für dein WLAN Netzwerk einrichten. Dazu befolgst du einfach die beiliegende Anleitung. Wichtig ist:

  • Dass es uns nicht mehr möglich war, das WLAN Netzwerk zu ändern. Deswegen wähle unbedingt das richtige Netzwerk aus
  • Wenn du das Wlan Netzwerk eingerichtet hast, darfst du kein Produkt auswählen, sondern musst dort das Bearbeiten beenden. Ansonsten wird bei jedem Klicken das ausgewählte Produkt bestellt ;)

Raspberry Pi Einrichten

Alles, was du brauchst, ist ein laufender Raspberry Pi mit Raspbian. Python Grundlagen sind natürlich auch nicht verkehrt. Für das Auslesen des Netzwerkverkehrs müssen noch folgende Pakete installiert werden.

sudo apt-get install tcpdump
sudo apt-get install arp-scan
sudo pip3 install scapy-python3

MAC Adresse Herausfinden

Zuerst müssen wir die MAC-Adresse herausfinden, dafür benutzen wir folgendes Programm:

macFinden.py

from scapy.all import *

def arp_display(pkt):
        if pkt[ARP].op == 1:
                if pkt[ARP].hwsrc == '50:f5:da:73:2e:3c': #<- Eigene MAC Adresse eintragen
                    print("Gedrückt")
                print (pkt[ARP].hwsrc) #Auskommentiert lassen um die MAC Adressen zu finden

print (sniff(prn=arp_display, filter="arp", store=0, count=0))

Diese können wir mit dem folgenden Befehl ausführen.

sudo python3 macFinden.py 

Ergebnisse zum Herausfinden der MAC-Adresse vom Amazon Dash Button

Jetzt werden alle aktiven Geräte angezeigt, wenn diese mit dem Netzwerk kommunizieren. Um heraus zu finden, welche MAC-Adresse unser Amazon Dash Button hat, müssen wir diesen einfach nur drücken und dann darauf warten, welche MAC-Adresse im Terminal ausgegeben wird.

Wenn die LED im Dash Button nur rot blinkt, gibt es Probleme beim Einrichten des Dash Button. Wiederhole am besten noch einmal die beiliegende Anleitung.

Wenn du die MAC-Adresse in die zweite If-Bedingung einbaust, sollte jetzt im Terminal "gedrückt" ausgegeben werden, sobald du den Button aktiviert hast. Es kann eine Verzögerung von einigen Sekunden geben, das liegt dann aber an dem Dash Button.

Weitere Projekte

Anstatt dem print() Befehl können wir natürlich auch eine Funktion ausführen. Zusammen mit einer LED und dem Shelve Modul haben wir so einfach eine LED gebaut, die an und wieder ausgeschaltet wird. Das lässt sich natürlich auch mit der richtigen Hardware soweit erweitern, dass du damit auch deine ganz normale Lampe steuern kannst, aber wieder zurück zur LED.

Blaue LED am Raspberry Pi GPIO17 Anschlüsse Pi Anschlüsse Breadboard
GPIO 17 Langes Bein der LED
GND + 220Ω Widerstand Kurzes Bein der LED

dash-led.py

import RPi.GPIO as gpio
import time
from scapy.all import *
import shelve

lampeStatus = regal = shelve.open('lampe.txt')
gpio.setmode(gpio.BCM)
gpio.setup(17, gpio.OUT)

button = "False"

def arp_display(pkt):
        if pkt[ARP].op == 1:
                print("0.0.0.0.")
                if pkt[ARP].hwsrc == '50:f5:da:73:2e:3c': #Your button MAC50:f5:da:73:2e:3c
                    lampe()
                print (pkt[ARP].hwsrc) #unhash for finding MAC of your button

def lampe():
    print("PRESSED")
    if('led17' in regal):
        if(lampeStatus['led17'] == 1):
            print("AUS")
            neuerStatus = 0
            gpio.output(17, gpio.LOW)
        else:
            print("AN")
            neuerStatus = 1
            gpio.output(17, gpio.HIGH)
        lampeStatus['led17'] = neuerStatus
    else:
        lampeStatus['led17'] = 1
        gpio.output(17, gpio.HIGH)

print (sniff(prn=arp_display, filter="arp", store=0, count=0))

Wenn du jetzt den Dash Button drückst, fängt die LED an zu leuchten. Wenn du das Gleiche nochmal machst, hört die LED auf zu leuchten. Zwischen den beiden mal Drücken muss in der Regel eine Pause liegen, da die LED rot anfängt zu leuchten, wenn kein Produkt mit dem Amazon Dash Button verbunden ist.

Die Grundlagen sind getan! Wir haben noch ein weiteres Projekt für dich, das Vorlesen aus einem Blog, wenn der Dash Button gedrückt wurde. Ansonsten überlassen wir alle Möglichkeiten deiner Fantasie!

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!