HomeRaspberry PiFree wireless doorbell (Amazon Dash button hack)

Free wireless doorbell (Amazon Dash button hack)

The most terrifying situation I can imagine* is missing a parcel

I have been a victim to the ‘Sorry, we have missed you…‘ note way too many times. While this is all good when I’m genuinely not home, it bothers the heck out of me, that I can’t move to my back garden and enjoy the nice weather until parcel arrives. Free wireless doorbell project was born to address this issue. Amazon Dash can deliver a notification to your PC, mobile, tablet, or whatever device you wish. This way you will never miss another parcel again, while frying your bacon in the sun, or getting your kill-streaks in online multiplayer.
This award winning project will help you to set up your own free wireless doorbell.

DIY vs buy it yourself.

While you could buy simple wireless doorbell in a shop and install this in minutes, I took a different approach. The advantages of DIY approach are:

  • you can hook up an unlimited number of buttons
  • you don’t need to move the notification device around
  • notification can be delivered even if you are outside of your Wi-Fi
  • customise notification sounds, declare quiet times
  • visual notifications on PC, for the times when you have your headset on
  • you will learn new skills and be like: ‘look at me! I made this!‘ at any house party you host!

It’s not only a doorbell, you could use this switch to activate anything you have connected to the Wi-Fi. Response time is solid (2-3 sec, Raspberry Pi must be connected via LAN) and you can re-trigger the button every 6-8 sec. You will also see a visual (LED light) feedback on your button. Personally, I own 2 buttons. One is located in the kitchen and used to call me when I’m in my office (due to distance and elevation, I can’t hear anyone calling me). The other one is placed as required on the front door, so the parcel guy could announce his arrival.

Amazon Dash Button

amazon dash

Wireless buttons are expensive and while you can get one easily on flick.io this would cost you over $30! Not the price I would like to pay when similar off the shelf solutions are available already. Amazon Dash however, comes free*. Introduced by Amazon, to get your shopping done quicker, the company decided to offset the cost of the device with purchases. You can get one if you are in the USA for $4.99 and get the price of the button refunded to you with your 1st purchase. Amazon Dash UK is here. Look at this post if you are trying to setup new buttons.

Free Wireless Doorbell

Free wireless doorbell requires few things to function. In this write up I will show you how to hook it up to a PC and mobile, and you can take it from there. We will need:

  • Tasker app
  • AutoRemote plug-in
  • Raspberry Pi
  • Amazon Dash
  • EventGhost (PC)
  • AutoRemote extension for Chrome

If you haven’t figured out how to connect the RPI and AutoRemote – see this article. To make the free wireless button work we will need to intercept the moment the button ‘logs in’ to the WiFi and respond to this action by issuing the notification to the desired device.

Amazon Dash setup:

amazon dash
  1. Press the button for 5 sec to enter the device into a WIFI broadcast mode.
  2. Open your mobile (or any wifi device) and look for the Amazon Configure Me
  3. Once connected to the device open a web browser and navigate to 192.168.0.1
  4. Select your network and enter your password
  5. Your free wireless doorbell button now is ready to rock

New Buttons should be configured though an Amazon app. Just cancel the set up before product selection. Disable the Amazon Dash notification from the app as well.

Raspberry Pi setup:

Make sure the Raspberry Pi is connected via Ethernet. WiFi is not reliable enough and Raspberry Pi can miss the ARP probes.

To detect the button, and look up it’s MAC address we will need following libraries to be installed on your RPI. The script is written for python3. Few modifications will be needed to the script so you could use it. You will need to get your API key for AR – look up this page for info if you haven’t seen the RPI to AR video above. The code will populate the results with MAC addresses of the button when pressed. Copy that address and fill in the default placeholders in the script.

Raspberry PI - python3 script
from scapy.all import *
import urllib.request

url_pc = 'https://autoremotejoaomgcd.appspot.com/sendmessage?key=YOUR_KEY&message='
url_mobile = 'https://autoremotejoaomgcd.appspot.com/sendmessage?key=YOUR_KEY&message='

def arp_display(pkt):
	if pkt[ARP].op == 1:		
		if pkt[ARP].hwsrc == 'DASH MAC': #Your button MAC - parcel
			button = 'dash=:=DASH NAME'
			messagePc = url_pc + button
			messageMobile = url_mobile + button				
		#sending message to pc/mobile
			response = urllib.request.urlopen(messagePc).read()
			response = urllib.request.urlopen(messageMobile).read()
		#Other button mac if you have more than one, OTHERWISE delete up to print
		elif pkt[ARP].hwsrc == 'DASH MAC': # other amazon dash
			button = 'dash=:=DASH NAME'
			messagePc = url_pc + button
			messageMobile = url_mobile + button
		#sending message to pc/mobile
			response = urllib.request.urlopen(messagePc).read()
			response = urllib.request.urlopen(messageMobile).read()			
	#print ("Call from: " ) #unhash for testing
	#print (pkt[ARP].hwsrc) #unhash for finding MAC of your button
print(sniff(prn=arp_display, filter="arp", store=0, count=0))
doorbell script

Android setup:

As usual, I’m going to use Tasker + AutoRemote combo to communicate with my mobile, AR will be also used for PC communication. We will need a simple profile that will act on received notification from Tasker.

PROFILE - Received button click
Profile: Received Button Click 
Event: AutoRemote [ Configuration:dash ]
Enter: Button Pressed 
     A1: Notify [ Title:Your Button %arcomm Is Pressed Text:Swipe to dismiss 
                  Icon:hd_aaa_ext_bulb Number:0 Permanent:Off Priority:5 ]

PC setup:

In a similar manner, once notification is received you can use EventGhost. This is an automation/macro tool that you can use with AutoRemote.  You will need a plugin installed for it. Here is the link how to get the EG ready. Once it is connected, you can send a sample message to your PC, and intercept this action. We will also need an extension for Chrome to enable this. You will find the extension here.

Event ghost

Follow the instructions to set up the PC as AutoRemote device from this link. Chrome by default will show you notifications coming to the PC, but if you wish to get them up while use EvenGhost. Here is a sample how you could display the notification as an overlay on the screen for few seconds.

Video tutorial:

I have a video of the entire process explained here for you:

Tips:

Your Raspberry is ready to intercept the button presses. It allows for one press every 6-10 sec, and multiple buttons can be pressed as well. As long as script is running – you can receive the notifications (consider running it at start)

Script should display below warning when operating: WARNING: No route found for IPv6 destination :: (no default route?)

You can peel off the default label using a sharp tool and glue it another way around or use it as a stencil to generate your own. (see picture)

sudo nano /etc/rc.local

If you want to run this script at startup use rc.local method, put sleep 10 before the line with your script to allow the execution. To make the file executable:

sudo chmod +x /path/to/file/file.py

Project Download

Download project files here. Bear in mind that Patreon supporters have early access to project files and videos.

PayPal

Nothing says "Thank you" better than keeping my coffee jar topped up!

Patreon

Support me on Patreon and get an early access to tutorial files and videos.

image/svg+xml

Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU

M5Paper

Programable, ESP32 based awesome dev platform with 4.7 e-ink display by M5Stack

More HATs

client-image
client-image

Argon One M.2

Enclose Raspberry Pi 4 inside this great case with custom I/O, cooling and GPIO and M.2 SSD support

More cases on

client-image
client-image

Best Raspberry Pi Projects

How to use Raspberry PI as WOL (wake on lan) server

0
While you could wake up your PC from a mobile directly, having a dedicated server capable of doing so is the best solution. The reason is simple. You can hook up as many devices as you wish with a single endpoint. This is why Raspberry Pi is perfect for this.

Slow Internet Warning

0
From time to time my Internet grinds to a stop. Since Raspberry Pi 4 comes with a 1Gbps Ethernet, I decided to take advantage of it and create a reporting system in NodeRED that will monitor and report when the ISP is not keeping the contractual agreements. Works with Alexa, Google Home, Android and Windows 10.

How fast Raspberry Pi NAS is?

0
Let's see how fast Raspberry Pi NAS really is?

Argon18: Argon ONE SSD modification

0
Argon One case just got better - now you can boot it from USB without ruining the design thanks to Argon 18: Argon One SSD modification

HOW TO...

How to boot Raspberry Pi 5 from NVMe M.2 SSD

0
This is how you can boot your Raspberry PI 5 from NVMe in 10 min! Check out these easy instructions

It took me 2 months to boot CM4 from NVMe

0
Complete beginners guide to Compute Module 4 boot from NVMe.

Raspberry Pi Zero 2 W vs other Zero boards

0
It's time to test the Raspberry Pi Zero 2 W against other Raspberry Pi boards from Zero series: power, WiFi, temperature and core performance

C/C++ and MicroPython SDK for Raspberry Pi Pico on Windows

0
A guide to SDK toolchain for Raspberry Pi Pico and C/C++ , Micropython on Windows.

A comprehensive guide to Grafana & InfluxDB

0
How to use Grafana and InfluxDB on Raspberry Pi for IoT sensors in home automation