I am using Amazon-Dash buttons in my home automation project, got them from eBay for some euro. So I can switch-off all lights and heating from my bed, dim the lights in the living-room when watching TVs. And all for nearly no money. The buttons a made for 1000 clicks, so I thought I would be save.
But I didnt realize the “power of Amazon” and under-estimated the SW and HW that is build into this little button.
My plan – how to use the “Dash-Button” in Home Automation!
Amazon did everything to make the button not useable – except for ordering from Amazon 🙂
But smart people found a solution: You set-up the button once with the Amazon App (to let him connect to your WiFi network by providing SSID and PWD) .
When the button is pressed, it wakes up and needs to re-connect to the configured WiFi , this connection event can be monitored with a simple script to install on RPI HomeServer with Openhabian: https://github.com/Nekmo/amazon-dash
sudo apt-get remove python3-pip; sudo apt-get install python3-pip
sudo pip3 install amazon-dash
<code class="yml">sudo systemctl start amazon-dash
Finally you need to configure the buttons (name, mac-address) to be controlled in a config-file That’s it – you can access the button from OpenHABian like any Hue device.
Ohnn…not really…..its important you make it impossible for the button to “CALL HOME” to Amazon (e.g. with a FritzBox you disable internet for fixed IP address of the button).
The big disappointment!
One day, one button stopped working.It seems that the battery is empty. Ok, no problem – took me a while to open the case – and I replaced the battery.
Nope..not working...of course the button forgot anything about WiFi and PWD. So I wanted to use the Amazon-App to save this settings.
Nope..not working..Amazon has changed the App, no menue-item any-more for Dash-Buttons. So, how to teach the button about the WiFi?
While doing research I learned more about this button, and had an interesting evening, starting here: https://github.com/danimtb/dasshio/issues/93
My “Dash-Button” is a little WebServer with Access Point!
During Reset the button opens it own WiFi AP, so you can access him via: http://192.168.0.1 from a browser of the device in this local WiFi. It tells you e.g. the firmware version. The button also allows to set-up the WiFi SSID and PWD with http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASSWORD.
My “Dash-Button” can update its firmware and validates certificates!
Nope..not working.. this tiny buttons has a firmware, and when connected to the internet, it automatically updates the firmware (could you imagine, this little thing..). As of a recent version of firmware, that button wants to connect to an Amazon Server and is validating its certificate before he is saving the WiFi information. Amazon has disabled the server, because of the certificate validation you can not “fake” an Amazon server. No way to convince the button to save the SSID and PWD 🙁
So…is there a way to get an older version of firmware or maybe a firmware hack?
My “Dash-Button” has a microphone !
In case WiFi is not working, the Dash-Button can be configured using *sound*, so it has a little microphone and it will load its setting from the mobile via audio. Some really smart people found a memory leak in this interfaces and managed to use this leak to implement a new version of the firmware that would skip the certificate validation. I found this on github: https://github.com/znuh/dashbutton
So, you download the wave-file, reset-the button, play the wave-file and afterwards http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASSWORD will work again, because the button will not ask for the certificate.
Trying it, it first looked great – the button reacted on the sound, but:
Nope..not working.. I found out, that my button had a recent version of the firmware and that Amazon has fixed this bug in the new version.
My “Dash-Button” gets a *Packet of Death* from Amazon!
I also learned that (at the moment) any Dash-Button now would connect to the internet, it will receive a special command to completely disable itself by going into an endless-loop.
Conclusion – The POWER OF AMAZON
I spent a full evening with my Dash-Button, a bit disappointing that I couldn’t get it back to live, but a very interesting learning experience.
How much effort and brain-power Amazon put into this button with a functionality that is completely invisible to the user – who only things he buys a button. And that has even a microphone. And also how much power does Amazon have, the company just decided that the buttons should not be used any-more, updates the firmware, sends a packet of death and disables the certificate server. Now you have just a peace of dead electronic to through away.
Makes me thinking….how much sensors and computing power is in a mobile phone or an robotic vacuum cleaners. And how much power do we have about this devices – if we even cant control a simple button 🙂