[TriEmbed] Amazon Dash button simple detection

Pete Soper pete at soper.us
Sat Jul 23 15:02:12 CDT 2016


OK, after wading through some cosmically complex implementations of 
"detect the button push" and finding the trivial Python program of the 
seminal how-to involving baby diaper use only works in my house for the 
very first button press, I wondered if these things would respond to 
pings while they're winking and blinking. They do. Then I wondered if 
they remember to request the same IP address over and over. They do. So, 
in my house, where the DHCP environment is very stable for the main LAN, 
I can arrange for a completely reliable mapping of button to IP address. 
So I can just use the shell script below for a trivial means of 
detecting a button. The script puts no measurable load on the computer I 
tried it on. I'm arranging a proper scheme that keys off MAC addresses 
to be immune to DHCP behavior using arpalert, but in the meantime I 
thought the group might find this script amusing. (I'll publish the 
arpalert-based scheme when I've worked out some patches to that code to 
get a few issues out of my face and some utilities to automate the 
process a bit).

To use this little script I I set up a button as usual and either use 
the diaper-logger's Python script or simply look at the router's admin 
interface to see the IP address dispensed. I then put that in my 
/etc/hosts file with a name and use that in the script below. Making 
this script general (e.g. taking the IP and text/action as parameters) 
would of course be the next step with this approach. Anyway, this script 
might be of interest to folks that just want to play vs installing scapy 
or a hundred Javascript modules. I' about 99 3/4% sure this would work 
on Windows using Cygwin.

One interesting side effect of setting up a bunch of buttons is that my 
phone is simply filled with reminders about the fact that I never 
selected a product for each button. So I would add to the usual 
instructions out on the net "after setting up the last button, uninstall 
the Amazon app!"

#!/bin/sh

while [ /bin/true ] ; do

   ping -w 1 -c 1 gatorade1 >/dev/null 2>&1

   if [ $? -eq 0 ] ; then

     echo "You can get your own Gatorade" | espeak --stdin

     # make sure we don't double trigger

     sleep 10

   fi

done


-Pete




More information about the TriEmbed mailing list