Finished Product:

Final Product

What you will need:

  • ESP8266 MicroController
  • Raspberry Pi (I have a 3B+)
  • TP-Link Smart Plug(s)

What?

I have seen “deaf doorbells” before when visiting some of our deaf friends. Instead of just playing a chime, they also blink a light or two in the house to give them a visual cue that they need to answer the door. This would be a fun challenge!

How?

This is where the fun begins!

We live in a relatively old apartment on BYU campus, so there’s no way I’m tapping into the wiring of our place. Conveniently, we received two TP-Link HS100 Smart Plugs for Christmas. I found an open source TP-Link Python library that made blinking two lights connected to the smart plugs pretty easy.

Next, I had to figure out what to use as the doorbell. An ESP8266 works great, because it can be programmed like an Arduino, is small, and has built-in WiFi. I had it so the FLASH button will trigger the blinking.

This was where I came to a wall. If the light blinking code has to be in Python, and the ESP8266 is programmed in C++, how am I going to get those to work together? I looked into running Python on Arduino, but ultimately came to the conclusion that it’s sketchy at best. Then, I remembered that I have a Raspberry Pi connected to my network that acts as my DNS gateway and blocks ads using PiHole (I would highly recommend setting one up!). Huzzah! So, I programmed a simple Flask HTTP server to run on the Pi on startup. This server simply waits for a GET request from the ESP8266, and then runs the blinking lights code.

The last step was housing the ESP8266 in something cool, so I 3D printed a case for it on campus using this file!

Block Diagram: Block Diagram

Dependencies

TP-Link Smart Plug Python Library

Flask (for the Pi server)

ESP8266 Arduino Libraries