<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    To fill in a few blanks, the scapy-dependent Dash detector involving
    diaper logging that a ton of other implementations copy (including
    the one Rod pointed to) is <a
href="https://medium.com/@edwardbenson/how-i-hacked-amazon-s-5-wifi-button-to-track-baby-data-794214b0bdd8#.1opwy0u3c">here</a>.
    For whatever reason (router seems the only suspect) that code does
    not work for me except for the very first time a Dash is used, at
    the point the router sees it's MAC address and gives it an IP via
    DHCP. <br>
    <br>
    Rather than figure out why it doesn't work for me or try a similar
    implementation like the one Rod pointed to,  I'm using <a
      href="http://arpalert.org">arpalert</a>, a relatively simple
    program that detects ARP traffic and executes an arbitrary,
    configured program with the MAC address as an argument (example
    shell script below). It has no dependencies beyond standard network
    libraries and is just exactly what I'm after, and maybe others would
    find it useful too. But it has to be built from source and there are
    a few wrinkles not covered by the English readme.  But for an
    expedient solution I contend the previous shell script I shared is
    as easy as an implementation is likely to get. :-)<br>
    <br>
    Here's an example program that arpalert can invoke when a Dash is
    pushed. The "button" variable assignment could be replaced by any
    arbitrary button-specific action, for instance Python code that does
    the whatsit transaction on the IFTTT Maker Channel, Raspberry Pi
    code to pull a GPIO line, etc. While I'm testing it the script just
    logs which Dash was pushed.<br>
    <pre>#!/bin/sh</pre>
    <pre>case $1 in</pre>
    <pre> (f0:27:2d:d8:26:ad) button='gatorade1';break;;</pre>
    <pre> (44:65:0d:14:1e:fb) button='playdoh2';break;;</pre>
    <pre> (f0:27:2d:bc:be:65) button='chlorox2';break;;</pre>
    <pre> (f0:27:2d:f9:36:d5) button='gatorade2';break;;</pre>
    <pre> (a0:02:dc:22:57:a7) button='chlorox1';break;;</pre>
    <pre> (f0:4f:7c:e8:ec:60) button='solidgold1';break;;</pre>
    <pre> (44:65:0d:21:d8:45) button='playdoh1';break;;</pre>
    <pre> (74:c2:46:9a:13:bc) button='solidgold2';break;;</pre>
    <pre>esac</pre>
    <pre>date >>/tmp/log</pre>
    <pre>echo $button >>/tmp/log</pre>
    <br>
    -Pete<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 07/23/2016 04:53 PM, Pete Soper via
      TriEmbed wrote:<br>
    </div>
    <blockquote cite="mid:5793D94D.2070308@soper.us" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      In the past couple days I've looked at a lot of different
      implementations. I'm not willing to spend the time to determine
      whether that one suffers the same issue that keeps the other
      scapy-dependent implementation from working here. IMO <a
        moz-do-not-send="true"
        href="http://www.arpalert.org/arpalert.html">arpalert</a> is an
      excellent tool for this application.<br>
      <br>
      -Pete<br>
      <br>
      <div class="moz-cite-prefix">On 07/23/2016 04:42 PM, Rodney
        Radford wrote:<br>
      </div>
      <blockquote
cite="mid:CA+kfaxHHMUHbLdXR=ewk0QnNN6b9wagPW0atsGKTc-FsqECC9g@mail.gmail.com"
        type="cite">
        <div dir="ltr">Pete, 
          <div><br>
          </div>
          <div>Have you seen this method that simply relies on the ARP
            requests by MAC address? Similar to where you are heading,
            but this is already complete and appears ready to us..<br>
            <br>
            <a moz-do-not-send="true"
href="https://familab.org/2016/02/hacking-the-amazon-dash-button-to-make-a-simple-cheap-iot-place-anywhere-networked-button-3/">https://familab.org/2016/02/hacking-the-amazon-dash-button-to-make-a-simple-cheap-iot-place-anywhere-networked-button-3/</a><br>
          </div>
          <div><br>
          </div>
        </div>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Sat, Jul 23, 2016 at 4:02 PM, Pete
            Soper via TriEmbed <span dir="ltr"><<a
                moz-do-not-send="true" class="moz-txt-link-abbreviated"
                href="mailto:triembed@triembed.org"><a class="moz-txt-link-abbreviated" href="mailto:triembed@triembed.org">triembed@triembed.org</a></a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">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).<br>
              <br>
              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.<br>
              <br>
              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!"<br>
              <br>
              #!/bin/sh<br>
              <br>
              while [ /bin/true ] ; do<br>
              <br>
                ping -w 1 -c 1 gatorade1 >/dev/null 2>&1<br>
              <br>
                if [ $? -eq 0 ] ; then<br>
              <br>
                  echo "You can get your own Gatorade" | espeak --stdin<br>
              <br>
                  # make sure we don't double trigger<br>
              <br>
                  sleep 10<br>
              <br>
                fi<br>
              <br>
              done<br>
              <br>
              <br>
              -Pete<br>
              <br>
              _______________________________________________<br>
              Triangle, NC Embedded Computing mailing list<br>
              <a moz-do-not-send="true"
                href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
              <a moz-do-not-send="true"
                href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org"
                rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
              TriEmbed web site: <a moz-do-not-send="true"
                href="http://TriEmbed.org" rel="noreferrer"
                target="_blank">http://TriEmbed.org</a><br>
            </blockquote>
          </div>
          <br>
        </div>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Triangle, NC Embedded Computing mailing list
<a class="moz-txt-link-abbreviated" href="mailto:TriEmbed@triembed.org">TriEmbed@triembed.org</a>
<a class="moz-txt-link-freetext" href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a>
TriEmbed web site: <a class="moz-txt-link-freetext" href="http://TriEmbed.org">http://TriEmbed.org</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>