After reading a neat little project by Nick Sypteras where he hacked a Staples "Easy" button to send him an alert when someone was at his cube entrance (Blog post is here), I was inspired.
I borrowed Nick's Micropython code from his Github (link is in his article) and modified it.
My goal was to create a quick notification tool for my team. I work in a fast-paced job where I will often need to leave my desk for meetings or for other urgent reasons, leaving my remote team members talking to an absent person in Slack. A person who often needs to approve their current actions.
Most of my meetings require around an hour of time, so my focus was on that duration. As such, I modified Nick's code to have three buttons:
I borrowed Nick's Micropython code from his Github (link is in his article) and modified it.
My goal was to create a quick notification tool for my team. I work in a fast-paced job where I will often need to leave my desk for meetings or for other urgent reasons, leaving my remote team members talking to an absent person in Slack. A person who often needs to approve their current actions.
Most of my meetings require around an hour of time, so my focus was on that duration. As such, I modified Nick's code to have three buttons:
- Green - I am back from wherever I've been.
- Yellow - I will be away for up to an hour.
- Red - I will be away for over an hour.
I like traffic light systems. My thinking was that green is a "go" for questions/comms; yellow is a "slow down"; red is a "stop" for now.
Creating a webhook is easy enough in Slack (assuming you have access to the tools) and the buttons are simple momentary buttons, following Nick's recommendation to pull them to ground on button press. This simplifies the wiring.
The breadboards I generally use are short and have sticky foam padding on the back, allowing me to attach it to the wall on the way out of my office. The supplies comprise:
- NodeMCU development board
- Three momentary buttons (mine came with removable colored caps)
- Breadboard
- 20-gauge wire
- Wire cutter and stripper
- Power source (in this case a standard mobile phone charger and USB cable)
![]() |
Ugly cabling is optional |
![]() |
The beautiful traffic light |
Some notes about my setup that differ from Nick's. I am using a NodeMCU development board. The Feather Huzzah is very similar in spec, including the WiFi chip at the core, but I can't guarantee they are the same. NodeMCU pins work as labelled when programming with the Arduino IDE, but when using the Machine module of Micropython, they do not. Machine needs the GPIO labelling - if you take a look at my code in Github, you'll see that the numbering of my pins is Red = 0, Yellow = 4, Green = 5. That's the three neighboring pins in the pictures. If you Google image search "NodeMCU GPIO pins", you'll get a nice collection of pin mappings that will help.
Another note is that Ampy, often recommended for loading to Micropython, seems to hate me. I've never been able to get it to work. I use mpfshell which is a neat, simple python-based command line tool that just works - simple commands like open COMn and put file.py allow for easy upload of python files. I use putty for any command line checks of the repl, but apparently mpfshell can also do that task.
The end result works brilliantly. My team are happy that they know when I'm unable to respond; I'm happy that I got to use my hobby at work.
A normal end goal for something like this would be to go to protoboard, but to be honest I don't know why I would. I think I'll tidy up the wiring, but otherwise the advantages of the adhesive back and ability to modify win out.
Github link for my version of Nick's code: Micropython three button slack alerter
Comments
Post a Comment