Amazon Dash is in the UK


(Daniel Hollands) #1

I’ve known about Dash for a while, and have seen a few folks use them for their own IoT purposes - but up until now it’s been restricted to the US…

… It appears that restriction has now been lifted, and Dash buttons are now available from amazon.co.uk.

I can see myself getting a couple of these - for washing machine tablets initially - before I get bored of it and try to do something funky with IoT - what about you?


SSL Issues with birmingham.io in Chrome?
(Steve Jalim) #2

But, alas the developer button is not :frowning:


(Steve Jalim) #3

(Daniel Hollands) #4

I got a (Dolce Gusto) Dash button yesterday (I needed to top off my Prime Now order to the £20 threshold).

I’ve not spent a lot of time on it, but I have just completed a proof of concept button press by having it post a tweet:

This was accomplished via the dasher package, which in turn sent a signal to IFTTT, who turned it into a tweet.

I might take a look at node-dash-button (and maybe a few of the other packages), and see what I can do about running it on the raspberry pi - to what end? I have no idea.


(Daveyon Mayne) #5

Have you seen the prices on ebay uk? Damn!


(Daveyon Mayne) #6

A good read on how the button works, for programmers.

http://www.fhilitski.com/2016/08/getting-started-with-amazon-iot-button-part-i/


(Daniel Hollands) #7

Accurate:

http://invisiblebread.com/2016/10/iot/


(Andy Wootton) #8

Do? It’s a physical bit-flip. It’s conceptual.


(Daniel Hollands) #9

It seems that, for today only, the dash buttons are going for 99p each. Even better, you still get the full £4.99 discount off your first purchase.

I’ve ordered 10 :grimacing:


(Daniel Hollands) #10

Right, so I’ve finally gotten around to deciding what I want to do with the dash buttons, I’m going to use them to keep track of various aspects of my life:

  • Having a coffee? Press the coffee button.
  • Having a bath? Press the bath button.
  • Doing some exercise? Press the exercise button.

All these presses will be sent to Initial State (or Airtable, or maybe just a google spreadsheet), for further collation/reporting later.

OK, so that’s probably very silly, but it’s a start, and I can see further info being included in the report as time goes on.

So, I set-up Raspberry Pi 1, installed Node 4 (which in itself was a ballache), and installed dasher. I used the find_button script to discover the mac address of the button (which itself involves connecting to the button with your phone via Bluetooth, giving it your wifi password, but stopping before choosing the product to attach it to), then configured dasher on my pi it to send the relevant data to initial state.

So far so good, the button was working, the data was being sent to the server, and everyone was happy - apart from my phone, which popped up with a notification asking me to choose a product every time I pressed the button.

No worries, I thought, now the button was configured I could simply remove it from my account, which I did, but that stopped it from working. This was because the button was still talking with amazon’s server on each press, which I guess must command the button to factory reset.

This is an issue for me. I don’t want a notification on my phone each time I press the button, but that’s the only way I can make it work using the dasher approach.

There is an alternative which might work better but is a lot more faff to set-up, that of One Second Dash. This is different in that you give the dash a fake network SSID to connect to, which the pi detects by placing the WiFi interface in monitor mode and listening for probe requests for that SSID (via tcpdump). This may be a better approach, because at no point does the button every actually speak with amazon, so there’s no phone notifications or factory reset (at least in theory).

The other approach is to use other things as triggers:

  • I could get an IoT button from amazon, but they’re $20.
  • I could use flic, but they’re £32 each, and require the phone to be in bluetooth range.
  • I could use IFTTT to register presses from my phone and/or watch, but that’s boring.

Anyway, I’ll try the one second dash thing, and will report back.


(Andy Wootton) #11

You could get some of those £2 white-boards and make 5-bar gates then use AI to count them.


(Andy Wootton) #12

Afterthought : Do Androids dream of electric sheep?


(Steve Jalim) #13

https://www.buttonjoy.com/


(Daniel Hollands) #14

I don’t have too much to show for it right now, but at lunch today I whipped up a quick script to control my Sonos speakers from one of my Dash buttons.

This is a combination of node-dash-button (to listen for the button press) and SoCo (to control the speakers).

I’m sure the code is horrible, and there must be a ton of improvements I can make to it, but it works, and I’m super proud.


(Daniel Hollands) #15

More for self reference than anything else, but I found this today:

At first I was put off by the idea of it being Bluetooth (for much the same reason I’m not a huge fan of flic, and having to keep my phone within range) but thinking about it logically (ignoring the cost factor), I’m using a hacky method of registering the button clicks on a Raspberry Pi, so maybe this will let me cut out the hacky middle man, and just have the Pi hub listen for the clicks directly in Bluetooth.

(I have no idea if what I just said makes sense, but I think that I, at least, understand what I’m going on about)


(Daniel Hollands) #16

So, my code for this is terrible, but I’ve just added three new buttons to my automate system.

Each one is designed to update my status on Slack for the office - one to let them know I’m sat on my sofa (so don’t bother using the phone, just use Slack), one telling them I’m at my desk (so phone away), and one telling them I’m at lunch.

The code is WET as hell (Write Everything Twice), and needs a lot of DRYing up, but functions as a proof of concept, and as an intro to coding with node and python.

I think my next enhancement will be to make it use MQTT in some capacity, maybe with the dash button sensor publishing a relevant event each time it’s pressed, and letting the subscribed systems act accordingly.


(Daniel Hollands) #17

Seeing as I found myself within the rare opportunity of having some weekend time to myself, I decided I’d take another look at the dash buttons.

Inspired by an article in the most recent edition of The MagPi, I decided I would try and drop the requirement of node from the project, and go for a python only approach. The article suggested using scapy, which I had some amount of success with, but didn’t like the lack of official support for python3, and figured there must be a better way.

Turns out there was a better way, or at least a more abstract way, using the amazon-dash package. This is so abstract, all you need do is configure a .yml file with the mac addresses of your buttons, along with the commands you want to be run when they’re pressed, and the script (which supplies it’s own binary to run) does the rest.

Alas, I’ve run out of time, but when I next get the opportunity, I plan on taking this to the next level and adding some MQTT into the mix.