Sources & Inspiration:
- General Amazon Dash Hack
- Reddit Home Automation
- Start script on boot
- Using Python and Scapy to sniff for ARP on Pi
- Access google sheets in python using Gspread
- Adafruit Humidity Sensor logging to Google Spreadsheet
The Amazon Dash Button hack typically works by using a Python script that listens for the button's ARP Probe. Most tutorials just cover running the script and capturing a few button presses, but what if you don't want to leave your main desktop or laptop on 24/7 just to listen for button presses? If you want to use the button long-term, you'll want the listener script to auto-start and run constantly, and it'd also be a plus to use as little power as possible. That's why I prefer using the Raspberry Pi, which only uses 2-5 Watts.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install tcpdump python-scapy
Get Python Pip and install gspread and oauth2client:
sudo apt-get update
sudo apt-get install python-pip
sudo pip install gspread oauth2client
Customized so it can work on Raspberry Pi. Fixes the "IndexError: Layer [ARP] not found" error. Main edits are line 3, if pkt.haslayer(ARP):
and last line, count=0
so that it runs forever.
from scapy.all import *
def arp_display(pkt):
if pkt.haslayer(ARP):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP Probe
print "ARP Probe from: " + pkt[ARP].hwsrc
print sniff(prn=arp_display, filter="arp", store=0, count=0)
sudo python habits.py
- It's a bit harder, as you might imagine, but quite valuable in picking up some python and knowledge about how to fix code that is outdated or no longer supported, and adapting to API updates
- Google changed their oauth2client.client since the Adafruit docs were written about logging info to Google Sheets, so need to update cpde fpr that as well. (
from oauth2client.client import SignedJwtAssertionCredentials
tofrom oauth2client.service_account import ServiceAccountCredentials
Discussion and Updated docs - Will need to update Raspberry Pi to Python 2.7.3 to 2.7.9 to get rid of gspread InsecurePlatformWarning
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
- Source
- Had to reinstall a bunch of things after building Python 2.7.9 from source... python-pkg-resources
- Easier to just update Raspberry Pi Debian Wheezy to Jessie - It has Python 2.7.9 by default
sudo apt-get install --reinstall python-pkg-resources
gunzip Python-2.7.9.tgz
tar -xvf Python-2.7.9.tar
cd Python-2.7.9/
./configure
make
sudo make install
python -V # check version to see that it took
Source: Running A Python Script At Boot Using Cron
sudo apt-get update
sudo apt-get install cron
sudo crontab -e
Add this to the end of it (no need for sudo since it's already root's crontab): @reboot python /home/osmc/scripts/habits.py &
ps aux | grep /home/osmc/scripts/habits.py
Look for root 252 10.9 2.3 20260 18008 ? S 16:08 0:03 python /home/osmc/scripts/habits.py
If you need to kill the script/job, run sudo kill 252
You'll probably receive annoying notifications on your phone asking you to complete the setup process. To prevent these notifications, you'll need to block the Amazon Dash Button from reaching the internet by tweaking your router settings.